diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88e4c56f..08ed523d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Verify pinned specification - run: grep -q "2377b99c6b6d1654e2cb976ee1b7e07b75c77e1a" SPEC_BASELINE.md + run: grep -q "d6027758fa8e46ed2073cbb3b6face8ee19847ef" SPEC_BASELINE.md - name: Test deterministic core run: swift test --skip CameraPlacementTests --skip CameraFairnessTests --parallel --num-workers 1 - name: Test camera placement @@ -38,7 +38,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Verify pinned specification - run: grep -q "2377b99c6b6d1654e2cb976ee1b7e07b75c77e1a" SPEC_BASELINE.md + run: grep -q "d6027758fa8e46ed2073cbb3b6face8ee19847ef" SPEC_BASELINE.md - name: Byte-compare bundled contracts and fixtures against the pinned SS-specs run: bash scripts/spec_parity.sh @@ -73,9 +73,24 @@ jobs: set +e xcodebuild -project SSRuntime.xcodeproj -scheme SSRuntime -sdk iphonesimulator \ -destination "platform=iOS Simulator,id=$sim" -configuration "${{ matrix.configuration }}" \ - CODE_SIGNING_ALLOWED=NO ENABLE_TESTABILITY=YES test \ + CODE_SIGNING_ALLOWED=NO ENABLE_TESTABILITY=YES \ + SS_RENDERER_TEST_CONDITIONS=SS_RENDERER_TEST_SUPPORT \ + -resultBundlePath /tmp/SSRuntime.xcresult test \ > /tmp/xcodebuild.log 2>&1 status=$? set -e grep -E "error:|warning:|✘|Test run with|BUILD (SUCCEEDED|FAILED)|TEST (SUCCEEDED|FAILED)" /tmp/xcodebuild.log || true + if [ "$status" -ne 0 ]; then + tail -n 250 /tmp/xcodebuild.log + xcrun xcresulttool get test-results summary --path /tmp/SSRuntime.xcresult || true + fi exit "$status" + - name: Preserve app test evidence + if: always() + uses: actions/upload-artifact@v4 + with: + name: app-tests-${{ matrix.configuration }} + path: | + /tmp/xcodebuild.log + /tmp/SSRuntime.xcresult + retention-days: 7 diff --git a/App/BenchmarkReviewArt.swift b/App/BenchmarkReviewArt.swift new file mode 100644 index 00000000..b83eeaa5 --- /dev/null +++ b/App/BenchmarkReviewArt.swift @@ -0,0 +1,157 @@ +import SpriteKit + +/// Review-only texture injection. The test target owns all candidate files. +/// It cannot alter simulation geometry or asset admission records. +@MainActor +struct BenchmarkReviewArt { + struct GroundPatch { + let texture: SKTexture + let bounds: CGRect + let tileUnits: CGFloat + } + struct GroundLine { + let start: CGPoint + let end: CGPoint + let width: CGFloat + let color: SKColor + } + struct Placement { + let texture: SKTexture + let size: CGSize + let anchor: CGPoint + let position: CGPoint + } + enum PlayerPresentation: Equatable { + case staticComposition + case selectedClip + } + // Environment injection must not erase action/event ownership in live reviews. + var playerPresentation: PlayerPresentation = .staticComposition + let player: SKTexture + let camera: SKTexture + let building: Placement + let buildingID: String + let props: [Placement] + let paving: SKTexture + var cameraStates: [Int: SKTexture] = [:] + var groundPatches: [GroundPatch] = [] + var groundLines: [GroundLine] = [] + /// One proposed street arrangement shared by static and animated reviews. + /// World-space decoration only: never changes the arena or collision data. + mutating func configureStreetCorner(asphalt: SKTexture) { + groundPatches = [ + .init(texture: asphalt, bounds: CGRect(x: 900, y: 0, width: 1404, height: 1536), tileUnits: 128), + .init(texture: asphalt, bounds: CGRect(x: 0, y: 0, width: 900, height: 480), tileUnits: 128) + ] + func line(_ a: CGPoint, _ b: CGPoint, _ width: CGFloat, _ value: CGFloat) -> GroundLine { + .init(start: a, end: b, width: width, color: SKColor(white: value, alpha: 1)) + } + groundLines = [] + // Layered curb edge, with a gap aligned to the south crossing. + for (width, shade): (CGFloat, CGFloat) in [(8, 0.22), (5, 0.57)] { + groundLines.append(line(CGPoint(x: 896, y: 484), CGPoint(x: 896, y: 1536), width, shade)) + groundLines.append(line(CGPoint(x: 0, y: 484), CGPoint(x: 492, y: 484), width, shade)) + groundLines.append(line(CGPoint(x: 564, y: 484), CGPoint(x: 896, y: 484), width, shade)) + } + // Rails sit inside the road; muted crossing paint does not rival cues. + for x: CGFloat in [960, 1000] { + groundLines.append(line(CGPoint(x: x, y: 0), CGPoint(x: x, y: 1536), 5, 0.12)) + groundLines.append(line(CGPoint(x: x, y: 0), CGPoint(x: x, y: 1536), 1.5, 0.55)) + } + for y in stride(from: 464, through: 320, by: -24) { + groundLines.append(line(CGPoint(x: 496, y: y), CGPoint(x: 560, y: y), 10, 0.62)) + } + } + +} + +/// Geometry for the BP-007 review projection only. Not the gameplay/rules viewport. +enum BenchmarkProjectionGeometry { + static func project(_ point: CGPoint) -> CGPoint { + let r = CGFloat(0.5).squareRoot() + return CGPoint(x: r * (point.x - point.y), y: r * (point.x + point.y) / 2) + } + + static func inverse(_ point: CGPoint) -> CGPoint { + let r = CGFloat(0.5).squareRoot() + return CGPoint(x: (point.x + 2 * point.y) / (2 * r), + y: (2 * point.y - point.x) / (2 * r)) + } + + /// Ground containment can conflict with player visibility; callers must measure both. + static func containedCenter(desired: CGPoint, bounds: CGRect, + viewport: CGSize, magnification: CGFloat) -> CGPoint? { + guard magnification.isFinite, magnification > 0, + viewport.width.isFinite, viewport.height.isFinite, + viewport.width > 0, viewport.height > 0, + desired.x.isFinite, desired.y.isFinite, + bounds.origin.x.isFinite, bounds.origin.y.isFinite, + bounds.width.isFinite, bounds.height.isFinite, + bounds.width > 0, bounds.height > 0 else { return nil } + let margin = (viewport.width / 2 + viewport.height) / (CGFloat(2).squareRoot() * magnification) + guard bounds.width >= 2 * margin, bounds.height >= 2 * margin else { return nil } + return CGPoint(x: min(max(desired.x, bounds.minX + margin), bounds.maxX - margin), + y: min(max(desired.y, bounds.minY + margin), bounds.maxY - margin)) + } + /// Candidate priority: keep the registered player canvas visible, reporting + /// outside-arena coverage separately. No gameplay bound is changed. + static func playerVisibleCenter(desired: CGPoint, bounds: CGRect, viewport: CGSize, + magnification: CGFloat, player: CGPoint, canvas: CGRect, + safeRegion: CGRect? = nil) -> CGPoint? { + guard let contained = containedCenter(desired: desired, bounds: bounds, + viewport: viewport, magnification: magnification), + player.x.isFinite, player.y.isFinite, + canvas.origin.x.isFinite, canvas.origin.y.isFinite, + canvas.width.isFinite, canvas.height.isFinite, + canvas.width > 0, canvas.height > 0, + canvas.width * magnification <= viewport.width, + canvas.height * magnification <= viewport.height else { return nil } + let point = project(player), initial = project(contained) + let viewportRect = CGRect(x: -viewport.width / 2, y: -viewport.height / 2, + width: viewport.width, height: viewport.height) + let region = safeRegion ?? viewportRect + guard !region.isNull, !region.isInfinite, + viewportRect.contains(region), + region.width >= canvas.width * magnification, + region.height >= canvas.height * magnification else { return nil } + let minX = point.x + canvas.maxX - region.maxX / magnification + let maxX = point.x + canvas.minX - region.minX / magnification + let minY = point.y + canvas.maxY - region.maxY / magnification + let maxY = point.y + canvas.minY - region.minY / magnification + return inverse(CGPoint(x: min(max(initial.x, minX), maxX), + y: min(max(initial.y, minY), maxY))) + } + + /// Static diagnostic composition, not a dynamic HUD-follow policy. + /// Enumerating obstacle edges finds the maximal center-containing rectangle. + static func unobstructedRegion(viewport: CGRect, exclusions: [CGRect], + minimumSize: CGSize) -> CGRect? { + guard !viewport.isNull, !viewport.isInfinite, viewport.width > 0, viewport.height > 0, + minimumSize.width.isFinite, minimumSize.height.isFinite, + minimumSize.width > 0, minimumSize.height > 0, + exclusions.allSatisfy({ !$0.isNull && !$0.isInfinite }) else { return nil } + let obstacles = exclusions.map { $0.intersection(viewport) } + .filter { !$0.isNull && $0.width > 0 && $0.height > 0 } + let xs = Set([viewport.minX, viewport.maxX] + obstacles.flatMap { [$0.minX, $0.maxX] }).sorted() + let ys = Set([viewport.minY, viewport.maxY] + obstacles.flatMap { [$0.minY, $0.maxY] }).sorted() + var best: CGRect? + for left in xs where left <= viewport.midX { + for right in xs where right >= viewport.midX && right-left >= minimumSize.width { + for bottom in ys where bottom <= viewport.midY { + for top in ys where top >= viewport.midY && top-bottom >= minimumSize.height { + let candidate = CGRect(x: left, y: bottom, width: right-left, height: top-bottom) + guard !obstacles.contains(where: { + let overlap = candidate.intersection($0) + return !overlap.isNull && overlap.width > 0 && overlap.height > 0 + }) else { continue } + if best == nil || candidate.width * candidate.height > best!.width * best!.height { + best = candidate + } + } + } + } + } + return best + } + +} diff --git a/App/CameraFieldGeometry.swift b/App/CameraFieldGeometry.swift new file mode 100644 index 00000000..0aa47120 --- /dev/null +++ b/App/CameraFieldGeometry.swift @@ -0,0 +1,73 @@ +import CoreGraphics +import Foundation +import SurveillanceCore + +/// Display-only visibility polygon; never used to decide detection. +/// All occluders and the fractional emitter origin come from the snapshot. +enum CameraFieldGeometry { + struct Key: Equatable { + let originX: Double + let originY: Double + let range: Int + let heading: Int + let angle: Int + let solids: [AABB] + init(camera: PresentationSnapshot.CameraSprite, solids: [AABB]) { + originX = camera.fieldOrigin.map { Double($0.x.raw) / Double(Q8.scale) } ?? Double(camera.x) + originY = camera.fieldOrigin.map { Double($0.y.raw) / Double(Q8.scale) } ?? Double(camera.y) + range = camera.range; heading = camera.headingMilli; angle = camera.fieldAngleMilli + self.solids = solids + } + } + + static func path(_ key: Key) -> CGPath { + let path = CGMutablePath() + let origin = CGPoint(x: key.originX, y: key.originY) + guard key.range > 0, key.angle > 0 else { return path } + let base = -Double(key.heading) * .pi / 180_000 + let half = Double(key.angle) * .pi / 360_000 + // Sample the range arc and both sides of every obstacle corner. Uniform + // rays alone can bridge over a narrow occluder between adjacent rays. + let count = max(1, Int(ceil(Double(key.angle) / 1_000))) + var angles = (0...count).map { -half + 2 * half * Double($0) / Double(count) } + for box in key.solids { + for x in [box.minX, box.maxX] { + for y in [box.minY, box.maxY] { + let a = atan2(Double(y) - key.originY, Double(x) - key.originX) - base + let relative = atan2(sin(a), cos(a)) + for offset in [-1e-7, 0, 1e-7] where abs(relative + offset) <= half { + angles.append(relative + offset) + } + } + } + } + path.move(to: origin) + for angle in angles.sorted() { + let dx = cos(base + angle), dy = sin(base + angle) + var reach = Double(key.range) + for box in key.solids { + if let entry = entry(origin: origin, dx: dx, dy: dy, box: box) { + reach = min(reach, entry) + } + } + path.addLine(to: CGPoint(x: key.originX + dx * reach, y: key.originY + dy * reach)) + } + path.closeSubpath() + return path + } + + private static func entry(origin: CGPoint, dx: Double, dy: Double, box: AABB) -> Double? { + var near = -Double.infinity, far = Double.infinity + for (o, d, lo, hi) in [(Double(origin.x), dx, Double(box.minX), Double(box.maxX)), + (Double(origin.y), dy, Double(box.minY), Double(box.maxY))] { + if abs(d) < 1e-12 { + if o < lo || o > hi { return nil } + } else { + let a = (lo - o) / d, b = (hi - o) / d + near = max(near, min(a, b)); far = min(far, max(a, b)) + } + } + guard near <= far, far >= 0 else { return nil } + return max(0, near) + } +} diff --git a/App/CombatFeedbackRenderer.swift b/App/CombatFeedbackRenderer.swift new file mode 100644 index 00000000..6cafc83e --- /dev/null +++ b/App/CombatFeedbackRenderer.swift @@ -0,0 +1,96 @@ +import SpriteKit +import SurveillanceCore + +/// CC-008. Four persistent shapes; no per-frame node allocation, gameplay +/// mutation, random motion, or retained entity history. +@MainActor +final class CombatFeedbackRenderer { + let root = SKNode() + let aim = SKShapeNode() + let discharge = SKShapeNode(circleOfRadius: 6) + let jammer = SKShapeNode() + let concealment = SKShapeNode() + private var shotTick: UInt64? + private var lastTick: UInt64? + + init() { + root.zPosition = 19 + aim.name = "civic-pulse-aim" + discharge.name = "civic-pulse-discharge" + jammer.name = "signal-jammer-active" + concealment.name = "ghost-step-concealment" + let aimPath = CGMutablePath() + aimPath.addLines(between: [CGPoint(x: 23, y: -5), CGPoint(x: 31, y: 0), CGPoint(x: 23, y: 5)]) + aim.path = aimPath + let warm = SKColor(red: 1, green: 0.94, blue: 0.78, alpha: 1) + aim.strokeColor = warm + discharge.strokeColor = warm + discharge.fillColor = warm.withAlphaComponent(0.65) + jammer.path = Self.segmentedContour(radius: 27, segments: 8) + jammer.strokeColor = SKColor(red: 0.3, green: 0.85, blue: 0.9, alpha: 1) + // Four right-angle corners distinguish concealment from interference + // even without colour. It is not the circular damage-immunity symbol. + let corners = CGMutablePath() + for (x, y) in [(1.0, 1.0), (-1.0, 1.0), (-1.0, -1.0), (1.0, -1.0)] { + corners.move(to: CGPoint(x: x * 19, y: y * 32)) + corners.addLine(to: CGPoint(x: x * 32, y: y * 32)) + corners.addLine(to: CGPoint(x: x * 32, y: y * 19)) + } + concealment.path = corners + concealment.strokeColor = SKColor(white: 0.95, alpha: 1) + for shape in [aim, discharge, jammer, concealment] { + shape.lineWidth = 2 + shape.isHidden = true + root.addChild(shape) + } + } + + func reset() { + shotTick = nil + lastTick = nil + for node in root.children { node.isHidden = true; node.removeAllActions() } + } + + func update(_ snap: PresentationSnapshot, events: [AuthoritativeEvent], settings: PresentationVFXSettings) { + if let lastTick, snap.tick < lastTick { reset() } + let fresh = snap.tick != lastTick + lastTick = snap.tick + guard !snap.outcome.isTerminal, !snap.upgradePending else { + for node in root.children { node.isHidden = true } + shotTick = nil + return + } + let player = CGPoint(x: snap.player.x, y: snap.player.y) + if fresh, let shot = snap.combatFeedback.shot, + events.contains(where: { $0.tick == snap.tick && $0.type == .weaponFired && $0.primaryEntityId == shot.projectile }), + shot.velocity != .zero { + shotTick = snap.tick + aim.position = player + aim.zRotation = atan2(CGFloat(shot.velocity.y.raw), CGFloat(shot.velocity.x.raw)) + discharge.position = CGPoint(x: CGFloat(shot.origin.x.raw) / CGFloat(Q8.scale), + y: CGFloat(shot.origin.y.raw) / CGFloat(Q8.scale)) + } + let shooting = shotTick.map { snap.tick >= $0 && snap.tick - $0 < 6 } ?? false + aim.isHidden = !shooting + aim.position = player + discharge.isHidden = !shooting + // Reduced motion/flash is a static outline for the same truthful cue. + discharge.fillColor = settings.reducedMotion || settings.reducedFlash ? .clear : aim.strokeColor.withAlphaComponent(0.65) + jammer.isHidden = !snap.combatFeedback.jammerReducedExposure + jammer.position = player + jammer.zRotation = settings.reducedMotion || settings.reducedFlash ? 0 : CGFloat(snap.tick % 120) * .pi / 60 + concealment.isHidden = !snap.ghostConcealmentActive + concealment.position = player + } + + private static func segmentedContour(radius: CGFloat, segments: Int) -> CGPath { + let path = CGMutablePath() + for index in 0.. [Self] { + events.filter { $0.type == .playerDamaged }.map { event in + let id = event.secondaryEntityId + var sources: [Source] = [] + if let projectile = after.projectiles.first(where: { $0.id == id }) + ?? before.projectiles.first(where: { $0.id == id }) { + sources.append(Source(id: projectile.id.raw, kind: "projectile:\(projectile.kind)", + position: Point(projectile.position), radius: projectile.radius, + state: "previous=\(projectile.previous.x.raw),\(projectile.previous.y.raw); velocity=\(projectile.velocity.x.raw),\(projectile.velocity.y.raw); alive=\(projectile.alive)")) + } + if let enemy = after.enemies.first(where: { $0.id == id }) + ?? before.enemies.first(where: { $0.id == id }) { + sources.append(Source(id: enemy.id.raw, kind: "enemy:\(enemy.archetype.rawValue)", + position: Point(enemy.position), radius: enemy.radius, + state: "before=\(String(describing: before.enemies.first { $0.id == id }?.state)); after=\(enemy.state)")) + } + // Older evidence named only the owner. D-103 names the mine itself. + for mine in before.mines where (mine.id == id || mine.ownerId == id) && !after.mines.contains(where: { $0.id == mine.id }) { + sources.append(Source(id: mine.id.raw, kind: "removed-mine", position: Point(mine.position), + radius: mine.radius, state: "armRemaining=\(mine.armRemaining); lifeRemaining=\(mine.lifeRemaining)")) + } + let amount: Int + if case .integer(let value) = event.payload["amount"] { amount = Int(value) } else { amount = 0 } + return Self(tick: event.tick, sourceID: id?.raw, amount: amount, + playerBefore: Point(before.player.position), playerAfter: Point(after.player.position), + playerRadius: PlayerBody.radiusUnits, candidates: sources, + classification: event.payload["damageKind"] != nil ? "authoritative-event-evidence" : (sources.isEmpty ? "unresolved-source" : "source-candidates-not-cause-proof"), + warningsBefore: PresentationSnapshot(before).telegraphs.map { + "owner=\($0.ownerId.raw); kind=\($0.kind); origin=\($0.x),\($0.y); heading=\($0.headingMilli); range=\($0.rangeUnits); halfAngle=\($0.halfAngleMilli); width=\($0.widthUnits); remaining=\($0.remainingTicks)" + }, authoritativeEventJSON: event.payload["damageKind"] != nil ? event.canonical().serialize() : nil) + } + } +} + +struct DamageDiagnosticRun: Encodable { + struct Command: Codable { + let tick: UInt64 + let moveX: Int16 + let moveY: Int16 + let dodge: Bool + let upgrade: UInt8? + init(_ value: PlayerCommand) { + tick = value.tick; moveX = value.moveX; moveY = value.moveY + dodge = value.dodgePressed; upgrade = value.upgradeChoiceIndex + } + } + let schema = "ss-damage-qa-001" + let seed: UInt64 + let device: String + let droppedRecords: Int + let damage: [DamageDiagnostic] + let commands: [Command] +} diff --git a/App/DebugAutopilot.swift b/App/DebugAutopilot.swift index 19e7eebc..89192942 100644 --- a/App/DebugAutopilot.swift +++ b/App/DebugAutopilot.swift @@ -4,12 +4,9 @@ import SurveillanceCore /// DEBUG-only scripted pilot that plays a whole run. /// -/// It drives nothing but the interfaces a person drives: a normalized -/// `PlayerCommand` for movement and Dodge, and a synthetic tap in HUD point -/// space for the upgrade card. That matters — the upgrade gate is a hard -/// blocker (`Simulation.step` returns `.upgradeSelectionPending` and refuses to -/// advance until a valid choice arrives), so reaching it through the real -/// hit-test path is the only way to know the gate actually opens. +/// It drives normalized movement/Dodge commands and the same validated upgrade +/// selection action used by the SwiftUI buttons. It verifies the protected +/// gate's action path, not touch layout or VoiceOver usability. /// /// It never reads or writes authoritative state, and it is never compiled into /// a release build. @@ -279,12 +276,7 @@ struct DebugAutopilot { return Command(moveX: Int16(32_767 * detourSign), moveY: 0, dodge: command.dodge) } - /// Where to tap when the protected upgrade overlay is open, in the same - /// safe-rectangle point space a finger works in. - @MainActor - func upgradeTapPoint(projector: HUDProjector, hud: HUDRenderer) -> CGPoint? { - hud.upgradeCardCentre(for: upgradeChoice, projector: projector) - } + // MARK: - Geometry diff --git a/App/EnvironmentTextures.swift b/App/EnvironmentTextures.swift index f31b98f9..60858045 100644 --- a/App/EnvironmentTextures.swift +++ b/App/EnvironmentTextures.swift @@ -7,6 +7,23 @@ import SurveillanceCore /// what is delivered and the all-or-nothing rule, and this owns the textures. @MainActor final class EnvironmentTextures { + enum ProjectionPlane { case ground, upright, unresolved } + + /// BP-005 audited source roles. Unknown/mount-context assets stay explicit. + static func projectionPlane(for assetId: String) -> ProjectionPlane { + if assetId.hasPrefix("env_ground_") { return .ground } + if assetId.hasPrefix("env_solid_") || assetId.hasPrefix("env_camera_") { return .upright } + switch assetId { + case "env_prop_utility_covers", "env_prop_vent_grate", "env_prop_rail_strip": + return .ground + case "env_prop_newsbox", "env_prop_hydrant_meters", "env_prop_street_tree", + "env_prop_trolley_pole", "env_prop_signal_mast", "env_prop_bus_shelter", + "env_prop_parklet", "env_prop_bike_rack", "env_prop_barricade", "env_prop_seismic_brace": + return .upright + default: return .unresolved + } + } + private let library: EnvironmentLibrary private var textures: [String: SKTexture] = [:] diff --git a/App/GameContainerView.swift b/App/GameContainerView.swift index 080d696e..08778281 100644 --- a/App/GameContainerView.swift +++ b/App/GameContainerView.swift @@ -26,8 +26,8 @@ struct GameContainerView: View { return false #endif } - private let scene: GameScene = { - let scene = GameScene() + @State private var scene: GameScene = { + let scene = GameScene(size: .zero) scene.scaleMode = .resizeFill return scene }() @@ -35,6 +35,7 @@ struct GameContainerView: View { var body: some View { ZStack { game + UpgradeOverlayHost(scene: scene) if !started { TitleView( onStart: startDailyRun, @@ -65,7 +66,7 @@ struct GameContainerView: View { } private var game: some View { - SpriteView(scene: scene, preferredFramesPerSecond: 60) + GameplaySurface(scene: scene) .ignoresSafeArea() .accessibilityLabel("Surveillance Survivor gameplay") .onAppear { @@ -83,3 +84,26 @@ struct GameContainerView: View { } } } + +private struct UpgradeOverlayHost: View { + let scene: GameScene + @ObservedObject var model: UpgradeSelectionModel + init(scene: GameScene) { + self.scene = scene + self.model = scene.upgradeSelection + } + var body: some View { + UpgradeSelectionView(model: model, onChoose: { scene.chooseUpgrade($0) }) + } +} + +private struct GameplaySurface: View { + let scene: GameScene + @ObservedObject var selection: UpgradeSelectionModel + init(scene: GameScene) { self.scene = scene; self.selection = scene.upgradeSelection } + var body: some View { + SpriteView(scene: scene, preferredFramesPerSecond: 60) + .accessibilityHidden(selection.isPresented) + .allowsHitTesting(!selection.isPresented) + } +} diff --git a/App/GameScene.swift b/App/GameScene.swift index 7bec856e..9b6ce7b3 100644 --- a/App/GameScene.swift +++ b/App/GameScene.swift @@ -1,12 +1,12 @@ import SpriteKit import SurveillanceCore import UIKit -#if DEBUG import os -#endif final class GameSession { private(set) var simulation: Simulation + /// Exact post-collision travel, presentation-only; whole-unit counters lose slow analog motion. + private var playerMovedLastStep: Bool? private var cameraHUD = CameraHUDProjector() private var heatCaption = HeatCaptionProjector() /// D-083 heat caption, derived from the tick's events; nil when none shows. @@ -45,6 +45,11 @@ final class GameSession { /// order, so a successful run can be stored and replayed as the ghost. /// Written after each step; never read back into the simulation. private(set) var commandLog: [PlayerCommand] = [] + var damageDiagnosticsEnabled = false + var damageViewCenter: VecQ8? + private(set) var damageDiagnostics: [DamageDiagnostic] = [] + private(set) var droppedDamageDiagnostics = 0 + private(set) var latestDamageDiagnostics: [DamageDiagnostic] = [] /// True once a debug scenario has written authoritative state directly. /// Such a run cannot be replayed from its commands, so it is never stored /// as a best. @@ -53,13 +58,34 @@ final class GameSession { /// the simulation. private(set) var feel = FeelPassPresenter() + init(simulation: Simulation) { self.simulation = simulation } + init(seed: UInt64 = 1) { simulation = try! Simulation.make(seed: seed) } +#if DEBUG + // Opt-in coarse diagnostics only. No clocks or sample accumulation when disabled. + var benchmarkStepTimingEnabled = false + private(set) var benchmarkStepTimings: [String: Double] = [:] +#endif + func step() { +#if DEBUG + var stageStart = benchmarkStepTimingEnabled ? CFAbsoluteTimeGetCurrent() : 0 + var stageTimes: [String: Double] = [:] + func markStage(_ name: String) { + guard benchmarkStepTimingEnabled else { return } + let now = CFAbsoluteTimeGetCurrent() + stageTimes[name] = now - stageStart + stageStart = now + } + defer { if benchmarkStepTimingEnabled { benchmarkStepTimings = stageTimes } } +#endif let tick = simulation.state.tick + 1 + let diagnosticBefore = damageDiagnosticsEnabled ? simulation.state : nil let enemiesBefore = simulation.state.enemies + let playerPositionBefore = simulation.state.player.position feel.willStep(simulation.state) let result: TickResult var command: PlayerCommand? @@ -82,14 +108,42 @@ final class GameSession { dodgePressed: dodgePressed ) } +#if DEBUG + markStage("commandAndFeelBefore") +#endif result = simulation.step(command: command) +#if DEBUG + markStage("simulation") +#endif + if simulation.state.tick == tick { + playerMovedLastStep = simulation.state.player.position != playerPositionBefore + } lastEvents = result.events + latestDamageDiagnostics = diagnosticBefore.map { + DamageDiagnostic.capture(before: $0, after: simulation.state, events: result.events) + } ?? [] + for index in latestDamageDiagnostics.indices { + latestDamageDiagnostics[index].viewCenterBefore = damageViewCenter.map(DamageDiagnostic.Point.init) + } + damageDiagnostics.append(contentsOf: latestDamageDiagnostics) + if damageDiagnostics.count > 512 { + let excess = damageDiagnostics.count - 512 + droppedDamageDiagnostics += excess + damageDiagnostics.removeFirst(excess) + } // Log only a command the simulation consumed: one that advanced the // tick. A held upgrade gate and a finished run do not advance. if let command, simulation.state.tick == tick { commandLog.append(command) } - reactions.ingest(result, previousEnemies: enemiesBefore, currentEnemies: simulation.state.enemies) +#if DEBUG + markStage("diagnosticsAndCommandLog") +#endif + reactions.ingest(result, previousEnemies: enemiesBefore, currentEnemies: simulation.state.enemies, + playerDirection: ClipFrameLibrary.direction(forFacing: simulation.state.player.facing)) +#if DEBUG + markStage("reactions") +#endif applyCameraHUD(result) lastHeatReinforcements = HeatCaptionProjector.reinforcements( events: result.events, @@ -104,11 +158,23 @@ final class GameSession { ) quietFrame = quietApproach.project(tick: result.tick, events: result.events, state: simulation.state) feel.didStep(events: result.events, enemiesBefore: enemiesBefore, state: simulation.state) +#if DEBUG + markStage("hudCaptionsQuietFeel") +#endif applyAudio(result) audio = feel.decorate(audio) captionBoard.ingest(tick: result.tick, cues: audio.captionCues) - awarenessHintCopy = awarenessHint.project(PresentationSnapshot(simulation.state)) +#if DEBUG + markStage("audioAndCaptionBoard") +#endif + awarenessHintCopy = awarenessHint.project(simulation.state) +#if DEBUG + markStage("awarenessSnapshotAndHint") +#endif persistTerminalReceiptIfNeeded() +#if DEBUG + markStage("terminalReceipt") +#endif } private func persistTerminalReceiptIfNeeded() { @@ -120,7 +186,11 @@ final class GameSession { func restartRun(seed: UInt64 = 1) { simulation = try! Simulation.make(seed: seed) + playerMovedLastStep = nil commandLog = [] + damageDiagnostics = [] + latestDamageDiagnostics = [] + droppedDamageDiagnostics = 0 lastEvents = [] scenarioSeeded = false terminalReceiptStored = false @@ -179,6 +249,7 @@ final class GameSession { let seeded = simulation.debug_seedScenario(scenario) if seeded { scenarioSeeded = true + playerMovedLastStep = nil feel.observe(simulation.state) } return seeded @@ -187,20 +258,78 @@ final class GameSession { var snapshot: PresentationSnapshot { var snapshot = PresentationSnapshot(simulation.state) + if let moved = playerMovedLastStep, + snapshot.playerClipId == "player_idle" || snapshot.playerClipId == "player_move" { + snapshot.playerClipId = moved ? "player_move" : "player_idle" + } + snapshot.combatFeedback = simulation.combatFeedback reactions.apply(to: &snapshot) return snapshot } } final class GameScene: SKScene { - let session = GameSession() + let session: GameSession + override init(size: CGSize) { + session = GameSession() + super.init(size: size) + } + init(size: CGSize, session: GameSession) { + self.session = session + super.init(size: size) + } + required init?(coder: NSCoder) { + session = GameSession() + super.init(coder: coder) + } + let upgradeSelection = UpgradeSelectionModel() + private let combatFeedbackRenderer = CombatFeedbackRenderer() private let instrumentation = RunInstrumentation() private let deviceRunTracker = DeviceRunTracker() private var terminalEvidenceStored = false private let renderer = WorldRenderer() +#if DEBUG + /// Optional evidence sink; no recording or allocation in ordinary play. + var benchmarkPlaybackObserver: ((TimeInterval, PresentationSnapshot, VecQ8, + WorldRenderer.PlayerPlaybackObservation, CGPoint) -> Void)? + + /// BP-007 review parameter; ordinary frame callbacks retain the baseline. + func refreshBenchmarkOutlines(samplingScale: Int) { + renderer.syncOutlines(samplingScale: samplingScale) + } + func setBenchmarkFieldContrast(_ style: WorldRenderer.BenchmarkFieldContrast) { + renderer.benchmarkFieldContrast = style + } + + /// Re-present the same authoritative snapshot for a paused visual comparison. + func refreshBenchmarkPresentation(reducedMotion: Bool) { + renderer.render(session.snapshot, reducedMotion: reducedMotion) + } + + /// Install a complete review family once; use the same camera playback policy. + func installBenchmarkCameraFrames(_ frames: [String: [SKTexture]]) -> Bool { + renderer.installBenchmarkCameraFrames(frames) + } + + /// Composition fixture only: no mutation of the simulation or collision map. + func renderBenchmark(snapshot: PresentationSnapshot, art: BenchmarkReviewArt, center: CGPoint) { + renderer.installBenchmarkArt(art) + renderer.render(snapshot, reducedMotion: true) + cameraNode.position = center + introOverlay.node.isHidden = true + hud.render(snapshot, cameraHUD: session.cameraHUDProjection, paused: false) + } +#endif + /// D-088: effects, hit-stop, and shake. Presentation only. private let vfx = VFXRenderer() private let cameraNode = SKCameraNode() + private var cameraFollow = CameraFollow() + private var lastDisplayTime: TimeInterval? + private var displayDelta: TimeInterval = 1.0 / 60 + private let qaEnabled = ProcessInfo.processInfo.arguments.contains("-SSQA") + private var qaFrames = 0 + private static let qaLog = Logger(subsystem: "com.zer0state.surveillancesurvivor", category: "device-qa") private let hud = HUDRenderer() /// D-094 Lockdown tint: world layer only, under the HUD. private let lockdownTint = LockdownTintLayer() @@ -259,12 +388,14 @@ final class GameScene: SKScene { #endif override func didMove(to view: SKView) { + session.damageDiagnosticsEnabled = qaEnabled backgroundColor = .init(red: 0.055, green: 0.075, blue: 0.10, alpha: 1) view.preferredFramesPerSecond = 60 view.ignoresSiblingOrder = true size = CGSize(width: CGFloat(PresentationCamera.visibleWidth), height: CGFloat(PresentationCamera.visibleHeight)) scaleMode = .aspectFit addChild(renderer.root) + renderer.root.addChild(combatFeedbackRenderer.root) addChild(cameraNode) camera = cameraNode cameraNode.addChild(lockdownTint.node) @@ -400,6 +531,8 @@ final class GameScene: SKScene { func setPaused(_ paused: Bool) { runPaused = paused + renderer.root.isPaused = paused + lastDisplayTime = nil // Input must not survive a pause boundary. // // Pause is reached by tapping the Pause control while the other hand may @@ -413,7 +546,16 @@ final class GameScene: SKScene { } override func update(_ currentTime: TimeInterval) { + displayDelta = lastDisplayTime.map { max(0, currentTime - $0) } ?? 1.0 / 60 + lastDisplayTime = currentTime instrumentation.frameTimes.recordFrame(timestamp: currentTime) + if qaEnabled { + qaFrames += 1 + if qaFrames % 300 == 0 { + let summary = instrumentation.frameTimes.summarize() + Self.qaLog.notice("QA device=\(DeviceTelemetrySample.hardwareModel, privacy: .public) tick=\(self.currentTick, privacy: .public) n=\(summary.sampleCount, privacy: .public) p50=\(summary.p50Ms, privacy: .public) p95=\(summary.p95Ms, privacy: .public) p99=\(summary.p99Ms, privacy: .public) worst=\(summary.worstMs, privacy: .public)") + } + } guard !runPaused else { return } // D-088 hit-stop: a frozen frame neither steps the simulation nor // redraws the world. No tick, no command, so no digest change. @@ -427,19 +569,10 @@ final class GameScene: SKScene { #if DEBUG if autopilot != nil { let snapshot = session.snapshot - // The upgrade gate is a hard blocker: the simulation refuses to - // advance until a valid choice arrives. Reach it the way a finger - // does, through the real hit test, so the gate is actually proven. - if snapshot.upgradePending, session.pendingUpgradeChoice == nil { - if let projector, - let tap = autopilot!.upgradeTapPoint(projector: projector, hud: hud), - let choice = hud.upgradeCardIndex(atPoints: tap, projector: projector) - { - session.pendingUpgradeChoice = choice - Self.autopilotLog.notice("upgrade tap at \(tap.debugDescription, privacy: .public) -> index \(choice, privacy: .public)") - } else { - Self.autopilotLog.error("upgrade overlay open but no card was hit — gate is stuck") - } + // Harness uses the same validated action as the SwiftUI buttons. + // This is action coverage, not evidence of UI hit testing. + if snapshot.upgradePending { + chooseUpgrade(autopilot!.upgradeChoice.selectionIndex) } let steer = autopilot!.command(snapshot) session.moveX = steer.moveX @@ -471,7 +604,19 @@ final class GameScene: SKScene { #else applyController() #endif + if qaEnabled { + session.damageViewCenter = VecQ8( + x: Q8(raw: Int64((cameraNode.position.x * CGFloat(Q8.scale)).rounded())), + y: Q8(raw: Int64((cameraNode.position.y * CGFloat(Q8.scale)).rounded()))) + } session.step() + if qaEnabled { + for hit in session.latestDamageDiagnostics { + if let data = try? JSONEncoder().encode(hit), let line = String(data: data, encoding: .utf8) { + Self.qaLog.notice("QA_DAMAGE \(line, privacy: .public)") + } + } + } // D-097: the takedown's hit-stop and ring, after the step that made it. vfx.takedown(targets: session.feel.lastTakedowns) #if DEBUG @@ -509,6 +654,13 @@ final class GameScene: SKScene { override func didEvaluateActions() { super.didEvaluateActions() renderer.syncOutlines() +#if DEBUG + if let observer = benchmarkPlaybackObserver, + let observed = renderer.observePlayerPlayback() { + observer(lastDisplayTime ?? 0, session.snapshot, + session.simulation.state.player.position, observed, cameraNode.position) + } +#endif } private func applyController() { @@ -521,10 +673,24 @@ final class GameScene: SKScene { private func persistDeviceEvidenceIfNeeded() { guard !terminalEvidenceStored, session.simulation.state.outcome != .playing else { return } terminalEvidenceStored = true + if qaEnabled { + let report = DamageDiagnosticRun(seed: session.simulation.state.seed, + device: DeviceTelemetrySample.hardwareModel, droppedRecords: session.droppedDamageDiagnostics, + damage: session.damageDiagnostics, commands: session.commandLog.map(DamageDiagnosticRun.Command.init)) + do { + let directory = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, + appropriateFor: nil, create: true) + let url = directory.appendingPathComponent("SS-damage-QA-latest.json") + try JSONEncoder().encode(report).write(to: url, options: .atomic) + Self.qaLog.notice("QA_DAMAGE_EXPORT \(url.lastPathComponent, privacy: .public)") + } catch { + Self.qaLog.error("QA_DAMAGE_EXPORT failed: \(String(describing: error), privacy: .public)") + } + } deviceRunTracker.noteTerminalOutcome(session.simulation.state.outcome) let snapshot = instrumentation.evidence() let deviceEvidence = snapshot.makeDeviceRunEvidence( - deviceClass: "iPhone 12", + deviceClass: DeviceTelemetrySample.hardwareModel, consecutiveCompleteRuns: deviceRunTracker.consecutiveCompleteRuns, atlasMemoryBytes: nil ) @@ -685,6 +851,9 @@ final class GameScene: SKScene { loadGhost() soundEngine.reset() renderer.reset() + combatFeedbackRenderer.reset() + cameraFollow.reset() + lastDisplayTime = nil lockdownTint.reset() court.reset() vfx.reset() @@ -702,6 +871,24 @@ final class GameScene: SKScene { redraw() } + /// Sole UI selection boundary: accepts once, with neutral movement. + @discardableResult + func chooseUpgrade(_ index: UInt8) -> Bool { + guard session.simulation.state.upgrade.pending, + session.pendingUpgradeChoice == nil, + upgradeSelection.submit(index) else { return false } + clearGameplayInput() + session.pendingUpgradeChoice = index + return true + } + + private func clearGameplayInput() { + controller.reset() + session.moveX = 0 + session.moveY = 0 + session.dodgePressed = false + } + // MARK: - Input private func token(_ touch: UITouch) -> TouchController.TouchToken { @@ -736,12 +923,8 @@ final class GameScene: SKScene { } return true } - if snap.upgradePending { - if let choice = hud.upgradeCardIndex(atPoints: point, projector: projector) { - session.pendingUpgradeChoice = choice - } - return false - } + // SwiftUI owns the protected selection surface. World taps are inert. + if snap.upgradePending || runPaused { return true } if controller.began(token: token, atPoints: point, layout: hud.controlLayout ?? .empty) == .pause { onPauseRequested?() } @@ -756,6 +939,7 @@ final class GameScene: SKScene { } func moveTouch(token: TouchController.TouchToken, toPoints point: CGPoint) { + guard !session.simulation.state.upgrade.pending, !runPaused else { return } guard let layout = hud.controlLayout else { return } controller.moved(token: token, toPoints: point, layout: layout) } @@ -873,6 +1057,8 @@ final class GameScene: SKScene { private func redraw() { presentationFrame &+= 1 var snap = session.snapshot + if snap.upgradePending && !upgradeSelection.isPresented { clearGameplayInput() } + upgradeSelection.synchronize(pending: snap.upgradePending) // D-098: during the intro a Camera's field is drawn only once it has // powered on. Presentation copy of the snapshot; state is untouched. if let intro, !intro.isFinished { @@ -880,7 +1066,13 @@ final class GameScene: SKScene { snap.cameras[index].fieldVisible = false } } - cameraNode.position = vfx.cameraPosition(base: CGPoint(x: snap.camera.center.x, y: snap.camera.center.y)) + cameraFollow.update( + player: VecI(x: snap.player.x, y: snap.player.y), + heading: session.simulation.state.player.facing, + bounds: snap.arenaBounds, + deltaTime: displayDelta + ) + cameraNode.position = vfx.cameraPosition(base: CGPoint(x: cameraFollow.x ?? 0, y: cameraFollow.y ?? 0)) nearMissEdges.update( snap, nearMiss: session.feel.nearMiss, @@ -896,6 +1088,7 @@ final class GameScene: SKScene { reducedMotion: settings.vfx.reducedMotion, ghost: ghostPresentation(liveTick: snap.tick) ) + combatFeedbackRenderer.update(snap, events: session.lastEvents, settings: settings.vfx) vfx.render(snap) lockdownTint.update(snap, settings: settings.vfx) court.update(snap, settings: settings.vfx) diff --git a/App/HUDRenderer.swift b/App/HUDRenderer.swift index d2f8254b..b6c9da06 100644 --- a/App/HUDRenderer.swift +++ b/App/HUDRenderer.swift @@ -83,9 +83,6 @@ final class HUDRenderer { if !snap.outcome.isTerminal { drawAwarenessHint(projector) } drawCaptions(projector) drawControls(snap, projector, paused: paused) - if snap.upgradePending { - drawUpgradeSelection(projector) - } drawTerminal(snap, projector) sweep() @@ -518,7 +515,7 @@ final class HUDRenderer { static let quietTagKey = "quiet-tag" static let quietCaptionKey = "quiet-caption" - /// `UNSEEN ENEMIES HOLD • STRIKE FIRST FOR DOUBLE DAMAGE` (hud-tutorial.md, + /// `UNSEEN ENEMIES HOLD • STRIKE FIRST FOR TRIPLE DAMAGE` (hud-tutorial.md, /// D-089) in the row `AwarenessHintProjector.referenceRect` names. A /// tutorial hint, so the tutorial setting hides it. /// @@ -692,39 +689,6 @@ final class HUDRenderer { /// `run-shell.md` § 11: the run card, set once the run is terminal. var runCard: RunCard? - /// Card geometry in safe-rectangle point space — the single source the - /// drawing, the hit test, and any synthetic tap all read. Computing it - /// twice is how a card ends up drawn somewhere it cannot be pressed. - static let upgradeCardSize = CGSize(width: 200, height: 130) - static let upgradeCardGap: CGFloat = 24 - - func upgradeCardRects(projector: HUDProjector) -> [(upgrade: UpgradeID, rect: CGRect)] { - let cards = UpgradePresentation.selectionCards() - let width = Self.upgradeCardSize.width - let height = Self.upgradeCardSize.height - let gap = Self.upgradeCardGap - let total = width * CGFloat(cards.count) + gap * CGFloat(cards.count - 1) - let originX = CGFloat(projector.safeWidth) / 2 - total / 2 - let centreY = CGFloat(projector.safeHeight) / 2 - return cards.enumerated().map { index, card in - ( - card.upgrade, - CGRect( - x: originX + CGFloat(index) * (width + gap), - y: centreY - height / 2, - width: width, - height: height - ) - ) - } - } - - func upgradeCardCentre(for upgrade: UpgradeID, projector: HUDProjector) -> CGPoint? { - upgradeCardRects(projector: projector) - .first { $0.upgrade == upgrade } - .map { CGPoint(x: $0.rect.midX, y: $0.rect.midY) } - } - /// Terminal surface geometry comes from `HUDLayout`, which owns HUD layout /// maths and can be tested without the App target. private func rect(_ hud: HUDRect) -> CGRect { @@ -871,90 +835,6 @@ final class HUDRenderer { label(key: "\(key)-label", text: text, at: buttonCentre, size: 13, colour: HUDPalette.text) } - /// Three equal cards in canonical order, no default and no timeout. - private func drawUpgradeSelection(_ projector: HUDProjector) { - let cards = UpgradePresentation.selectionCards() - let rects = upgradeCardRects(projector: projector) - let cardWidth = projector.sceneLength(points: Int(Self.upgradeCardSize.width)) - let cardHeight = projector.sceneLength(points: Int(Self.upgradeCardSize.height)) - - let scrim = node("upgrade-scrim") { () -> SKShapeNode in - let shape = SKShapeNode( - rectOf: CGSize( - width: projector.sceneLength(points: projector.safeWidth), - height: projector.sceneLength(points: projector.safeHeight) - ) - ) - shape.fillColor = HUDPalette.scrim - shape.strokeColor = .clear - return shape - } - scrim.position = projector.scenePoint( - fromPoints: CGPoint( - x: CGFloat(projector.safeWidth) / 2, - y: CGFloat(projector.safeHeight) / 2 - ) - ) - - for (index, card) in cards.enumerated() { - // Drawn at exactly the rect the hit test will read back. - let centre = projector.scenePoint( - fromPoints: CGPoint(x: rects[index].rect.midX, y: rects[index].rect.midY) - ) - - let backdrop = node("upgrade-card-\(card.upgrade.rawValue)") { () -> SKShapeNode in - let shape = SKShapeNode( - rectOf: CGSize(width: cardWidth, height: cardHeight), - cornerRadius: 8 - ) - shape.fillColor = HUDPalette.panel - shape.strokeColor = HUDPalette.frame - shape.lineWidth = 2 * Self.framingScale - shape.isAccessibilityElement = true - shape.accessibilityLabel = card.voiceOverLabel - return shape - } - backdrop.position = centre - - label( - key: "upgrade-glyph-\(index)", - text: upgradeGlyph(card.upgrade), - at: CGPoint(x: centre.x, y: centre.y + cardHeight * 0.30), - size: 16, - colour: HUDPalette.text - ) - label( - key: "upgrade-name-\(index)", - text: card.name.uppercased(), - at: CGPoint(x: centre.x, y: centre.y + cardHeight * 0.08), - size: 11, - colour: HUDPalette.text - ) - label( - key: "upgrade-role-\(index)", - text: card.role.uppercased(), - at: CGPoint(x: centre.x, y: centre.y - cardHeight * 0.08), - size: 8, - colour: HUDPalette.dim - ) - label( - key: "upgrade-numbers-\(index)", - text: card.numericSummary, - at: CGPoint(x: centre.x, y: centre.y - cardHeight * 0.28), - size: 7, - colour: HUDPalette.dim - ) - } - } - - /// Which card a touch landed on, read from the same rects that were drawn. - func upgradeCardIndex(atPoints point: CGPoint, projector: HUDProjector) -> UInt8? { - for (upgrade, rect) in upgradeCardRects(projector: projector) where rect.contains(point) { - return upgrade.selectionIndex - } - return nil - } - // MARK: - Text private func label( @@ -971,8 +851,8 @@ final class HUDRenderer { node.verticalAlignmentMode = .center return node } - node.text = text - node.fontSize = size * Self.framingScale + if node.text != text { node.text = text } + if node.fontSize != size * Self.framingScale { node.fontSize = size * Self.framingScale } node.fontColor = colour node.horizontalAlignmentMode = alignment node.position = alignment == .left && leftEdge != nil diff --git a/App/Instrumentation/RunInstrumentation.swift b/App/Instrumentation/RunInstrumentation.swift index c1b3734d..54f1691a 100644 --- a/App/Instrumentation/RunInstrumentation.swift +++ b/App/Instrumentation/RunInstrumentation.swift @@ -66,7 +66,7 @@ public final class FrameTimeCollector { let floorMs = 1000.0 / Double(PerformanceThresholds.sustainedPresentationFloorFps) var sustainedBelow = false var streak = 0 - for sample in sorted { + for sample in samples { if sample > floorMs { streak += 1 if streak >= 3 { sustainedBelow = true } @@ -95,6 +95,15 @@ public final class FrameTimeCollector { /// T900: samples memory pressure and thermal state alongside simulation telemetry. public struct DeviceTelemetrySample: Equatable, Sendable { + /// Never label an arbitrary connected phone as the baseline iPhone 12. + public static var hardwareModel: String { + var system = utsname() + uname(&system) + return withUnsafeBytes(of: &system.machine) { bytes in + String(decoding: bytes.prefix { $0 != 0 }, as: UTF8.self) + } + } + public var residentMemoryBytes: UInt64 public var thermalState: String public var memoryWarningCount: Int diff --git a/App/OutlineTextures.swift b/App/OutlineTextures.swift index be10901f..4d7d5aad 100644 --- a/App/OutlineTextures.swift +++ b/App/OutlineTextures.swift @@ -5,62 +5,111 @@ import SurveillanceCore /// D-094 faction outlines as pre-rendered textures (`animation.md` § 8b). /// /// For each source frame an actor shows, this builds once, on the CPU, a -/// texture holding only a one-pixel ring around the frame's opaque pixels: +/// texture holding a one-logical-pixel ring around the frame's opaque pixels: /// cool white and unbroken for the Player, warm red-orange and dashed for /// enemies. The ring is padded one pixel outside the frame so it is never /// clipped by the frame's edge. Drawing it is one extra sprite per actor and -/// no per-frame filter work; the cache is keyed by the source texture, which -/// `SpriteLibrary` loads once and keeps. +/// no per-frame filter work on a cache hit. BP-007 separates source storage +/// density from the bounded logical mask used for stroke and dash spacing. @MainActor final class OutlineTextures { struct Entry { let texture: SKTexture - /// Pixels of padding on every side of the source frame. + /// Mask pixels, not source-image pixels. let pad: Int + let maskSize: CGSize + var byteCost: Int { (Int(maskSize.width) + 2 * pad) * (Int(maskSize.height) + 2 * pad) * 4 } } - /// Outline thickness, in source pixels. Actor frames are authored at one - /// pixel per world unit, and one world unit is about one screen point at - /// the D-094 framing, so one pixel is the specified one-point outline. + /// Preserves the existing reference-framing stroke in logical mask units. nonisolated static let thicknessPixels = 1 /// Alpha at or above which a source pixel counts as part of the body. nonisolated static let opaqueThreshold: UInt8 = 64 - /// Largest frame this will outline; anything bigger is not an actor frame. + /// Mask budget is independent of the source image's storage density. nonisolated static let maxPixels = 256 * 256 + nonisolated static let maxSourceDimension = 1024 private struct Key: Hashable { let texture: ObjectIdentifier let faction: ActorContrast.Faction + let width: Int + let height: Int + let samplingScale: Int } - private var cache: [Key: Entry] = [:] - /// Frames that could not be outlined, so they are not retried every frame. - private var failed: Set = [] - /// Keeps each keyed source alive, so its identifier cannot be reused. - private var sources: [ObjectIdentifier: SKTexture] = [:] + private struct Cached { + let entry: Entry? + // Prevent ObjectIdentifier reuse, including failed entries, until eviction. + let source: SKTexture + } + private var cache: [Key: Cached] = [:] + private var recency: [Key] = [] + private let maxEntries: Int + private let maxBytes: Int + private(set) var retainedMaskBytes = 0 + struct Metrics { + var hits = 0 + var misses = 0 + var readbacks = 0 + var buildSeconds = 0.0 + } + private(set) var metrics = Metrics() + func resetMetrics() { metrics = Metrics() } var count: Int { cache.count } - func outline(for texture: SKTexture, faction: ActorContrast.Faction) -> Entry? { - let key = Key(texture: ObjectIdentifier(texture), faction: faction) - if let hit = cache[key] { return hit } - guard !failed.contains(key) else { return nil } - sources[key.texture] = texture - guard let made = Self.make(from: texture.cgImage(), faction: faction) else { - failed.insert(key) - return nil + // Engineering bounds, not a device residency/performance claim. + init(maxEntries: Int = 128, maxBytes: Int = 4 * 1024 * 1024) { + self.maxEntries = max(0, maxEntries) + self.maxBytes = max(0, maxBytes) + } + + func outline(for texture: SKTexture, faction: ActorContrast.Faction, logicalSize: CGSize, samplingScale: Int = 1, sourceImage: CGImage? = nil) -> Entry? { + guard let size = Self.maskDimensions(logicalSize, samplingScale: samplingScale) else { return nil } + let key = Key(texture: ObjectIdentifier(texture), faction: faction, width: size.width, height: size.height, samplingScale: samplingScale) + if let hit = cache[key] { + metrics.hits += 1 + recency.removeAll { $0 == key }; recency.append(key) + return hit.entry } - cache[key] = made + metrics.misses += 1 + let began = CFAbsoluteTimeGetCurrent() + let image: CGImage + if let sourceImage { image = sourceImage } + else { metrics.readbacks += 1; image = texture.cgImage() } + let made = Self.make(from: image, faction: faction, logicalSize: logicalSize, samplingScale: samplingScale) + metrics.buildSeconds += CFAbsoluteTimeGetCurrent() - began + let cost = made?.byteCost ?? 0 + guard maxEntries > 0, cost <= maxBytes else { return made } + while !recency.isEmpty && (cache.count >= maxEntries || retainedMaskBytes + cost > maxBytes) { + let old = recency.removeFirst() + retainedMaskBytes -= cache.removeValue(forKey: old)?.entry?.byteCost ?? 0 + } + cache[key] = Cached(entry: made, source: texture) + recency.append(key); retainedMaskBytes += cost return made } + nonisolated private static func maskDimensions(_ size: CGSize, samplingScale: Int = 1) -> (width: Int, height: Int)? { + guard (1...3).contains(samplingScale), size.width.isFinite, size.height.isFinite, + size.width > 0, size.height > 0, size.width <= 256, size.height <= 256 else { return nil } + // SpriteKit stores geometry at Float precision. Nearest logical pixels + // prevent a recovered 64.000002 canvas from becoming a different mask. + let width = max(1, Int(size.width.rounded())) * samplingScale + let height = max(1, Int(size.height.rounded())) * samplingScale + guard width <= 256, height <= 256 else { return nil } + return (width, height) + } + /// The outline ring for `image`, or nil when it cannot be read. - nonisolated static func make(from image: CGImage, faction: ActorContrast.Faction) -> Entry? { - let width = image.width - let height = image.height - guard width > 0, height > 0, width * height <= maxPixels else { return nil } - guard let source = rgba(image) else { return nil } - let pad = thicknessPixels + nonisolated static func make(from image: CGImage, faction: ActorContrast.Faction, logicalSize: CGSize? = nil, samplingScale: Int = 1) -> Entry? { + guard image.width > 0, image.height > 0, + image.width <= maxSourceDimension, image.height <= maxSourceDimension, + let size = maskDimensions(logicalSize ?? CGSize(width: image.width, height: image.height), samplingScale: samplingScale) else { return nil } + let width = size.width, height = size.height + guard width * height <= maxPixels, + let source = rgba(image, width: width, height: height) else { return nil } + let pad = thicknessPixels * samplingScale let outWidth = width + 2 * pad let outHeight = height + 2 * pad let colour = ActorContrast.outlineColour(faction) @@ -86,7 +135,7 @@ final class OutlineTextures { break search } } - guard near, ActorContrast.outlinePixelOn(x: ox, y: oy, faction: faction) else { continue } + guard near, ActorContrast.outlinePixelOn(x: ox / samplingScale, y: oy / samplingScale, faction: faction) else { continue } let index = (oy * outWidth + ox) * 4 out[index] = r out[index + 1] = g @@ -95,13 +144,13 @@ final class OutlineTextures { } } guard let texture = texture(pixels: out, width: outWidth, height: outHeight, smooth: false) else { return nil } - return Entry(texture: texture, pad: pad) + return Entry(texture: texture, pad: pad, maskSize: CGSize(width: width, height: height)) } /// Premultiplied RGBA bytes, rows top first. - nonisolated static func rgba(_ image: CGImage) -> [UInt8]? { - let width = image.width - let height = image.height + nonisolated static func rgba(_ image: CGImage, width requestedWidth: Int? = nil, height requestedHeight: Int? = nil) -> [UInt8]? { + let width = requestedWidth ?? image.width + let height = requestedHeight ?? image.height var bytes = [UInt8](repeating: 0, count: width * height * 4) let drawn = bytes.withUnsafeMutableBytes { buffer -> Bool in guard let context = CGContext( @@ -113,6 +162,7 @@ final class OutlineTextures { space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue ) else { return false } + context.interpolationQuality = .none context.draw(image, in: CGRect(x: 0, y: 0, width: width, height: height)) return true } diff --git a/App/SpriteLibrary.swift b/App/SpriteLibrary.swift index b5f8157d..52592f55 100644 --- a/App/SpriteLibrary.swift +++ b/App/SpriteLibrary.swift @@ -18,8 +18,8 @@ final class SpriteLibrary { let coverage: (backed: Int, total: Int) - init() { - let library = (try? ClipFrameLibrary.bundled()) + init(frames suppliedFrames: ClipFrameLibrary? = nil) { + let library = suppliedFrames ?? (try? ClipFrameLibrary.bundled()) ?? ClipFrameLibrary(clips: [:], deliveredPaths: [:]) frames = library coverage = library.coverage @@ -27,6 +27,40 @@ final class SpriteLibrary { var isEmpty: Bool { coverage.backed == 0 } +#if DEBUG || SS_RENDERER_TEST_SUPPORT + /// Isolated source-review library; never merges candidate paths into bundled delivery. + convenience init?(benchmarkFrames: ClipFrameLibrary, benchmarkTextures: [String: SKTexture]) { + let paths = Set(benchmarkFrames.deliveredPaths.values) + guard !paths.isEmpty, paths == Set(benchmarkTextures.keys) else { return nil } + self.init(frames: benchmarkFrames) + textures = benchmarkTextures + } + + /// All-or-nothing camera candidate injection; timing and frame order still + /// come from the admitted metadata. The test bundle owns candidate images. + func installBenchmarkCameraFrames(_ candidates: [String: [SKTexture]]) -> Bool { + let required: Set = ["camera_operational_idle", "camera_hit", + "camera_critical_enter", "camera_destroy", "camera_field_off", "camera_destroyed_idle"] + guard Set(candidates.keys) == required else { return false } + var replacements: [String: SKTexture] = [:] + for clip in required.sorted() { + guard let paths = frames.deliveredFrames(clipId: clip, direction: nil), + let supplied = candidates[clip], paths.count == supplied.count, + !paths.isEmpty else { return false } + for (path, texture) in zip(paths, supplied) { replacements[path] = texture } + } + textures.merge(replacements) { _, candidate in candidate } + animations.removeAll() + return true + } + + /// Observe the texture selected by SpriteKit; never infer it from tick phase. + func deliveredPath(for texture: SKTexture) -> String? { + textures.keys.sorted().first { textures[$0] === texture } + } +#endif + + func isBacked(clipId: String, direction: String? = nil) -> Bool { frames.isBacked(clipId: clipId, direction: direction) } @@ -39,6 +73,23 @@ final class SpriteLibrary { return texture(named: first) } + /// Settled appearance from the authored terminal frame, without replaying motion. + func lastTexture(clipId: String, direction: String? = nil) -> SKTexture? { + guard let paths = frames.deliveredFrames(clipId: clipId, direction: direction), + let last = paths.last + else { return nil } + return texture(named: last) + } + + /// Event-driven one-shots sample the same tick phase as their lifetime tracker. + func texture(clipId: String, direction: String?, elapsedTicks: UInt64, reducedMotion: Bool) -> SKTexture? { + guard let paths = frames.deliveredFrames(clipId: clipId, direction: direction), + let timing = frames.timing(clipId: clipId, direction: direction), + timing.frameUnits.count == paths.count else { return nil } + let index = reducedMotion ? paths.count - 1 : timing.frameIndex(atTickOffset: elapsedTicks) + return texture(named: paths[index]) + } + /// A repeating or one-shot animation for a clip, at its authored frame rate. func animation(clipId: String, direction: String? = nil) -> SKAction? { let key = "\(clipId)|\(direction ?? "-")" @@ -49,13 +100,29 @@ final class SpriteLibrary { let textures = paths.compactMap { texture(named: $0) } guard textures.count == paths.count, !textures.isEmpty else { return nil } - let perFrame = 1.0 / Double(max(1, clip.framesPerSecond)) - let sequence = SKAction.animate(with: textures, timePerFrame: perFrame, resize: false, restore: false) + guard let timing = frames.timing(clipId: clipId, direction: direction), + timing.frameUnits.count == textures.count else { return nil } + guard let sequence = Self.sequence(textures: textures, timing: timing) else { return nil } let action = clip.loop ? SKAction.repeatForever(sequence) : sequence animations[key] = action return action } + /// Shared renderer boundary for uniform and authored variable holds. + static func sequence(textures: [SKTexture], timing: ClipTiming) -> SKAction? { + guard textures.count == timing.frameUnits.count, !textures.isEmpty else { return nil } + let holds = timing.frameSeconds + let sequence: SKAction + if Set(timing.frameUnits).count == 1 { + sequence = SKAction.animate(with: textures, timePerFrame: holds[0], resize: false, restore: false) + } else { + sequence = SKAction.sequence(zip(textures, holds).map { texture, hold in + SKAction.animate(with: [texture], timePerFrame: hold, resize: false, restore: false) + }) + } + return sequence + } + /// Authored anchor for a clip, as a SpriteKit unit anchor point. /// /// The contract's anchor is in sprite-box pixels measured from the top-left; diff --git a/App/UpgradeSelectionView.swift b/App/UpgradeSelectionView.swift new file mode 100644 index 00000000..aa1f1217 --- /dev/null +++ b/App/UpgradeSelectionView.swift @@ -0,0 +1,77 @@ +import SwiftUI +import SurveillanceCore + +/// The scene publishes transitions only, not a SwiftUI update every game tick. +@MainActor +final class UpgradeSelectionModel: ObservableObject { + @Published private(set) var isPresented = false + @Published private(set) var submitted = false + + func synchronize(pending: Bool) { + guard pending != isPresented else { return } + isPresented = pending + submitted = false + } + func submit(_ index: UInt8) -> Bool { + guard isPresented, !submitted, UpgradeID.from(index: index) != nil else { return false } + submitted = true + return true + } +} + +/// T1035: native buttons provide the same action for touch, VoiceOver and +/// Switch Control. Equal columns collapse to an ordered scrolling list at +/// accessibility text sizes; no text is truncated or given a fixed height. +struct UpgradeSelectionView: View { + @ObservedObject var model: UpgradeSelectionModel + var onChoose: (UInt8) -> Void + @Environment(\.dynamicTypeSize) private var typeSize + + static func columnCount(width: CGFloat, accessibility: Bool) -> Int { + accessibility || width < 760 ? 1 : 3 + } + var body: some View { + if model.isPresented { + GeometryReader { geometry in + ZStack { + Color(red: 0.035, green: 0.05, blue: 0.07).ignoresSafeArea() + ScrollView { + VStack(alignment: .leading, spacing: 20) { + Text("Choose one upgrade").font(.title2.bold()) + .accessibilityAddTraits(.isHeader) + Text("The run is paused while you choose.").font(.body) + LazyVGrid(columns: Array(repeating: GridItem(.flexible(), alignment: .top), + count: Self.columnCount(width: geometry.size.width, accessibility: typeSize.isAccessibilitySize)), + alignment: .leading, spacing: 16) { + ForEach(UpgradePresentation.selectionCards(), id: \.selectionIndex) { card in + Button { onChoose(card.selectionIndex) } label: { + VStack(alignment: .leading, spacing: 12) { + Label(card.name, systemImage: card.symbolName).font(.headline) + Text(card.role).font(.subheadline.bold()) + Text(card.effect).font(.body) + Text(card.numericSummary).font(.body.monospacedDigit()) + Text(card.exclusions).font(.body) + } + .fixedSize(horizontal: false, vertical: true) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + .padding(18) + .background(Color.white.opacity(0.07), in: RoundedRectangle(cornerRadius: 12)) + .overlay(RoundedRectangle(cornerRadius: 12).stroke(Color.white.opacity(0.5))) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .disabled(model.submitted) + .accessibilityLabel(card.voiceOverLabel) + .accessibilityHint("Choose this upgrade and resume the run") + .accessibilityIdentifier("upgrade-\(card.upgrade.rawValue)") + } + } + } + .padding(24) + } + } + .foregroundStyle(.white) + } + } + } +} diff --git a/App/VFXRenderer.swift b/App/VFXRenderer.swift index 38af864e..e36407b3 100644 --- a/App/VFXRenderer.swift +++ b/App/VFXRenderer.swift @@ -48,6 +48,7 @@ final class VFXRenderer { /// entity that has just left the snapshot (a defeated enemy) still lands /// where it was. private var knownPositions: [EntityID: CGPoint] = [:] + var rememberedPositionCount: Int { knownPositions.count } private weak var worldRoot: SKNode? private var cameraBase: CGPoint = .zero private var frozen = false @@ -202,6 +203,8 @@ final class VFXRenderer { } private func remember(_ snap: PresentationSnapshot) { + // Ingest has consumed the previous snapshot; retain only this frame. + knownPositions.removeAll(keepingCapacity: true) knownPositions[snap.player.id] = CGPoint(x: snap.player.x, y: snap.player.y) for enemy in snap.enemies { knownPositions[enemy.id] = CGPoint(x: enemy.x, y: enemy.y) } for camera in snap.cameras { knownPositions[camera.id] = CGPoint(x: camera.x, y: camera.y) } @@ -218,6 +221,10 @@ final class VFXRenderer { // MARK: - Recipes + private static func cgPoint(_ point: VecQ8) -> CGPoint { + CGPoint(x: CGFloat(point.x.raw) / CGFloat(Q8.scale), y: CGFloat(point.y.raw) / CGFloat(Q8.scale)) + } + private func draw(_ p: VFXPresentation, events: [AuthoritativeEvent], snap: PresentationSnapshot) { let seconds = TimeInterval(p.lifetimeMs) / 1000 let player = CGPoint(x: snap.player.x, y: snap.player.y) @@ -229,8 +236,11 @@ final class VFXRenderer { case "exposureThreshold": node = edgeBrackets(seconds: seconds, reduced: p.reduced) case "playerHit": - let from = payloadEntity(p.sourceEntityId, events: events, key: "sourceEntityId").flatMap { position(of: $0, in: snap) } - node = impactArc(at: player, from: from, particles: p.particleCount, seconds: seconds, reduced: p.reduced) + let impact = VFXProjector.point(p.evidence, prefix: "impact").map(Self.cgPoint) ?? player + var origin = VFXProjector.point(p.evidence, prefix: "source").map(Self.cgPoint) + if case .array(let contributors) = p.evidence["contributors"], contributors.count != 1 { origin = nil } + if origin == impact { origin = nil } + node = impactArc(at: impact, from: origin, particles: p.particleCount, seconds: seconds, reduced: p.reduced) case "enemyHit": node = spark(at: source ?? player, particles: p.particleCount, seconds: seconds, reduced: p.reduced) case "enemyDefeat": @@ -244,10 +254,7 @@ final class VFXRenderer { reducedEchoPlaced: false ) case "ricochet": - let hits = events.filter { $0.type == .projectileHit }.compactMap { event -> CGPoint? in - position(of: payloadEntity(event.primaryEntityId, events: [event], key: "targetEntityId"), in: snap) - } - node = ricochetTrace(hits.isEmpty ? [source ?? player] : hits, particles: p.particleCount, seconds: seconds, reduced: p.reduced) + node = ricochetTrace(p.impactPoints.map(Self.cgPoint), particles: p.particleCount, seconds: seconds, reduced: p.reduced) case "lockdown": node = lockdownPulse(at: player, seconds: seconds, reduced: p.reduced) case "captainTelegraph": @@ -371,9 +378,14 @@ final class VFXRenderer { private func impactArc(at point: CGPoint, from: CGPoint?, particles: Int, seconds: TimeInterval, reduced: Bool) -> SKNode { let root = SKNode() root.position = point - let facing: CGFloat = from.map { atan2($0.y - point.y, $0.x - point.x) } ?? .pi / 2 + let facing: CGFloat = from.map { atan2($0.y - point.y, $0.x - point.x) } ?? 0 let path = CGMutablePath() - path.addArc(center: .zero, radius: 24, startAngle: facing - 0.7, endAngle: facing + 0.7, clockwise: false) + if from == nil { + path.addEllipse(in: CGRect(x: -24, y: -24, width: 48, height: 48)) + } else { + path.addArc(center: .zero, radius: 24, startAngle: facing - 0.7, endAngle: facing + 0.7, clockwise: false) + } + root.name = from == nil ? "damage-impact-ring" : "damage-impact-direction" let arc = SKShapeNode(path: path) arc.strokeColor = VFXPalette.damage arc.lineWidth = 4 @@ -390,7 +402,7 @@ final class VFXRenderer { root.addChild(ring) for index in 0.. SKTexture? { + outlines.outline(for: texture, faction: .player, logicalSize: size, sourceImage: image)?.texture + } + enum BenchmarkFieldContrast: String, CaseIterable { + case control, dark, paired + } + var benchmarkFieldContrast: BenchmarkFieldContrast = .control + + private func applyBenchmarkFieldContrast(_ shape: SKShapeNode) { + let childName = "benchmark-field-inner" + guard benchmarkFieldContrast != .control else { + shape.strokeColor = .clear + shape.childNode(withName: childName)?.removeFromParent() + return + } + // Authored comparison widths in logical world units, not field expansion. + shape.strokeColor = SKColor(white: 0.08, alpha: 1) + shape.lineWidth = benchmarkFieldContrast == .paired ? 3 : 1.5 + guard benchmarkFieldContrast == .paired else { + shape.childNode(withName: childName)?.removeFromParent() + return + } + let inner: SKShapeNode + if let existing = shape.childNode(withName: childName) as? SKShapeNode { inner = existing } + else { + inner = SKShapeNode(); inner.name = childName + inner.fillColor = .clear; inner.strokeColor = SKColor(white: 0.95, alpha: 1) + inner.lineWidth = 1; inner.zPosition = 0.1 + shape.addChild(inner) + } + inner.path = shape.path + } + + struct PlayerPlaybackObservation { + let deliveredPath: String? + let clipToken: String? + let position: CGPoint + let size: CGSize + let anchor: CGPoint + } + + /// Call after SpriteKit evaluates actions. Nil paths explicitly identify + /// textures outside the admitted library, including static review art. + func observePlayerPlayback() -> PlayerPlaybackObservation? { + guard let sprite = root.childNode(withName: "//sprite-player") as? SKSpriteNode, + let texture = sprite.texture else { return nil } + return PlayerPlaybackObservation(deliveredPath: sprites.deliveredPath(for: texture), + clipToken: activeClips["player"], position: sprite.position, + size: sprite.size, anchor: sprite.anchorPoint) + } + + /// Shares the shipping integrity/action policy, unlike the static art fixture. + @discardableResult + func installBenchmarkCameraFrames(_ frames: [String: [SKTexture]]) -> Bool { + guard sprites.installBenchmarkCameraFrames(frames) else { return false } + reset() + benchmarkCompleteCamera = true + return true + } + + func installBenchmarkArt(_ art: BenchmarkReviewArt) { + reset() + reviewArt = art + } +#endif + /// Admitted clip frames. Empty until assets are admitted, in which case /// every actor keeps its authored blockout. - private let sprites = SpriteLibrary() + private let sprites: SpriteLibrary private let environment = EnvironmentTextures() /// The arena does not move, so the ground is tiled once. private var groundBuilt = false @@ -69,6 +143,7 @@ final class WorldRenderer { /// Clip currently playing per actor key, so an animation is not restarted /// on every frame. private var activeClips: [String: String] = [:] + private var cameraPaths: [String: (CameraFieldGeometry.Key, CGPath)] = [:] private var layers: [Layer: SKNode] = [:] /// Live nodes by layer and stable key, so a key that disappears from the /// snapshot has its node removed rather than left on screen. @@ -86,7 +161,8 @@ final class WorldRenderer { /// D-094 soft ground shadow, generated once and shared by every actor. private lazy var shadowTexture = Self.makeShadowTexture() - init() { + init(sprites: SpriteLibrary? = nil) { + self.sprites = sprites ?? SpriteLibrary() for layer in Layer.allCases { let node = SKNode() node.zPosition = CGFloat(layer.rawValue) @@ -104,6 +180,7 @@ final class WorldRenderer { solidSignature = nil fogThinning.reset() activeClips = [:] + cameraPaths = [:] decorationsBuilt = false fogBuilt = false // reset() empties every layer, ground included, so the build flag has to @@ -124,9 +201,22 @@ final class WorldRenderer { at position: CGPoint, boxWidth: CGFloat, boxHeight: CGFloat, - layer: Layer + layer: Layer, + occurrence: ClipOccurrence? = nil, + tick: UInt64 = 0, + reducedMotion: Bool = false ) -> Bool { - guard sprites.isBacked(clipId: clipId, direction: direction) else { return false } + let selectedDirection = occurrence?.direction ?? direction + if key == "player", let art = reviewArt, art.playerPresentation == .staticComposition { + let sprite = node(layer, "sprite-\(key)") { SKSpriteNode() } as! SKSpriteNode + sprite.texture = art.player + sprite.size = CGSize(width: 64, height: 64) + sprite.anchorPoint = CGPoint(x: 0.5, y: 0.125) + sprite.position = position + sprite.removeAllActions() + return true + } + guard sprites.isBacked(clipId: clipId, direction: selectedDirection) else { return false } let node = node(layer, "sprite-\(key)") { () -> SKSpriteNode in SKSpriteNode() } @@ -137,15 +227,30 @@ final class WorldRenderer { boxHeight: boxHeight, boxWidth: boxWidth ) +#if DEBUG || SS_RENDERER_TEST_SUPPORT + if key == "player", let registration = benchmarkPlayerRegistration { + sprite.yScale = 1 + sprite.size = registration.size + sprite.anchorPoint = registration.anchor + } +#endif sprite.position = position - let token = "\(clipId)|\(direction ?? "-")" + let token = "\(clipId)|\(selectedDirection ?? "-")" + if let occurrence { + activeClips[key] = token + "|event|\(occurrence.startTick)" + sprite.removeAllActions() + sprite.texture = sprites.texture(clipId: clipId, direction: selectedDirection, + elapsedTicks: occurrence.elapsedTicks(at: tick), reducedMotion: reducedMotion) + return true + } if activeClips[key] != token { activeClips[key] = token sprite.removeAllActions() - if let animation = sprites.animation(clipId: clipId, direction: direction) { + sprite.texture = sprites.firstTexture(clipId: clipId, direction: selectedDirection) + if let animation = sprites.animation(clipId: clipId, direction: selectedDirection) { sprite.run(animation) - } else if let texture = sprites.firstTexture(clipId: clipId, direction: direction) { + } else if let texture = sprites.firstTexture(clipId: clipId, direction: selectedDirection) { sprite.texture = texture } } @@ -159,6 +264,7 @@ final class WorldRenderer { seen[layer, default: []].insert(key) if let existing = nodes[layer]?[key] { return existing } let created = make() + if created.name == nil { created.name = key } nodes[layer]?[key] = created layers[layer]?.addChild(created) return created @@ -175,6 +281,9 @@ final class WorldRenderer { for (key, node) in existing where !live.contains(key) { node.removeFromParent() existing.removeValue(forKey: key) + if layer == .actors, key.hasPrefix("sprite-") { + activeClips.removeValue(forKey: String(key.dropFirst(7))) + } } nodes[layer] = existing } @@ -204,14 +313,14 @@ final class WorldRenderer { self.ghost = ghost renderGround(snap) renderDecorations(snap) - renderFog(snap, reducedMotion: reducedMotion) + if reviewArt == nil { renderFog(snap, reducedMotion: reducedMotion) } renderSolids(snap) renderExtraction(snap) - renderCameras(snap) + renderCameras(snap, reducedMotion: reducedMotion) renderTelegraphs(snap) renderMines(snap) renderSpawnSockets(snap) - renderActors(snap) + renderActors(snap, reducedMotion: reducedMotion) renderProjectiles(snap) renderMarkers(snap) } @@ -241,7 +350,7 @@ final class WorldRenderer { while x < minX + width { let centre = CGPoint(x: x + tile / 2, y: y + tile / 2) let assetId = groundAssetId(at: centre, zones: snap.zones) - if let texture = environment.texture(assetId: assetId) { + if let texture = reviewArt?.paving ?? environment.texture(assetId: assetId) { let node = SKSpriteNode(texture: texture, size: CGSize(width: tile, height: tile)) node.position = centre // civic-seam-001 §5b: identical tiles read as an identical @@ -256,14 +365,47 @@ final class WorldRenderer { // Real paving changes at a kerb, so the zone boundary reads // as a civic detail rather than as an artifact of // rectangular zones. - addSurfaceTransition( - around: centre, assetId: assetId, tile: tile, snap: snap, layer: layer - ) + if reviewArt == nil { + addSurfaceTransition( + around: centre, assetId: assetId, tile: tile, snap: snap, layer: layer + ) + } } x += tile } y += tile } + if let reviewArt { + for (index, patch) in reviewArt.groundPatches.enumerated() where patch.tileUnits > 0 { + let bounds = patch.bounds + var y = bounds.minY + while y < bounds.maxY { + var x = bounds.minX + while x < bounds.maxX { + let width = min(patch.tileUnits, bounds.maxX - x) + let height = min(patch.tileUnits, bounds.maxY - y) + let region = CGRect(x: 0, y: 0, width: width / patch.tileUnits, height: height / patch.tileUnits) + let texture = SKTexture(rect: region, in: patch.texture) + texture.filteringMode = patch.texture.filteringMode + let node = SKSpriteNode(texture: texture, size: CGSize(width: width, height: height)) + node.name = "benchmark-ground-patch-\(index)" + node.position = CGPoint(x: x + width / 2, y: y + height / 2) + node.zPosition = 0.1 + layer.addChild(node) + x += patch.tileUnits + } + y += patch.tileUnits + } + } + for (index, line) in reviewArt.groundLines.enumerated() { + let path = CGMutablePath(); path.move(to: line.start); path.addLine(to: line.end) + let node = SKShapeNode(path: path) + node.name = "benchmark-ground-line-\(index)" + node.strokeColor = line.color; node.lineWidth = line.width + node.zPosition = 0.2 + layer.addChild(node) + } + } groundBuilt = true } @@ -434,8 +576,19 @@ final class WorldRenderer { /// this only has to draw what it is told. private func renderDecorations(_ snap: PresentationSnapshot) { guard !decorationsBuilt, let layer = layers[.decorations] else { return } + if let reviewArt { + for (index, prop) in reviewArt.props.enumerated() { + let sprite = SKSpriteNode(texture: prop.texture, size: prop.size) + sprite.name = "benchmark-prop-\(index)" + sprite.anchorPoint = prop.anchor + sprite.position = prop.position + layer.addChild(sprite) + } + decorationsBuilt = true + return + } var drew = false - for decoration in snap.decorations { + for (index, decoration) in snap.decorations.enumerated() { guard let texture = environment.texture(assetId: decoration.assetId) else { continue } let scale = CGFloat(decoration.scale) / 1000 let node = SKSpriteNode( @@ -445,6 +598,8 @@ final class WorldRenderer { height: texture.size().height * scale ) ) + let plane = EnvironmentTextures.projectionPlane(for: decoration.assetId) + node.name = "environment-\(plane)-\(index)-\(decoration.assetId)" node.position = CGPoint(x: decoration.center.x, y: decoration.center.y) // Counter-clockwise positive, applied directly — a decoration is not // a heading, so it does not go through radians(milliDegrees:), which @@ -502,27 +657,39 @@ final class WorldRenderer { continue } + if let reviewArt, id == reviewArt.buildingID { + let placement = reviewArt.building + let sprite = SKSpriteNode(texture: placement.texture, size: placement.size) + sprite.name = "benchmark-building" + sprite.anchorPoint = placement.anchor + sprite.position = placement.position + layer?.addChild(sprite) + continue + } let size = CGSize( width: CGFloat(solid.halfSize.x * 2), height: CGFloat(solid.halfSize.y * 2) ) let position = CGPoint(x: solid.center.x, y: solid.center.y) - // visual-assets-001 §3a: art is optional, and an unbacked solid - // keeps its authored blockout. The art is sized to the collision - // box exactly, so a player is never blocked by something that looks - // passable or walks through something that looks solid. + // visual-assets-001 §3a and §6: optional art sits on a readable + // solid foundation. Canvas dimensions alone do not prove that a + // texture's transparent margins represent a visible obstacle. + // Transparent padding in delivered art is not walkable space. + // A visible foundation expresses the entire authoritative footprint. + let foundation = SKShapeNode(rectOf: size) + foundation.name = "solid-footprint-\(id ?? String(index))" + foundation.position = position + foundation.fillColor = Palette.solidFill + foundation.strokeColor = Palette.solidStroke + foundation.lineWidth = 2 + foundation.zPosition = -0.1 + layer?.addChild(foundation) if let id, let texture = environment.solidTexture(solidId: id) { let node = SKSpriteNode(texture: texture, size: size) + node.name = "environment-upright-\(EnvironmentLibrary.solidAssetId(forSolidId: id))" node.position = position layer?.addChild(node) - } else { - let node = SKShapeNode(rectOf: size) - node.position = position - node.fillColor = Palette.solidFill - node.strokeColor = Palette.solidStroke - node.lineWidth = 2 - layer?.addChild(node) } } } @@ -622,7 +789,71 @@ final class WorldRenderer { endLayer(.extraction) } - private func renderCameras(_ snap: PresentationSnapshot) { + private func cameraFieldPath(_ camera: PresentationSnapshot.CameraSprite, solids: [AABB], key: String) -> CGPath { + let geometry = CameraFieldGeometry.Key(camera: camera, solids: solids) + if let cached = cameraPaths[key], cached.0 == geometry { return cached.1 } + let path = CameraFieldGeometry.path(geometry) + cameraPaths[key] = (geometry, path) + return path + } + + /// BP-004: lifetime belongs to the integrity transition, not its one-tick event. + /// Repeated snapshots cannot cancel destruction or restart a hit response. + private func playCamera(_ camera: PresentationSnapshot.CameraSprite, reducedMotion: Bool) -> Bool { + if reviewArt != nil { + let contact = node(.cameraHousings, "benchmark-camera-contact-\(camera.id.raw)") { + let shape = SKShapeNode(ellipseOf: CGSize(width: 22, height: 7)) + shape.fillColor = SKColor(white: 0, alpha: 0.24) + shape.strokeColor = .clear + return shape + } + contact.position = CGPoint(x: camera.x, y: camera.y - 2) + } + if let reviewArt, !benchmarkCompleteCamera { + let sprite = node(.actors, "sprite-camera-\(camera.id.raw)") { SKSpriteNode() } as! SKSpriteNode + sprite.texture = reviewArt.cameraStates[camera.integrity] ?? reviewArt.camera + sprite.size = CGSize(width: 64, height: 96) + sprite.anchorPoint = CGPoint(x: 0.5, y: 1 - 88.0 / 96.0) + sprite.position = CGPoint(x: camera.x, y: camera.y) + sprite.removeAllActions() + return true + } + let persistent = CameraPresentation.persistentState(integrity: camera.integrity) + let settledClip = CameraPresentation.clipId(for: persistent) + let transitionClip = camera.integrity <= 0 ? "camera_destroy" : settledClip + guard sprites.isBacked(clipId: transitionClip), + let settledTexture = sprites.lastTexture(clipId: settledClip) + else { return false } + let key = "camera-\(camera.id.raw)" + guard let sprite = node(.actors, "sprite-\(key)", make: { SKSpriteNode() }) as? SKSpriteNode + else { return false } + sprite.size = CGSize(width: 64, height: 96) + sprite.anchorPoint = sprites.anchorPoint(clipId: settledClip, boxHeight: 96, boxWidth: 64) + sprite.position = CGPoint(x: camera.x, y: camera.y) + let token = "camera|\(camera.integrity)|\(reducedMotion)" + guard activeClips[key] != token else { return true } + activeClips[key] = token + sprite.removeAllActions() + if reducedMotion { + sprite.texture = settledTexture + } else { + sprite.texture = sprites.firstTexture(clipId: transitionClip) + if let animation = sprites.animation(clipId: transitionClip) { + // Operational loops indefinitely. All damage responses finish on + // the latest integrity's settled picture; cancellation removes + // the entire old sequence when a newer integrity arrives. + let action = camera.integrity == 3 ? animation : SKAction.sequence([ + animation, SKAction.setTexture(settledTexture, resize: false) + ]) + sprite.run(action, withKey: "camera-state") + } else { + sprite.texture = settledTexture + } + } + return true + } + + private func renderCameras(_ snap: PresentationSnapshot, reducedMotion: Bool) { beginLayer(.cameraFields) beginLayer(.cameraHousings) beginLayer(.actors) @@ -641,25 +872,18 @@ final class WorldRenderer { // // A destroyed Camera keeps its housing, matching T411 keeping the // mount footprint: the pole is still standing, the head is wrecked. - if let family = camera.housingFamily, + if reviewArt == nil, !benchmarkCompleteCamera, let family = camera.housingFamily, let texture = environment.cameraTexture(for: family) { let housing = node(.cameraHousings, "housing-\(camera.id.raw)") { SKSpriteNode(texture: texture, size: CGSize(width: 64, height: 96)) } + (housing as? SKSpriteNode)?.anchorPoint = sprites.anchorPoint( + clipId: camera.clipId, boxHeight: 96, boxWidth: 64) housing.position = position } - // clip-metadata-001 names the clip; CameraPresentation picked it. - let drawn = playClip( - camera.clipId, - direction: nil, - key: key, - at: position, - boxWidth: 64, - boxHeight: 96, - layer: .actors - ) + let drawn = playCamera(camera, reducedMotion: reducedMotion) if !drawn { let body = node(.actors, key) { let shape = SKShapeNode(circleOfRadius: 12) @@ -670,18 +894,45 @@ final class WorldRenderer { (body as? SKShapeNode)?.fillColor = Palette.cameraFill(camera.presentationState) } + // BP-004: persistent damage-stage notches are independent of clip playback. + // Only standard Cameras enter this loop; Captain emitters cannot inherit them. + if camera.integrity == 2 || camera.integrity == 1 { + let marker = node(.actors, "camera-damage-\(camera.id.raw)") { + let badge = SKShapeNode(rectOf: CGSize(width: 13, height: 10), cornerRadius: 2) + badge.fillColor = SKColor(white: 0.08, alpha: 1) + badge.strokeColor = SKColor(white: 0.8, alpha: 1) + badge.lineWidth = 0.75 + badge.zPosition = 2 + for index in 0..<2 { + let notch = SKShapeNode(rectOf: CGSize(width: 2, height: 6)) + notch.name = "notch-\(index)" + notch.fillColor = SKColor(white: 0.95, alpha: 1) + notch.strokeColor = .clear + notch.position.x = CGFloat(index * 5 - 2) + badge.addChild(notch) + } + return badge + } + marker.position = CGPoint(x: camera.x - 13, y: camera.y + 18) + marker.childNode(withName: "notch-0")?.position.x = camera.integrity == 2 ? 0 : -2.5 + marker.childNode(withName: "notch-1")?.position.x = 2.5 + marker.childNode(withName: "notch-1")?.isHidden = camera.integrity == 2 + } + guard camera.fieldVisible else { continue } let fieldKey = "field-\(camera.id.raw)" let field = node(.cameraFields, fieldKey) { SKShapeNode() } if let shape = field as? SKShapeNode { - shape.path = Geometry.conePath( - range: camera.range, - headingMilli: camera.headingMilli, - fieldAngleMilli: camera.fieldAngleMilli - ) - shape.position = CGPoint(x: camera.x, y: camera.y) + let geometry = CameraFieldGeometry.Key(camera: camera, solids: snap.solids) + if cameraPaths[fieldKey]?.0 != geometry || shape.path == nil { + shape.path = cameraFieldPath(camera, solids: snap.solids, key: fieldKey) + } + shape.position = .zero shape.fillColor = camera.detecting ? Palette.cameraFieldDetecting : Palette.cameraField shape.strokeColor = .clear +#if DEBUG || SS_RENDERER_TEST_SUPPORT + applyBenchmarkFieldContrast(shape) +#endif } } @@ -699,14 +950,16 @@ final class WorldRenderer { if let field = snap.captainField { let node = node(.cameraFields, "captain-field") { SKShapeNode() } if let shape = node as? SKShapeNode { - shape.path = Geometry.conePath( - range: field.range, - headingMilli: field.headingMilli, - fieldAngleMilli: field.fieldAngleMilli - ) - shape.position = CGPoint(x: field.x, y: field.y) + let geometry = CameraFieldGeometry.Key(camera: field, solids: snap.solids) + if cameraPaths["captain-field"]?.0 != geometry || shape.path == nil { + shape.path = cameraFieldPath(field, solids: snap.solids, key: "captain-field") + } + shape.position = .zero shape.fillColor = Palette.captainField shape.strokeColor = .clear +#if DEBUG || SS_RENDERER_TEST_SUPPORT + applyBenchmarkFieldContrast(shape) +#endif } } renderPatrolCones(snap) @@ -813,20 +1066,24 @@ final class WorldRenderer { endLayer(.spawnSockets) } - private func renderActors(_ snap: PresentationSnapshot) { + private func renderActors(_ snap: PresentationSnapshot, reducedMotion: Bool) { let playerPosition = CGPoint(x: snap.player.x, y: snap.player.y) // clip-metadata-001 sprite box for the Player. // A reaction (hurt) is preferred and the state clip is the fallback, // so an unbacked reaction never costs the Player its sprite. - let playerDrawn = [snap.playerReactionClipId, snap.playerClipId].compactMap { $0 }.contains { - playClip( - $0, + let playerCandidates: [(String?, ClipOccurrence?)] = [ + (snap.playerReactionClipId, snap.playerReactionOccurrence), (snap.playerClipId, nil) + ] + let playerDrawn = playerCandidates.contains { candidate in + guard let clip = candidate.0 else { return false } + return playClip( + clip, direction: snap.playerDirection, key: "player", at: playerPosition, boxWidth: 64, boxHeight: 64, - layer: .actors + layer: .actors, occurrence: candidate.1, tick: snap.tick, reducedMotion: reducedMotion ) } if let ghost { @@ -869,15 +1126,20 @@ final class WorldRenderer { let position = CGPoint(x: enemy.x, y: enemy.y) let box = Self.spriteBox(for: enemy.role) // Reaction first, then the state clip, then the blockout below. - let drawn = [enemy.reactionClipId, enemy.clipId].compactMap { $0 }.contains { - playClip( - $0, + let candidates: [(String?, ClipOccurrence?)] = [ + (enemy.reactionClipId, enemy.reactionOccurrence), + (enemy.clipId, enemy.heldClipOccurrence), (enemy.fallbackClipId, nil) + ] + let drawn = candidates.contains { candidate in + guard let clip = candidate.0 else { return false } + return playClip( + clip, direction: enemy.direction, key: key, at: position, boxWidth: box.width, boxHeight: box.height, - layer: .actors + layer: .actors, occurrence: candidate.1, tick: snap.tick, reducedMotion: reducedMotion ) } if !drawn { @@ -913,7 +1175,7 @@ final class WorldRenderer { at: CGPoint(x: fallen.x, y: fallen.y), boxWidth: box.width, boxHeight: box.height, - layer: .actors + layer: .actors, occurrence: fallen.heldClipOccurrence, tick: snap.tick, reducedMotion: reducedMotion ) } endLayer(.actors) @@ -957,7 +1219,7 @@ final class WorldRenderer { // Blockout: the outline is a stroke on the silhouette, dashed for // enemies, so the fallback carries faction by shape too. shape.strokeColor = .clear - let outline = (shape.childNode(withName: Self.outlineName) as? SKShapeNode) ?? { + let outline = (shape.children.first { $0.name == Self.outlineName } as? SKShapeNode) ?? { let path = Geometry.silhouettePath(silhouette) let made = SKShapeNode( path: ActorContrast.dashed(faction) @@ -977,27 +1239,31 @@ final class WorldRenderer { /// Points each live sprite's outline at its current frame. Called after /// actions are evaluated (`GameScene.didEvaluateActions`) so the outline /// never trails the animation, and at the end of every render. - func syncOutlines() { + func syncOutlines(samplingScale: Int = 1) { for (sprite, faction) in outlineTargets { - let outline = (sprite.childNode(withName: Self.outlineName) as? SKSpriteNode) ?? { + let outline = (sprite.children.first { $0.name == Self.outlineName } as? SKSpriteNode) ?? { let made = SKSpriteNode() made.name = Self.outlineName sprite.addChild(made) return made }() + // SpriteKit's size includes this node's scale. The child inherits + // that scale, so its mask and placement must use the unscaled canvas. + let logicalSize = CGSize(width: abs(sprite.size.width / sprite.xScale), + height: abs(sprite.size.height / sprite.yScale)) guard let texture = sprite.texture, - let entry = outlines.outline(for: texture, faction: faction) + let entry = outlines.outline(for: texture, faction: faction, logicalSize: logicalSize, samplingScale: samplingScale) else { outline.isHidden = true continue } outline.isHidden = false if outline.texture !== entry.texture { outline.texture = entry.texture } - let source = texture.size() + let source = entry.maskSize let pad = CGFloat(entry.pad) let grownW = (source.width + 2 * pad) / max(source.width, 1) let grownH = (source.height + 2 * pad) / max(source.height, 1) - outline.size = CGSize(width: sprite.size.width * grownW, height: sprite.size.height * grownH) + outline.size = CGSize(width: logicalSize.width * grownW, height: logicalSize.height * grownH) outline.anchorPoint = CGPoint( x: (sprite.anchorPoint.x * source.width + pad) / (source.width + 2 * pad), y: (sprite.anchorPoint.y * source.height + pad) / (source.height + 2 * pad) @@ -1121,7 +1387,7 @@ extension WorldRenderer { for layer in [Layer.fogLow, Layer.fogHigh] { layers[layer]?.alpha = split.base for tile in layers[layer]?.children ?? [] { - tile.childNode(withName: FogDensity.boostName)?.alpha = split.boost + tile.children.first { $0.name == FogDensity.boostName }?.alpha = split.boost } } @@ -1216,8 +1482,8 @@ enum Palette { static let queryMarker = SKColor(white: 0.8, alpha: 0.7) /// D-089 `?` marker. Neutral: the glyph, not the colour, carries the state. static let unawareMarker = SKColor(white: 0.92, alpha: 0.95) - static let playerProjectile = SKColor(white: 0.98, alpha: 1) - static let playerProjectileTrail = SKColor(white: 0.85, alpha: 0.35) + static let playerProjectile = SKColor(red: 1, green: 0.94, blue: 0.78, alpha: 1) + static let playerProjectileTrail = SKColor(red: 1, green: 0.94, blue: 0.78, alpha: 0.35) static let hostileProjectile = SKColor(red: 0.95, green: 0.45, blue: 0.30, alpha: 1) static let hostileProjectileTrail = SKColor(red: 0.95, green: 0.45, blue: 0.30, alpha: 0.30) static let mineArmed = SKColor(red: 0.85, green: 0.35, blue: 0.25, alpha: 0.35) diff --git a/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_01@4x.png b/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_01@4x.png new file mode 100644 index 00000000..4d256014 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_01@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_02@4x.png b/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_02@4x.png new file mode 100644 index 00000000..4e607493 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_02@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_03@4x.png b/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_03@4x.png new file mode 100644 index 00000000..a1495fd4 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_criticalEnter_none_03@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_destroy_none_01@4x.png b/AppTests/BenchmarkAssets/actor_camera_destroy_none_01@4x.png new file mode 100644 index 00000000..91e63cef Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_destroy_none_01@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_destroy_none_02@4x.png b/AppTests/BenchmarkAssets/actor_camera_destroy_none_02@4x.png new file mode 100644 index 00000000..f82c2636 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_destroy_none_02@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_destroy_none_03@4x.png b/AppTests/BenchmarkAssets/actor_camera_destroy_none_03@4x.png new file mode 100644 index 00000000..7e622d4f Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_destroy_none_03@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_destroy_none_04@4x.png b/AppTests/BenchmarkAssets/actor_camera_destroy_none_04@4x.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_destroy_none_04@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_destroyedIdle_none_01@4x.png b/AppTests/BenchmarkAssets/actor_camera_destroyedIdle_none_01@4x.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_destroyedIdle_none_01@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_destroyedIdle_none_02@4x.png b/AppTests/BenchmarkAssets/actor_camera_destroyedIdle_none_02@4x.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_destroyedIdle_none_02@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_fieldOff_none_01@4x.png b/AppTests/BenchmarkAssets/actor_camera_fieldOff_none_01@4x.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_fieldOff_none_01@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_hit_none_01@4x.png b/AppTests/BenchmarkAssets/actor_camera_hit_none_01@4x.png new file mode 100644 index 00000000..81e16541 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_hit_none_01@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_hit_none_02@4x.png b/AppTests/BenchmarkAssets/actor_camera_hit_none_02@4x.png new file mode 100644 index 00000000..3255642f Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_hit_none_02@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_01@4x.png b/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_01@4x.png new file mode 100644 index 00000000..5f240f02 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_01@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_02@4x.png b/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_02@4x.png new file mode 100644 index 00000000..51164166 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_02@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_03@4x.png b/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_03@4x.png new file mode 100644 index 00000000..7634b184 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_03@4x.png differ diff --git a/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_04@4x.png b/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_04@4x.png new file mode 100644 index 00000000..51164166 Binary files /dev/null and b/AppTests/BenchmarkAssets/actor_camera_operationalIdle_none_04@4x.png differ diff --git a/AppTests/BenchmarkAssets/building-constrained.png b/AppTests/BenchmarkAssets/building-constrained.png new file mode 100644 index 00000000..a006e812 Binary files /dev/null and b/AppTests/BenchmarkAssets/building-constrained.png differ diff --git a/AppTests/BenchmarkAssets/building.png b/AppTests/BenchmarkAssets/building.png new file mode 100644 index 00000000..783999e6 Binary files /dev/null and b/AppTests/BenchmarkAssets/building.png differ diff --git a/AppTests/BenchmarkAssets/camera-state-critical.png b/AppTests/BenchmarkAssets/camera-state-critical.png new file mode 100644 index 00000000..3ad33ff0 Binary files /dev/null and b/AppTests/BenchmarkAssets/camera-state-critical.png differ diff --git a/AppTests/BenchmarkAssets/camera-state-damaged.png b/AppTests/BenchmarkAssets/camera-state-damaged.png new file mode 100644 index 00000000..b27173f6 Binary files /dev/null and b/AppTests/BenchmarkAssets/camera-state-damaged.png differ diff --git a/AppTests/BenchmarkAssets/camera-state-destroyed.png b/AppTests/BenchmarkAssets/camera-state-destroyed.png new file mode 100644 index 00000000..9bae1220 Binary files /dev/null and b/AppTests/BenchmarkAssets/camera-state-destroyed.png differ diff --git a/AppTests/BenchmarkAssets/camera-state-intact.png b/AppTests/BenchmarkAssets/camera-state-intact.png new file mode 100644 index 00000000..5f240f02 Binary files /dev/null and b/AppTests/BenchmarkAssets/camera-state-intact.png differ diff --git a/AppTests/BenchmarkAssets/camera.png b/AppTests/BenchmarkAssets/camera.png new file mode 100644 index 00000000..68c9b57e Binary files /dev/null and b/AppTests/BenchmarkAssets/camera.png differ diff --git a/AppTests/BenchmarkAssets/newsbox.png b/AppTests/BenchmarkAssets/newsbox.png new file mode 100644 index 00000000..8ef19ba9 Binary files /dev/null and b/AppTests/BenchmarkAssets/newsbox.png differ diff --git a/AppTests/BenchmarkAssets/painted-player-east.png b/AppTests/BenchmarkAssets/painted-player-east.png new file mode 100644 index 00000000..26292f99 Binary files /dev/null and b/AppTests/BenchmarkAssets/painted-player-east.png differ diff --git a/AppTests/BenchmarkAssets/painted-player-north.png b/AppTests/BenchmarkAssets/painted-player-north.png new file mode 100644 index 00000000..23ee3cee Binary files /dev/null and b/AppTests/BenchmarkAssets/painted-player-north.png differ diff --git a/AppTests/BenchmarkAssets/painted-player-sources.json b/AppTests/BenchmarkAssets/painted-player-sources.json new file mode 100644 index 00000000..be61b002 --- /dev/null +++ b/AppTests/BenchmarkAssets/painted-player-sources.json @@ -0,0 +1,124 @@ +{ + "sourceSha256": "487017f138f4a055eb36ae7d6c14837364b08091c9b4a8805e54124ca1c7c33b", + "alphaRule": "<=32 zero; >=240 opaque; linear between; RGB unchanged", + "scalePolicy": "single scale across all views; no individual body normalization", + "rootStatus": "manual approximate; not measured contact landmarks", + "exports": [ + { + "direction": "south", + "region": [ + 0, + 0, + 768, + 512 + ], + "sourceRoot": [ + 464, + 477 + ], + "scale": 0.6797385620915033, + "canvas": [ + 384, + 384 + ], + "anchor": [ + 192, + 336 + ], + "alphaBounds": [ + 108, + 39, + 273, + 338 + ], + "sha256": "51cb032d4ae340a5dfe48b701aa41c619edc9e888480992adf80ddce2fd10765" + }, + { + "direction": "east", + "region": [ + 768, + 0, + 1536, + 512 + ], + "sourceRoot": [ + 1078, + 491 + ], + "scale": 0.6797385620915033, + "canvas": [ + 384, + 384 + ], + "anchor": [ + 192, + 336 + ], + "alphaBounds": [ + 129, + 29, + 244, + 340 + ], + "sha256": "4fde2784bde49883ed700d4e28c61569a5888540038fc27a70c473a996ce2291" + }, + { + "direction": "north", + "region": [ + 0, + 512, + 768, + 1024 + ], + "sourceRoot": [ + 462, + 971 + ], + "scale": 0.6797385620915033, + "canvas": [ + 384, + 384 + ], + "anchor": [ + 192, + 336 + ], + "alphaBounds": [ + 107, + 37, + 275, + 338 + ], + "sha256": "3df61b3be11248326958afb90779e4c4938eea6a4933ac3b46e5cef30e800b5f" + }, + { + "direction": "west", + "region": [ + 768, + 512, + 1536, + 1024 + ], + "sourceRoot": [ + 1079, + 985 + ], + "scale": 0.6797385620915033, + "canvas": [ + 384, + 384 + ], + "anchor": [ + 192, + 336 + ], + "alphaBounds": [ + 142, + 26, + 248, + 340 + ], + "sha256": "d64ea685fde7bc107dc836cb7aa751e2ab6353cfc172de0c01ac5c70f87e3f9b" + } + ] +} diff --git a/AppTests/BenchmarkAssets/painted-player-south.png b/AppTests/BenchmarkAssets/painted-player-south.png new file mode 100644 index 00000000..b0b4f26d Binary files /dev/null and b/AppTests/BenchmarkAssets/painted-player-south.png differ diff --git a/AppTests/BenchmarkAssets/painted-player-west.png b/AppTests/BenchmarkAssets/painted-player-west.png new file mode 100644 index 00000000..07a49db4 Binary files /dev/null and b/AppTests/BenchmarkAssets/painted-player-west.png differ diff --git a/AppTests/BenchmarkAssets/player-east.png b/AppTests/BenchmarkAssets/player-east.png new file mode 100644 index 00000000..c67d9524 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-east.png differ diff --git a/AppTests/BenchmarkAssets/player-north.png b/AppTests/BenchmarkAssets/player-north.png new file mode 100644 index 00000000..173139b7 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-north.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-00.png b/AppTests/BenchmarkAssets/player-source-s-00.png new file mode 100644 index 00000000..e1c0878f Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-00.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-01.png b/AppTests/BenchmarkAssets/player-source-s-01.png new file mode 100644 index 00000000..cdbfa1d3 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-01.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-02.png b/AppTests/BenchmarkAssets/player-source-s-02.png new file mode 100644 index 00000000..72011a37 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-02.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-03.png b/AppTests/BenchmarkAssets/player-source-s-03.png new file mode 100644 index 00000000..f92f542a Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-03.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-04.png b/AppTests/BenchmarkAssets/player-source-s-04.png new file mode 100644 index 00000000..58d5832c Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-04.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-05.png b/AppTests/BenchmarkAssets/player-source-s-05.png new file mode 100644 index 00000000..b622c229 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-05.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-06.png b/AppTests/BenchmarkAssets/player-source-s-06.png new file mode 100644 index 00000000..6a4bc64d Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-06.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-07.png b/AppTests/BenchmarkAssets/player-source-s-07.png new file mode 100644 index 00000000..11609202 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-07.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-08.png b/AppTests/BenchmarkAssets/player-source-s-08.png new file mode 100644 index 00000000..11e24d53 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-08.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-09.png b/AppTests/BenchmarkAssets/player-source-s-09.png new file mode 100644 index 00000000..b9378834 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-09.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-10.png b/AppTests/BenchmarkAssets/player-source-s-10.png new file mode 100644 index 00000000..c3fbbb75 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-10.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-11.png b/AppTests/BenchmarkAssets/player-source-s-11.png new file mode 100644 index 00000000..86805314 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-11.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-12.png b/AppTests/BenchmarkAssets/player-source-s-12.png new file mode 100644 index 00000000..30d60e20 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-12.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-13.png b/AppTests/BenchmarkAssets/player-source-s-13.png new file mode 100644 index 00000000..200ab944 Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-13.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-14.png b/AppTests/BenchmarkAssets/player-source-s-14.png new file mode 100644 index 00000000..3f06cc7e Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-14.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-15.png b/AppTests/BenchmarkAssets/player-source-s-15.png new file mode 100644 index 00000000..99763e1a Binary files /dev/null and b/AppTests/BenchmarkAssets/player-source-s-15.png differ diff --git a/AppTests/BenchmarkAssets/player-source-s-poses.json b/AppTests/BenchmarkAssets/player-source-s-poses.json new file mode 100644 index 00000000..a5f217b1 --- /dev/null +++ b/AppTests/BenchmarkAssets/player-source-s-poses.json @@ -0,0 +1,1138 @@ +[ + { + "time": 0.0, + "legs": [ + { + "side": "right", + "phase": 0.0, + "contact": true, + "angle": 0.0, + "hip": [ + -2.1, + 0, + 25.6 + ], + "knee": [ + -3.05, + 9.722185017242719, + 16.2819198066071 + ], + "ankle": [ + -4.0, + 7.5, + 3.0 + ], + "heel": [ + -4.0, + 5.0, + 0.0 + ], + "toe": [ + -4.0, + 15.0, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 3.05, + 10.979498495542883, + 17.802685540112446 + ], + "ankle": [ + 4.0, + 0.3403332420232523, + 9.547041246158123 + ], + "heel": [ + 4.0, + -3.3423278551831803, + 8.247807917182026 + ], + "toe": [ + 4.0, + 5.250690328386904, + 3.133119412802321 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.03125, + "legs": [ + { + "side": "right", + "phase": 0.03125, + "contact": true, + "angle": 10.43701171875, + "hip": [ + -2.1, + 0, + 24.21731656763491 + ], + "knee": [ + -3.05, + 9.392407254453556, + 14.566918339246186 + ], + "ankle": [ + -4.0, + 0.6675535055610231, + 4.309022499434011 + ], + "heel": [ + -4.0, + -2.334546545071932, + 1.8115447145499082 + ], + "toe": [ + -4.0, + 7.5, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.28125, + "contact": false, + "angle": 25.654792785644535, + "hip": [ + 2.1, + 0, + 24.21731656763491 + ], + "knee": [ + 3.05, + 12.762014121605349, + 19.918654501369918 + ], + "ankle": [ + 4.0, + 4.174064737759603, + 9.545871587392423 + ], + "heel": [ + 4.0, + 0.6216735173416836, + 7.923984841316212 + ], + "toe": [ + 4.0, + 9.635862559488197, + 3.59450497504524 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.0625, + "legs": [ + { + "side": "right", + "phase": 0.0625, + "contact": true, + "angle": 30.76171875, + "hip": [ + -2.1, + 0, + 23.892893218813455 + ], + "knee": [ + -3.05, + 7.1210219845479985, + 12.463171179516785 + ], + "ankle": [ + -4.0, + -4.910357086363652, + 6.413921833355803 + ], + "heel": [ + -4.0, + -8.593018183570084, + 5.114688504379704 + ], + "toe": [ + -4.0, + 0.0, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.3125, + "contact": false, + "angle": 20.39337158203125, + "hip": [ + 2.1, + 0, + 23.892893218813455 + ], + "knee": [ + 3.05, + 13.160341050694882, + 21.037560763670065 + ], + "ankle": [ + 4.0, + 6.993858484790961, + 9.065844396982998 + ], + "heel": [ + 4.0, + 3.605161874054547, + 7.125036503248138 + ], + "toe": [ + 4.0, + 12.978384961297573, + 3.6404003734959485 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.09375, + "legs": [ + { + "side": "right", + "phase": 0.09375, + "contact": true, + "angle": 44.49462890625, + "hip": [ + -2.1, + 0, + 25.523879532511287 + ], + "knee": [ + -3.05, + 1.8395204467309032, + 12.183577267342823 + ], + "ankle": [ + -4.0, + -10.74734394022944, + 7.3962664455693545 + ], + "heel": [ + -4.0, + -14.633161515468025, + 7.008423987905262 + ], + "toe": [ + -4.0, + -7.5, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.34375, + "contact": false, + "angle": 15.234947204589844, + "hip": [ + 2.1, + 0, + 25.523879532511287 + ], + "knee": [ + 3.05, + 12.699350418755877, + 21.043477882921724 + ], + "ankle": [ + 4.0, + 8.896410243605064, + 8.125074497664558 + ], + "heel": [ + 4.0, + 5.695936050882409, + 5.88744965383656 + ], + "toe": [ + 4.0, + 15.344499994023804, + 3.25967229737887 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.125, + "legs": [ + { + "side": "right", + "phase": 0.125, + "contact": false, + "angle": 44.49462890625, + "hip": [ + -2.1, + 0, + 25.975 + ], + "knee": [ + -3.05, + -2.8344734398144453, + 12.8101505774283 + ], + "ankle": [ + -4.0, + -15.224907614437024, + 7.535243851774764 + ], + "heel": [ + -4.0, + -19.11072518967561, + 7.1474013941106715 + ], + "toe": [ + -4.0, + -11.977563674207584, + 0.13897740620540966 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.375, + "contact": false, + "angle": 10.43701171875, + "hip": [ + 2.1, + 0, + 25.975 + ], + "knee": [ + 3.05, + 12.152164710564719, + 20.172208185079754 + ], + "ankle": [ + 4.0, + 10.17684541349199, + 6.851336829398395 + ], + "heel": [ + 4.0, + 7.174745362859033, + 4.353859044514293 + ], + "toe": [ + 4.0, + 17.009291907930965, + 2.542314329964384 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.15625, + "legs": [ + { + "side": "right", + "phase": 0.15625, + "contact": false, + "angle": 42.580604553222656, + "hip": [ + -2.1, + 0, + 26.880330085889913 + ], + "knee": [ + -3.05, + -1.3395211180996371, + 13.480584447477032 + ], + "ankle": [ + -4.0, + -13.618975300847653, + 7.952247900757734 + ], + "heel": [ + -4.0, + -17.489670998175235, + 7.434836247729181 + ], + "toe": [ + -4.0, + -10.126409226106636, + 0.668568733361071 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.40625, + "contact": false, + "angle": 6.257057189941406, + "hip": [ + 2.1, + 0, + 26.880330085889913 + ], + "knee": [ + 3.05, + 10.862479416211167, + 18.920804915856923 + ], + "ankle": [ + 4.0, + 11.167309763179647, + 5.457722859374945 + ], + "heel": [ + 4.0, + 8.35523452021924, + 2.7480673779660707 + ], + "toe": [ + 4.0, + 18.295663734401302, + 1.658174246583095 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.1875, + "legs": [ + { + "side": "right", + "phase": 0.1875, + "contact": false, + "angle": 39.48211669921875, + "hip": [ + -2.1, + 0, + 26.99951905283833 + ], + "knee": [ + -3.05, + 3.0381263483431677, + 13.880171192083093 + ], + "ankle": [ + -4.0, + -9.332183937511147, + 8.558242647684274 + ], + "heel": [ + -4.0, + -13.169253681545225, + 7.8323667771538865 + ], + "toe": [ + -4.0, + -5.451022880445972, + 1.4739932979563335 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.4375, + "contact": false, + "angle": 2.95257568359375, + "hip": [ + 2.1, + 0, + 26.99951905283833 + ], + "knee": [ + 3.05, + 9.492264293654205, + 17.447324614939916 + ], + "ankle": [ + 4.0, + 11.906522633381758, + 4.1989716354538995 + ], + "heel": [ + 4.0, + 9.255313267294374, + 1.3317275061250875 + ], + "toe": [ + 4.0, + 19.242038384150042, + 0.8166338832135329 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.21875, + "legs": [ + { + "side": "right", + "phase": 0.21875, + "contact": false, + "angle": 35.45665740966797, + "hip": [ + -2.1, + 0, + 26.15588571617311 + ], + "knee": [ + -3.05, + 7.735775582101285, + 15.132942545523743 + ], + "ankle": [ + -4.0, + -4.333685817181288, + 9.160036926712419 + ], + "heel": [ + -4.0, + -8.110333047586515, + 8.166590553186126 + ], + "toe": [ + -4.0, + 0.035212655096725776, + 2.3657212040714084 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.46875, + "contact": false, + "angle": 0.7810592651367188, + "hip": [ + 2.1, + 0, + 26.15588571617311 + ], + "knee": [ + 3.05, + 9.518212796834746, + 16.629547219448817 + ], + "ankle": [ + 4.0, + 11.560305798910447, + 3.3187487396102244 + ], + "heel": [ + 4.0, + 9.019643185637126, + 0.3531065687616959 + ], + "toe": [ + 4.0, + 19.018714035295414, + 0.2167902325658626 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.25, + "legs": [ + { + "side": "right", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + -2.1, + 0, + 25.6 + ], + "knee": [ + -3.05, + 10.979498495542883, + 17.802685540112446 + ], + "ankle": [ + -4.0, + 0.3403332420232523, + 9.547041246158123 + ], + "heel": [ + -4.0, + -3.3423278551831803, + 8.247807917182026 + ], + "toe": [ + -4.0, + 5.250690328386904, + 3.133119412802321 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.0, + "contact": true, + "angle": 0.0, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 3.05, + 9.722185017242719, + 16.2819198066071 + ], + "ankle": [ + 4.0, + 7.5, + 3.0 + ], + "heel": [ + 4.0, + 5.0, + 0.0 + ], + "toe": [ + 4.0, + 15.0, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.28125, + "legs": [ + { + "side": "right", + "phase": 0.28125, + "contact": false, + "angle": 25.654792785644535, + "hip": [ + -2.1, + 0, + 24.21731656763491 + ], + "knee": [ + -3.05, + 12.762014121605349, + 19.918654501369918 + ], + "ankle": [ + -4.0, + 4.174064737759603, + 9.545871587392423 + ], + "heel": [ + -4.0, + 0.6216735173416836, + 7.923984841316212 + ], + "toe": [ + -4.0, + 9.635862559488197, + 3.59450497504524 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.03125, + "contact": true, + "angle": 10.43701171875, + "hip": [ + 2.1, + 0, + 24.21731656763491 + ], + "knee": [ + 3.05, + 9.392407254453556, + 14.566918339246186 + ], + "ankle": [ + 4.0, + 0.6675535055610231, + 4.309022499434011 + ], + "heel": [ + 4.0, + -2.334546545071932, + 1.8115447145499082 + ], + "toe": [ + 4.0, + 7.5, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.3125, + "legs": [ + { + "side": "right", + "phase": 0.3125, + "contact": false, + "angle": 20.39337158203125, + "hip": [ + -2.1, + 0, + 23.892893218813455 + ], + "knee": [ + -3.05, + 13.160341050694882, + 21.037560763670065 + ], + "ankle": [ + -4.0, + 6.993858484790961, + 9.065844396982998 + ], + "heel": [ + -4.0, + 3.605161874054547, + 7.125036503248138 + ], + "toe": [ + -4.0, + 12.978384961297573, + 3.6404003734959485 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.0625, + "contact": true, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 23.892893218813455 + ], + "knee": [ + 3.05, + 7.1210219845479985, + 12.463171179516785 + ], + "ankle": [ + 4.0, + -4.910357086363652, + 6.413921833355803 + ], + "heel": [ + 4.0, + -8.593018183570084, + 5.114688504379704 + ], + "toe": [ + 4.0, + 0.0, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.34375, + "legs": [ + { + "side": "right", + "phase": 0.34375, + "contact": false, + "angle": 15.234947204589844, + "hip": [ + -2.1, + 0, + 25.523879532511287 + ], + "knee": [ + -3.05, + 12.699350418755877, + 21.043477882921724 + ], + "ankle": [ + -4.0, + 8.896410243605064, + 8.125074497664558 + ], + "heel": [ + -4.0, + 5.695936050882409, + 5.88744965383656 + ], + "toe": [ + -4.0, + 15.344499994023804, + 3.25967229737887 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.09375, + "contact": true, + "angle": 44.49462890625, + "hip": [ + 2.1, + 0, + 25.523879532511287 + ], + "knee": [ + 3.05, + 1.8395204467309032, + 12.183577267342823 + ], + "ankle": [ + 4.0, + -10.74734394022944, + 7.3962664455693545 + ], + "heel": [ + 4.0, + -14.633161515468025, + 7.008423987905262 + ], + "toe": [ + 4.0, + -7.5, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.375, + "legs": [ + { + "side": "right", + "phase": 0.375, + "contact": false, + "angle": 10.43701171875, + "hip": [ + -2.1, + 0, + 25.975 + ], + "knee": [ + -3.05, + 12.152164710564719, + 20.172208185079754 + ], + "ankle": [ + -4.0, + 10.17684541349199, + 6.851336829398395 + ], + "heel": [ + -4.0, + 7.174745362859033, + 4.353859044514293 + ], + "toe": [ + -4.0, + 17.009291907930965, + 2.542314329964384 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.125, + "contact": false, + "angle": 44.49462890625, + "hip": [ + 2.1, + 0, + 25.975 + ], + "knee": [ + 3.05, + -2.8344734398144453, + 12.8101505774283 + ], + "ankle": [ + 4.0, + -15.224907614437024, + 7.535243851774764 + ], + "heel": [ + 4.0, + -19.11072518967561, + 7.1474013941106715 + ], + "toe": [ + 4.0, + -11.977563674207584, + 0.13897740620540966 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.40625, + "legs": [ + { + "side": "right", + "phase": 0.40625, + "contact": false, + "angle": 6.257057189941406, + "hip": [ + -2.1, + 0, + 26.880330085889913 + ], + "knee": [ + -3.05, + 10.862479416211167, + 18.920804915856923 + ], + "ankle": [ + -4.0, + 11.167309763179647, + 5.457722859374945 + ], + "heel": [ + -4.0, + 8.35523452021924, + 2.7480673779660707 + ], + "toe": [ + -4.0, + 18.295663734401302, + 1.658174246583095 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.15625, + "contact": false, + "angle": 42.580604553222656, + "hip": [ + 2.1, + 0, + 26.880330085889913 + ], + "knee": [ + 3.05, + -1.3395211180996371, + 13.480584447477032 + ], + "ankle": [ + 4.0, + -13.618975300847653, + 7.952247900757734 + ], + "heel": [ + 4.0, + -17.489670998175235, + 7.434836247729181 + ], + "toe": [ + 4.0, + -10.126409226106636, + 0.668568733361071 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.4375, + "legs": [ + { + "side": "right", + "phase": 0.4375, + "contact": false, + "angle": 2.95257568359375, + "hip": [ + -2.1, + 0, + 26.99951905283833 + ], + "knee": [ + -3.05, + 9.492264293654205, + 17.447324614939916 + ], + "ankle": [ + -4.0, + 11.906522633381758, + 4.1989716354538995 + ], + "heel": [ + -4.0, + 9.255313267294374, + 1.3317275061250875 + ], + "toe": [ + -4.0, + 19.242038384150042, + 0.8166338832135329 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.1875, + "contact": false, + "angle": 39.48211669921875, + "hip": [ + 2.1, + 0, + 26.99951905283833 + ], + "knee": [ + 3.05, + 3.0381263483431677, + 13.880171192083093 + ], + "ankle": [ + 4.0, + -9.332183937511147, + 8.558242647684274 + ], + "heel": [ + 4.0, + -13.169253681545225, + 7.8323667771538865 + ], + "toe": [ + 4.0, + -5.451022880445972, + 1.4739932979563335 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.46875, + "legs": [ + { + "side": "right", + "phase": 0.46875, + "contact": false, + "angle": 0.7810592651367188, + "hip": [ + -2.1, + 0, + 26.15588571617311 + ], + "knee": [ + -3.05, + 9.518212796834746, + 16.629547219448817 + ], + "ankle": [ + -4.0, + 11.560305798910447, + 3.3187487396102244 + ], + "heel": [ + -4.0, + 9.019643185637126, + 0.3531065687616959 + ], + "toe": [ + -4.0, + 19.018714035295414, + 0.2167902325658626 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.21875, + "contact": false, + "angle": 35.45665740966797, + "hip": [ + 2.1, + 0, + 26.15588571617311 + ], + "knee": [ + 3.05, + 7.735775582101285, + 15.132942545523743 + ], + "ankle": [ + 4.0, + -4.333685817181288, + 9.160036926712419 + ], + "heel": [ + 4.0, + -8.110333047586515, + 8.166590553186126 + ], + "toe": [ + 4.0, + 0.035212655096725776, + 2.3657212040714084 + ], + "contactWorld": null + } + ] + } +] diff --git a/AppTests/BenchmarkAssets/player-source-s-record.json b/AppTests/BenchmarkAssets/player-source-s-record.json new file mode 100644 index 00000000..d017b40f --- /dev/null +++ b/AppTests/BenchmarkAssets/player-source-s-record.json @@ -0,0 +1,45 @@ +{ + "status": "TEST_ONLY_SOURCE_CANDIDATE_NOT_ADMITTED", + "sourceRevision": "SS-player-low-recovery / 2026-10-15", + "specRevision": "d602775", + "sourceCanvas": [ + 384, + 416 + ], + "rootPixels": [ + 192, + 336 + ], + "logicalSize": [ + 64, + 69.33333333333333 + ], + "cycleSeconds": 0.5, + "frameDurationSeconds": 0.03125, + "projection": "ground x unchanged, ground y times 0.5; upright player keeps uniform scale; no diagonal view claim", + "sourceFiles": { + "player-source-s-00.png": "5e02b733d2d98fda30182f72474229da98dfdcaa0ec6e224516d1cb2b12818ab", + "player-source-s-01.png": "b66fa74858d7b985408fffacbbb6e1e726a4c151cb3f6d276685c2eca5939d76", + "player-source-s-02.png": "fa572799b1f5e6100f6bf44144cb53f7e60d623fea4775cf15180bf9fe60e481", + "player-source-s-03.png": "8b3cff719376bdb53753f7edd9f8e7e14e057f084e559b7a8010341c65a7e135", + "player-source-s-04.png": "bd9f280d21c012ad213008717ed38b722d4c4508c865d1a54ccceb1c430bbab5", + "player-source-s-05.png": "5357867d303bec4c557d579140aad8950ce7af55dbf921f72b47b8440a3a9911", + "player-source-s-06.png": "ecca42bcf42c6579ded197561ff28b11527e711f86f3d2b1d292e3b10f749218", + "player-source-s-07.png": "22851d1a9f9ed39ae1346e4d55fc671d77c7ae1a7ba57df296391124c280b039", + "player-source-s-08.png": "4a67667d049a7f200be8afba9216c7de595e4e36041bfa456985e39f46da9586", + "player-source-s-09.png": "b176a98b54e4fff271771ba8d3dc111f41e53143edb56ad6f314833543eff72d", + "player-source-s-10.png": "a007408ad31e9f16192467bcd3365093330af3cb988d38eeb020f9ab2f8579dc", + "player-source-s-11.png": "75d9f2f7e6420493b82b57fd1b5c8da320bf1c8f7303c2df1df2571f2312c753", + "player-source-s-12.png": "e33bcce13131aaf90a2602f5f300e4130e8400b2cec15e6172d9c70ca824f273", + "player-source-s-13.png": "80e1077ad763526f0273c566c2171c3d1f473d9cd50116b493f6b2c59df9502f", + "player-source-s-14.png": "6cd87469eda680c0248af0da7e5e9c665b3b60b2a9b39e8fb2dc98bafac4af0e", + "player-source-s-15.png": "af62b1aa0521cc85edec1cbeb9986f4c503f6b2743c3a84570f0fa040d2f880f", + "player-source-s-poses.json": "f1e7f9d6763dcaabac9a89bab9d40fce5adbeb51eb5833dec10072691fc6042c" + }, + "reviewStatus": "PROPOSED_MOTION_TEST_FIXTURE_PENDING_RENDERER_VALIDATION", + "specSupplement": { + "path": "specs/001-single-level-vertical-slice/benchmark-production.md", + "status": "local working-tree clarification, not a production pin migration", + "sha256": "6aea951e182ebd29da77629296d04783fcd6f7010132abf2953ed0d1aa6ff777" + } +} diff --git a/AppTests/BenchmarkAssets/player-south.png b/AppTests/BenchmarkAssets/player-south.png new file mode 100644 index 00000000..269496bb Binary files /dev/null and b/AppTests/BenchmarkAssets/player-south.png differ diff --git a/AppTests/BenchmarkAssets/player-west.png b/AppTests/BenchmarkAssets/player-west.png new file mode 100644 index 00000000..dd81f13a Binary files /dev/null and b/AppTests/BenchmarkAssets/player-west.png differ diff --git a/AppTests/BenchmarkAssets/service-building-v3-registered.png b/AppTests/BenchmarkAssets/service-building-v3-registered.png new file mode 100644 index 00000000..37db3430 Binary files /dev/null and b/AppTests/BenchmarkAssets/service-building-v3-registered.png differ diff --git a/AppTests/BenchmarkAssets/sources.json b/AppTests/BenchmarkAssets/sources.json new file mode 100644 index 00000000..5f86ae2b --- /dev/null +++ b/AppTests/BenchmarkAssets/sources.json @@ -0,0 +1,290 @@ +[ + { + "source": "outputs/SS-building-repair-study.png", + "sourceHash": "380a47326c758b3cc86389106a9f704b7e8a86584e0d1934b7979ffbe0dbd859", + "sourceCrop": null, + "alphaCrop": [ + 551, + 34, + 1258, + 841 + ], + "export": "building.png", + "pixels": [ + 673, + 768 + ], + "sha256": "6f0d74055f2f3b785c7b74af35f37198a3df08851bf0e156f579339d3d3e6780" + }, + { + "source": "outputs/SS-municipal-camera-sheet-v2.png", + "sourceHash": "257f0fa5cb35c72245cb0066c043691df2b2ce659efa06050903e00d12039fac", + "sourceCrop": [ + 0, + 0, + 512, + 512 + ], + "alphaCrop": [ + 132, + 33, + 371, + 473 + ], + "export": "camera.png", + "pixels": [ + 256, + 384 + ], + "sha256": "502844058e956dec1c2d8b6cf4959202e1eee963a44e8136b7661807995cd4e8", + "registration": { + "canvasPixels": [ + 256, + 384 + ], + "bodyPixels": [ + 170, + 312 + ], + "pastePixels": [ + 84, + 40 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "note": "Pole ground center visually registered; camera body preserved as single sprite." + } + }, + { + "source": "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/outputs/SS-player-registered-candidates/south-registered-256.png", + "export": "player-south.png", + "sha256": "0f2af941bdc5eed06239a3d7e10ac823c0b6878734347bebdbfb43120a63fd4c", + "pixels": [ + 256, + 256 + ] + }, + { + "source": "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/outputs/SS-player-registered-candidates/north-registered-256.png", + "export": "player-north.png", + "sha256": "4775a0d6a7a19f6761a3d499e568197867e80f9fb05628527d2c993fc2ab6b66", + "pixels": [ + 256, + 256 + ] + }, + { + "source": "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/outputs/SS-player-registered-candidates/east-registered-256.png", + "export": "player-east.png", + "sha256": "adbae2a5d422cd26eec9e25ba7603a4b899bb7207ec5175135345a6d2368ad19", + "pixels": [ + 256, + 256 + ] + }, + { + "source": "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/outputs/SS-player-registered-candidates/west-registered-256.png", + "export": "player-west.png", + "sha256": "c67dde4392e4d019eab4f9934015a5c0f45d4bc202c4efaf8638d1a10b55083f", + "pixels": [ + 256, + 256 + ] + }, + { + "source": "/Users/appliedalchemylabs/.codex/generated_images/01a137ae-17b7-7103-897c-17913923752e/exec-35cb5d32-a337-47fb-9a02-d7eae1a52fb7.png", + "sourceHash": "5f37e00ce1018445cc5c792db7d9aed11b325676f8d7a88450452bc615a81fd4", + "alphaCrop": [ + 134, + 61, + 862, + 1541 + ], + "alphaRemap": "0 through 32;255 from240; linear between", + "export": "newsbox.png", + "pixels": [ + 378, + 768 + ], + "sha256": "a05de0ea875e599ebbf6d2ca29a657d17b01795e6670ab1594896827d8c6f0da" + }, + { + "source": "/Users/appliedalchemylabs/.codex/generated_images/01a137ae-17b7-7103-897c-17913923752e/exec-ab2d56a0-4aba-4f30-9c70-a22001b17692.png", + "sourceHash": "d35318688d047141ab494a226f6bd85393f6096565799870f203f964bd0f4fa0", + "alphaCrop": [ + 101, + 59, + 935, + 1470 + ], + "alphaRemap": "0 through 32;255 from240; linear between", + "export": "tree.png", + "pixels": [ + 454, + 768 + ], + "sha256": "f002a45f3d30f669d410f6fbcc1785284fce22368b834dc261821e31ad4426b6" + }, + { + "source": "outputs/SS-camera-state-study/source.png", + "sourceHash": "1177d7a6f75d7913016f94f6c3b99662a551ae2660b31584e70b9eea52815854", + "export": "camera-state-intact.png", + "pixels": [ + 256, + 384 + ], + "sha256": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "registration": { + "state": "intact", + "sourceCell": [ + 0, + 0, + 512, + 768 + ], + "sourceBaseAnchor": [ + 235.5, + 692 + ], + "scale": 0.47416413373860183, + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "alphaRemap": "<=32 zero, >=240 opaque, linear between", + "sha256": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "lowerPoleBaseDifferentMaskPixels": 0 + } + }, + { + "source": "outputs/SS-camera-state-study/source.png", + "sourceHash": "1177d7a6f75d7913016f94f6c3b99662a551ae2660b31584e70b9eea52815854", + "export": "camera-state-damaged.png", + "pixels": [ + 256, + 384 + ], + "sha256": "dfc4f40eec4303c1836ffce056ab8aaa979bf1d385b65816a7087e63e149ad96", + "registration": { + "state": "damaged", + "sourceCell": [ + 512, + 0, + 1024, + 768 + ], + "sourceBaseAnchor": [ + 214.5, + 692 + ], + "scale": 0.47416413373860183, + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "alphaRemap": "<=32 zero, >=240 opaque, linear between", + "sha256": "dfc4f40eec4303c1836ffce056ab8aaa979bf1d385b65816a7087e63e149ad96", + "lowerPoleBaseDifferentMaskPixels": 67 + } + }, + { + "source": "outputs/SS-camera-state-study/source.png", + "sourceHash": "1177d7a6f75d7913016f94f6c3b99662a551ae2660b31584e70b9eea52815854", + "export": "camera-state-critical.png", + "pixels": [ + 256, + 384 + ], + "sha256": "b24234d6a58659700539415e5b0e4b930a928ff6f491e082110d19d1ca96a962", + "registration": { + "state": "critical", + "sourceCell": [ + 1024, + 0, + 1536, + 768 + ], + "sourceBaseAnchor": [ + 193.0, + 692 + ], + "scale": 0.47416413373860183, + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "alphaRemap": "<=32 zero, >=240 opaque, linear between", + "sha256": "b24234d6a58659700539415e5b0e4b930a928ff6f491e082110d19d1ca96a962", + "lowerPoleBaseDifferentMaskPixels": 29 + } + }, + { + "source": "outputs/SS-camera-state-study/source.png", + "sourceHash": "1177d7a6f75d7913016f94f6c3b99662a551ae2660b31584e70b9eea52815854", + "export": "camera-state-destroyed.png", + "pixels": [ + 256, + 384 + ], + "sha256": "b9e56b70624e7714f11c417b453d51fe4f57bce073e920b5392ab879999d9af9", + "registration": { + "state": "destroyed", + "sourceCell": [ + 1536, + 0, + 2048, + 768 + ], + "sourceBaseAnchor": [ + 172.0, + 692 + ], + "scale": 0.47416413373860183, + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "alphaRemap": "<=32 zero, >=240 opaque, linear between", + "sha256": "b9e56b70624e7714f11c417b453d51fe4f57bce073e920b5392ab879999d9af9", + "lowerPoleBaseDifferentMaskPixels": 27 + } + } +] diff --git a/AppTests/BenchmarkAssets/tree.png b/AppTests/BenchmarkAssets/tree.png new file mode 100644 index 00000000..e8c7507e Binary files /dev/null and b/AppTests/BenchmarkAssets/tree.png differ diff --git a/AppTests/BenchmarkCaptureTests.swift b/AppTests/BenchmarkCaptureTests.swift new file mode 100644 index 00000000..53231eae --- /dev/null +++ b/AppTests/BenchmarkCaptureTests.swift @@ -0,0 +1,1355 @@ +import SpriteKit +import UIKit +import XCTest +@testable import SSRuntime +@testable import SurveillanceCore + +/// BP-001/BP-006 evidence capture, not visual acceptance or a performance test. +/// Uses the shipping GameScene/renderer/HUD. Images remain in the test result. +final class BenchmarkCaptureTests: XCTestCase { + @MainActor + func testCaptureReactionTurningReadability() throws { + let view = SKView(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + view.isPaused = true + let scene = SKScene(size: view.bounds.size) + scene.anchorPoint = CGPoint(x: 0.5, y: 0.5) + scene.backgroundColor = UIColor(white: 0.22, alpha: 1) + view.presentScene(scene) + defer { view.presentScene(nil) } + let state = try Simulation.make(seed: 1).state + let crop = CGRect(x: -352, y: -163, width: 704, height: 326) + for reduced in [false, true] { + let renderer = WorldRenderer() + scene.addChild(renderer.root) + var tracker = ReactionClipTracker(catalog: try ClipCatalog.bundled()) + tracker.ingest(TickResult(tick: 100, events: [AuthoritativeEvent( + tick: 100, phase: 10, type: .playerDamaged, primary: EntityID(1), insertion: 0)], + digest: "", outcome: .playing), previousEnemies: [], currentEnemies: [], playerDirection: "w") + XCTAssertEqual(tracker.playerReaction?.endTick, 109) + for tick in UInt64(100)...110 { + var snap = PresentationSnapshot(state) + snap.tick = tick + snap.player.x = 0 + snap.player.y = Int(tick - 100) * 4 - 20 + snap.playerDirection = tick == 100 ? "w" : "n" + snap.playerClipId = "player_move" + snap.enemies = []; snap.projectiles = []; snap.telegraphs = []; snap.mines = [] + snap.cameras = []; snap.captainHousings = []; snap.captainField = nil + snap.patrolCones = []; snap.spawnSockets = []; snap.solids = []; snap.solidIds = [] + tracker.apply(to: &snap) + renderer.render(snap, reducedMotion: reduced) + XCTAssertEqual(snap.playerReactionClipId != nil, tick < 109) + if tick < 109 { + XCTAssertEqual(snap.playerReactionOccurrence?.direction, "w") + } + let texture = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let attachment = XCTAttachment(image: UIImage(cgImage: texture.cgImage())) + attachment.name = "BP003-reaction-turn-\(reduced ? "reduced" : "normal")-\(tick)" + attachment.lifetime = .keepAlways + add(attachment) + } + renderer.root.removeFromParent() + } + let evidence = XCTAttachment(string: """ + BP-003 native-size event-facing comparison; not benchmark art acceptance. + Actual WorldRenderer, bundled v1 player textures, ReactionClipTracker. + 704x326-point SKView, backing scale \(view.contentScaleFactor). + Synthetic presentation path: player moves north 4 units/tick; live facing + turns west→north at tick 101. Hurt occurrence begins west at tick 100, + selects three frames at 20 fps, expires exclusively at tick 109. + Normal and Reduced Motion captured for every tick 100...110. + SKView is paused: event frames are tick-sampled; fallback locomotion + shows its initial/settled pose, not action-time animation evidence. + No authoritative collision, attack or damage scenario is asserted. + """) + evidence.name = "BP003-reaction-turn-record" + evidence.lifetime = .keepAlways + add(evidence) + } + + @MainActor + func testExactAndVariableTimingReachSpriteKit() throws { + let image = UIGraphicsImageRenderer(size: CGSize(width: 2, height: 2)).image { context in + UIColor.white.setFill() + context.fill(CGRect(x: 0, y: 0, width: 2, height: 2)) + } + let texture = SKTexture(image: image) + let elite = try ClipTiming(unitsPerSecond: 112, frameUnits: Array(repeating: 3, count: 16)) + let eliteAction = try XCTUnwrap(SpriteLibrary.sequence(textures: Array(repeating: texture, count: 16), timing: elite)) + // #120: SpriteKit stores this action duration at Float precision. + XCTAssertEqual(eliteAction.duration, Double(Float(3.0 / 7.0))) + let variable = try ClipTiming(unitsPerSecond: 24, frameUnits: [1, 2, 1, 2]) + let variableAction = try XCTUnwrap(SpriteLibrary.sequence(textures: Array(repeating: texture, count: 4), timing: variable)) + XCTAssertEqual(variableAction.duration, 0.25) + XCTAssertNil(SpriteLibrary.sequence(textures: [texture], timing: variable)) + } + + @MainActor + func testCaptureCurrentRuntimeBaseline() throws { + let view = SKView(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + view.isPaused = true + let scene = GameScene(size: view.bounds.size) + view.presentScene(scene) + defer { view.presentScene(nil) } + scene.session.audioSettings = .init(effectsEnabled: false, hapticsEnabled: false, musicEnabled: false) + scene.skipIntroIfRunning() + scene.update(0) + let camera = try XCTUnwrap(scene.camera) + let bottomLeft = scene.convert(CGPoint(x: -352, y: -163), from: camera) + let topRight = scene.convert(CGPoint(x: 352, y: 163), from: camera) + let crop = CGRect(x: bottomLeft.x, y: bottomLeft.y, + width: topRight.x - bottomLeft.x, height: topRight.y - bottomLeft.y) + let texture = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let image = UIImage(cgImage: texture.cgImage()) + XCTAssertGreaterThan(image.size.width, 0) + XCTAssertGreaterThan(image.size.height, 0) + let attachment = XCTAttachment(image: image) + attachment.name = "BP001-current-runtime-baseline" + attachment.lifetime = .keepAlways + add(attachment) + let snapshot = scene.session.snapshot + let geometry = SKNode() + geometry.zPosition = 999 + scene.addChild(geometry) + for solid in snapshot.solids { + let outline = SKShapeNode(rectOf: CGSize(width: solid.halfSize.x * 2, height: solid.halfSize.y * 2)) + outline.position = CGPoint(x: solid.center.x, y: solid.center.y) + outline.strokeColor = .magenta + outline.fillColor = .clear + outline.lineWidth = 1 + geometry.addChild(outline) + } + let geometryTexture = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let geometryAttachment = XCTAttachment(image: UIImage(cgImage: geometryTexture.cgImage())) + geometryAttachment.name = "BP001-current-runtime-solid-overlay" + geometryAttachment.lifetime = .keepAlways + add(geometryAttachment) + geometry.removeFromParent() + let record = """ + Status: CAPTURED, not visually accepted. + Source: real GameScene, WorldRenderer and HUD; current shipping art only. + Harness: BenchmarkCaptureTests/testCaptureCurrentRuntimeBaseline. + Logical viewport: 704 x 326 points. SKView display scale: \(view.contentScaleFactor). + Export pixels: \(texture.cgImage().width) x \(texture.cgImage().height). + Simulation tick: \(snapshot.tick). Intro skipped through normal scene method. + Camera position: \(camera.position). Scale: \(camera.xScale),\(camera.yScale). + Capture crop in scene coordinates: \(crop). + Simulation advanced once; SKActions paused. This is a still baseline, + not animation, dense encounter, new-art admission or device timing proof. + Device: \(UIDevice.current.model), \(UIDevice.current.systemName) \(UIDevice.current.systemVersion). + """ + let evidence = XCTAttachment(string: record) + evidence.name = "BP001-current-runtime-capture-record" + evidence.lifetime = .keepAlways + add(evidence) + } +#if DEBUG + @MainActor + private func captureProjectedLegalEncounter(scene: SKScene, view: SKView, + snap: PresentationSnapshot, zoom: CGFloat, label: String, prefix: String = "BP010-legal", treatment: String = "control", + framing: String = "legacy", arena: CGRect? = nil) throws { + let camera = try XCTUnwrap(scene.camera) + let originalCamera = camera.position + var hudExclusions: [CGRect] = [] + var safeRegion: CGRect? + defer { camera.position = originalCamera } + if framing != "legacy" { + let bounds = try XCTUnwrap(arena) + let player = try XCTUnwrap(scene.childNode(withName: "//sprite-player") as? SKSpriteNode) + let root = scene.convert(player.position, from: try XCTUnwrap(player.parent)) + let viewport = CGSize(width: 704, height: 326) + if framing == "contained" { + camera.position = try XCTUnwrap(BenchmarkProjectionGeometry.containedCenter( + desired: originalCamera, bounds: bounds, viewport: viewport, magnification: zoom)) + } else { + let canvas = CGRect(x: -player.anchorPoint.x * player.size.width, + y: -player.anchorPoint.y * player.size.height, + width: player.size.width, height: player.size.height) + if framing == "hud-safe" { + // GameScene mounts its HUD at z=1000 on the camera. Measure + // rendered nodes, including labels, rather than copying HUD constants. + let hudRoots = camera.children.filter { $0.zPosition == 1000 } + XCTAssertEqual(hudRoots.count, 1) + let hudRoot = try XCTUnwrap(hudRoots.first) + hudExclusions = hudRoot.children.filter { !$0.isHidden && $0.alpha > 0 }.compactMap { + let frame = $0.calculateAccumulatedFrame() + guard !frame.isNull, !frame.isInfinite, frame.width > 0, frame.height > 0 else { return nil } + let a = hudRoot.convert(CGPoint(x: frame.minX, y: frame.minY), to: camera) + let b = hudRoot.convert(CGPoint(x: frame.maxX, y: frame.maxY), to: camera) + return CGRect(x: a.x, y: a.y, width: b.x-a.x, height: b.y-a.y) + } + XCTAssertFalse(hudExclusions.isEmpty) + safeRegion = try XCTUnwrap(BenchmarkProjectionGeometry.unobstructedRegion( + viewport: CGRect(x: -352, y: -163, width: 704, height: 326), + exclusions: hudExclusions, + minimumSize: CGSize(width: canvas.width * zoom, height: canvas.height * zoom))) + } + camera.position = try XCTUnwrap(BenchmarkProjectionGeometry.playerVisibleCenter( + desired: originalCamera, bounds: bounds, viewport: viewport, + magnification: zoom, player: root, canvas: canvas, safeRegion: safeRegion)) + } + } + let center = camera.position + let crop = CGRect(x: center.x - 352, y: center.y - 163, width: 704, height: 326) + var actors: [SKSpriteNode] = [] + scene.enumerateChildNodes(withName: "//sprite-*") { node, _ in + if let sprite = node as? SKSpriteNode { actors.append(sprite) } + } + XCTAssertFalse(actors.isEmpty) + scene.enumerateChildNodes(withName: "//environment-upright-*") { node, _ in + if let sprite = node as? SKSpriteNode { actors.append(sprite) } + } + XCTAssertEqual(EnvironmentTextures.projectionPlane(for: "env_prop_rail_strip"), .ground) + XCTAssertEqual(EnvironmentTextures.projectionPlane(for: "env_prop_utility_covers"), .ground) + XCTAssertEqual(EnvironmentTextures.projectionPlane(for: "env_prop_street_tree"), .upright) + XCTAssertEqual(EnvironmentTextures.projectionPlane(for: "env_motif_repair"), .unresolved) + XCTAssertEqual(EnvironmentTextures.projectionPlane(for: "unknown"), .unresolved) + // BP-005 source revision: registered slab base, never a collision edit. + let building = try XCTUnwrap(actors.first { + $0.name == "environment-upright-env_solid_07_service_yard_b" + }) + let buildingIndex = try XCTUnwrap(snap.solidIds.firstIndex(of: "solid-07-service-yard-b")) + let box = snap.solids[buildingIndex] + let originalBuilding = (building.texture, building.size, building.anchorPoint, building.position) + let originalBuildingAlpha = building.alpha + defer { + building.texture = originalBuilding.0; building.size = originalBuilding.1 + building.anchorPoint = originalBuilding.2; building.position = originalBuilding.3 + building.alpha = originalBuildingAlpha + } + let sourceURL = try XCTUnwrap(Bundle(for: Self.self).url( + forResource: "service-building-v3-registered", withExtension: "png")) + let sourceImage = try XCTUnwrap(UIImage(contentsOfFile: sourceURL.path)) + XCTAssertEqual(sourceImage.cgImage?.width, 1024) + XCTAssertEqual(sourceImage.cgImage?.height, 1024) + building.texture = SKTexture(image: sourceImage) + building.texture?.filteringMode = .linear + building.size = CGSize(width: 512, height: 512) + building.anchorPoint = CGPoint(x: 419.745 / 1024, y: 1 - 858.392 / 1024) + let front = CGPoint(x: box.center.x - box.halfSize.x, y: box.center.y - box.halfSize.y) + building.position = try XCTUnwrap(building.parent).convert(front, from: scene) + let saved = try actors.map { ($0, try XCTUnwrap($0.parent), $0.position, $0.zPosition) } + func project(_ point: CGPoint) -> CGPoint { + let x = point.x - center.x, y = point.y - center.y, r = CGFloat(0.5).squareRoot() + return CGPoint(x: center.x + r * (x-y), y: center.y + r * (x+y)/2) + } + for (node, parent, position, _) in saved { + let point = scene.convert(position, from: parent) + var depth = node.zPosition, ancestor: SKNode? = parent + while let a = ancestor, a !== scene { depth += a.zPosition; ancestor = a.parent } + node.removeFromParent(); node.position = project(point); node.zPosition = depth; scene.addChild(node) + } + // Check the actual SpriteKit source-to-scene mapping against independent + // authoritative corners. This proves placement, not visual contact quality. + for (pixel, corner) in [ + (CGPoint(x: 148.216, y: 722.627), CGPoint(x: box.center.x - box.halfSize.x, y: box.center.y + box.halfSize.y)), + (CGPoint(x: 419.745, y: 858.392), front), + (CGPoint(x: 781.784, y: 677.373), CGPoint(x: box.center.x + box.halfSize.x, y: box.center.y - box.halfSize.y)) + ] { + let local = CGPoint(x: (pixel.x / 1024 - building.anchorPoint.x) * building.size.width, + y: (1 - pixel.y / 1024 - building.anchorPoint.y) * building.size.height) + let actual = building.convert(local, to: scene), expected = project(corner) + XCTAssertEqual(actual.x, expected.x, accuracy: 0.002) + XCTAssertEqual(actual.y, expected.y, accuracy: 0.002) + } + // BP-009 bounded comparison, not a production occlusion classifier. + let player = try XCTUnwrap(actors.first { $0.name == "sprite-player" }) + let playerSaved = try XCTUnwrap(saved.first { $0.0 === player }) + let playerGround = scene.convert(playerSaved.2, from: playerSaved.1) + let enter = max(0, playerGround.x - CGFloat(box.maxX), playerGround.y - CGFloat(box.maxY)) + let leave = min(playerGround.x - CGFloat(box.minX), playerGround.y - CGFloat(box.minY)) + let occluded = leave > enter && player.frame.intersects(building.frame) + let cue = SKNode(); cue.zPosition = 10_000 + scene.addChild(cue) + defer { cue.removeFromParent() } + if treatment != "control" && occluded { + player.zPosition = building.zPosition - 0.1 + if treatment == "faded" || treatment == "ground-cue" { building.alpha = 0.35 } + if treatment == "ground-cue" { + let outline = SKShapeNode(rectOf: CGSize(width: box.halfSize.x * 2, height: box.halfSize.y * 2)) + outline.position = CGPoint(x: box.center.x, y: box.center.y) + outline.fillColor = SKColor(white: 0.08, alpha: 0.22) + outline.strokeColor = SKColor(white: 0.18, alpha: 0.8); outline.lineWidth = 1 + cue.addChild(outline) + let ring = SKShapeNode(circleOfRadius: CGFloat(PlayerBody.radiusUnits)) + ring.position = playerGround; ring.fillColor = .clear + ring.strokeColor = SKColor(white: 0.9, alpha: 1); ring.lineWidth = 1.25 + cue.addChild(ring) + } + } + let actorIDs = Set(actors.map(ObjectIdentifier.init)) + let ground = scene.children.filter { $0 !== camera && !actorIDs.contains(ObjectIdentifier($0)) } + let scale = SKNode(), rotate = SKNode(), translate = SKNode(), world = SKNode() + scale.position = center; scale.yScale = 0.5; rotate.zRotation = .pi/4 + translate.position = CGPoint(x: -center.x, y: -center.y) + scene.addChild(world); world.addChild(scale); scale.addChild(rotate); rotate.addChild(translate) + for node in ground { node.removeFromParent(); translate.addChild(node) } + for node in actors { node.removeFromParent(); world.addChild(node) } + world.setScale(zoom) + let offset: CGFloat = zoom == 1 || framing != "legacy" ? 0 : 1 + world.position = CGPoint(x: center.x - (center.x + 35 * offset) * zoom, + y: center.y - (center.y + 25 * offset) * zoom) + defer { + for node in ground { node.removeFromParent(); scene.addChild(node) } + for (node, parent, position, z) in saved { + node.removeFromParent(); node.position = position; node.zPosition = z; parent.addChild(node) + } + world.removeFromParent() + } + var visibility: [[String: Any]] = [] + for actor in actors { + let frame = actor.frame + let a = world.convert(CGPoint(x: frame.minX, y: frame.minY), to: scene) + let b = world.convert(CGPoint(x: frame.maxX, y: frame.maxY), to: scene) + let rect = CGRect(x: a.x, y: a.y, width: b.x-a.x, height: b.y-a.y) + if ["player-visible", "hud-safe"].contains(framing) && actor.name == "sprite-player" { + XCTAssertTrue(crop.insetBy(dx: -0.002, dy: -0.002).contains(rect), "Float transform precision only") + } + if framing == "hud-safe" && actor.name == "sprite-player" { + let local = rect.offsetBy(dx: -center.x, dy: -center.y) + XCTAssertTrue(try XCTUnwrap(safeRegion).insetBy(dx: -0.002, dy: -0.002).contains(local)) + for exclusion in hudExclusions { + let overlap = local.intersection(exclusion) + XCTAssertTrue(overlap.isNull || overlap.width <= 0.002 || overlap.height <= 0.002) + } + } + visibility.append(["name": actor.name ?? "unnamed", "intersects": crop.intersects(rect), + "contained": crop.contains(rect), "bounds": [rect.minX, rect.minY, rect.width, rect.height]]) + } + let projectiles: [[String: Any]] = snap.projectiles.map { + let point = translate.convert(CGPoint(x: $0.x, y: $0.y), to: scene) + return ["id": $0.id.raw, "hostile": $0.hostile, "visibleOrigin": crop.contains(point)] + } + XCTAssertEqual(camera.xScale, 1) + XCTAssertEqual(actors.count, saved.count) + let texture = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let image = XCTAttachment(image: UIImage(cgImage: texture.cgImage())) + image.name = "\(prefix)-projected-\(Int(zoom*100))-\(label)"; image.lifetime = .keepAlways; add(image) + let data = try JSONSerialization.data(withJSONObject: ["zoom": zoom, "actors": visibility, + "projectiles": projectiles, "enemies": snap.enemies.count, "cameras": snap.cameras.count, + "tick": snap.tick, "occlusionTreatment": treatment, "occlusionCandidate": occluded, + "framing": framing, "worldFocus": [center.x,center.y], + "hudExclusions": hudExclusions.map { [$0.minX,$0.minY,$0.width,$0.height] }, + "safeRegion": safeRegion.map { [$0.minX,$0.minY,$0.width,$0.height] } ?? []], options: [.sortedKeys, .prettyPrinted]) + let record = XCTAttachment(data: data, uniformTypeIdentifier: "public.json") + record.name = "\(prefix)-visibility-\(Int(zoom*100))-\(label)"; record.lifetime = .keepAlways; add(record) + } + + @MainActor + func testRegisteredServiceBuildingContacts() throws { + let state = try Simulation.make(seed: 1).state + var snap = PresentationSnapshot(state) + let id = "solid-07-service-yard-b" + let index = try XCTUnwrap(snap.solidIds.firstIndex(of: id)) + let box = snap.solids[index] + snap.solids = [box]; snap.solidIds = [id] + snap.enemies = []; snap.projectiles = []; snap.telegraphs = []; snap.mines = [] + snap.cameras = []; snap.captainHousings = []; snap.captainField = nil + snap.patrolCones = []; snap.spawnSockets = [] + let view = SKView(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + view.isPaused = true + let scene = SKScene(size: view.bounds.size) + scene.backgroundColor = .darkGray + let camera = SKCameraNode() + camera.position = CGPoint(x: box.center.x, y: box.center.y) + scene.addChild(camera); scene.camera = camera + view.presentScene(scene) + defer { view.presentScene(nil) } + let renderer = WorldRenderer(); scene.addChild(renderer.root) + let url = try XCTUnwrap(Bundle(for: Self.self).url(forResource: "painted-player-south", withExtension: "png")) + let neutral = SKTexture(image: try XCTUnwrap(UIImage(contentsOfFile: url.path))) + neutral.filteringMode = .linear + let probes: [(String, Int, Int, Int16, Int16)] = [ + ("west", -194, 0, 32767, 0), ("east", 194, 0, -32767, 0), + ("south", 0, -162, 0, 32767), ("north", 0, 162, 0, -32767), + ("near-corner", -194, -162, 32767, 32767), + ("far-corner", 194, 162, -32767, -32767) + ] + var rows = ["probe,tick,xQ8,yQ8"] + for (label, dx, dy, mx, my) in probes { + var point = VecI(x: box.center.x + dx, y: box.center.y + dy).asQ8 + for tick in 1...40 { + let command = PlayerCommand(tick: UInt64(tick), moveX: mx, moveY: my, dodgePressed: false) + point = Collision.slideCircle(from: point, + delta: Movement.displacement(from: command, dodgeActive: false, ghostStep: false), + radius: PlayerBody.radiusUnits, + bounds: AABB(center: box.center, halfSize: VecI(x: 512, y: 512)), + solids: [(id: id, box: box)]) + XCTAssertFalse(Circle(center: point, radiusUnits: PlayerBody.radiusUnits).penetrates(box)) + rows.append("\(label),\(tick),\(point.x.raw),\(point.y.raw)") + } + if dy == 0 { + XCTAssertEqual(abs(point.x.raw - Int64(box.center.x) * Q8.scale), + Int64(box.halfSize.x + PlayerBody.radiusUnits) * Q8.scale) + } + if dx == 0 { + XCTAssertEqual(abs(point.y.raw - Int64(box.center.y) * Q8.scale), + Int64(box.halfSize.y + PlayerBody.radiusUnits) * Q8.scale) + } + snap.player.x = Int(point.x.raw / Q8.scale); snap.player.y = Int(point.y.raw / Q8.scale) + for reduced in [false, true] { + renderer.render(snap, reducedMotion: reduced) + let player = try XCTUnwrap(scene.childNode(withName: "//sprite-player") as? SKSpriteNode) + player.removeAllActions(); player.texture = neutral + player.size = CGSize(width: 64, height: 64); player.anchorPoint = CGPoint(x: 0.5, y: 0.125) + // Preserve Q8 solver position for this placement diagnostic. + player.position = CGPoint(x: CGFloat(point.x.raw) / CGFloat(Q8.scale), + y: CGFloat(point.y.raw) / CGFloat(Q8.scale)) + let overlay = SKNode(); overlay.zPosition = 10_000 + let boundary = SKShapeNode(rectOf: CGSize(width: box.halfSize.x * 2, height: box.halfSize.y * 2)) + boundary.position = CGPoint(x: box.center.x, y: box.center.y) + boundary.fillColor = .clear; boundary.strokeColor = .magenta; boundary.lineWidth = 1 + overlay.addChild(boundary) + let body = SKShapeNode(circleOfRadius: CGFloat(PlayerBody.radiusUnits)) + body.position = player.position; body.fillColor = .clear; body.strokeColor = .cyan; body.lineWidth = 1 + overlay.addChild(body); scene.addChild(overlay) + defer { overlay.removeFromParent() } + for geometry in [false, true] { + overlay.isHidden = !geometry + try captureProjectedLegalEncounter(scene: scene, view: view, snap: snap, zoom: 1, + label: "\(label)-reduced-\(reduced)-geometry-\(geometry)", prefix: "BP005-service-contact") + } + if ["north", "east", "far-corner"].contains(label) { + overlay.isHidden = true + for treatment in ["opaque", "faded", "ground-cue"] { + try captureProjectedLegalEncounter(scene: scene, view: view, snap: snap, zoom: 1, + label: "\(label)-reduced-\(reduced)-\(treatment)", + prefix: "BP005-service-contact", treatment: treatment) + } + } + } + } + XCTAssertEqual(state.digest(), try Simulation.make(seed: 1).state.digest()) + let record = XCTAttachment(string: "Isolated solver/renderer contact study; neutral pose, no full simulation or depth acceptance.\n" + rows.joined(separator: "\n")) + record.name = "BP005-service-contact-q8"; record.lifetime = .keepAlways; add(record) + } + + @MainActor + func testCaptureCameraFieldsInReplayableEncounter() throws { + let session = GameSession(seed: 1) + session.audioSettings = .init(effectsEnabled: false, hapticsEnabled: false, musicEnabled: false) + var pilot = try XCTUnwrap(DebugAutopilot(scenario: "run", arena: session.simulation.state.arena)) + var found = false + for _ in 0..<6000 { + let before = session.snapshot + let command = pilot.command(before) + session.moveX = command.moveX; session.moveY = command.moveY + session.dodgePressed = command.dodge + if before.upgradePending { session.pendingUpgradeChoice = pilot.upgradeChoice.selectionIndex } + session.step() + let snap = session.snapshot + let nearby = snap.enemies.filter { abs($0.x - snap.player.x) < 300 && abs($0.y - snap.player.y) < 130 } + let visibleAttack = snap.projectiles.contains { $0.hostile && abs($0.x - snap.player.x) < 300 && abs($0.y - snap.player.y) < 130 } + let nearbyField = snap.cameras.contains { $0.fieldVisible && abs($0.x - snap.player.x) < 280 && abs($0.y - snap.player.y) < 120 } + if nearby.count >= 2 && visibleAttack && nearbyField { found = true; break } + if session.simulation.isTerminal { break } + } + XCTAssertTrue(found, "Pilot must reach an unedited encounter with nearby enemies, hostile projectile and Camera field") + guard found else { return } + XCTAssertFalse(session.scenarioSeeded) + let view = SKView(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + view.isPaused = true + let scene = GameScene(size: view.bounds.size, session: session) + view.presentScene(scene) + defer { view.presentScene(nil) } + XCTAssertTrue(scene.installBenchmarkCameraFrames(try CameraPlaybackTests.candidateFrames())) + scene.skipIntroIfRunning() + scene.update(0) + let snap = session.snapshot + let player = try XCTUnwrap(scene.childNode(withName: "//sprite-player") as? SKSpriteNode) + let directions = ["n": "north", "s": "south", "e": "east", "w": "west"] + let facing = directions[snap.playerDirection] ?? snap.playerDirection + let url = try XCTUnwrap(Bundle(for: Self.self).url(forResource: "painted-player-\(facing)", withExtension: "png")) + let image = try XCTUnwrap(UIImage(contentsOfFile: url.path)) + let candidate = SKTexture(image: image) + candidate.filteringMode = .linear + let camera = try XCTUnwrap(scene.camera) + let lower = scene.convert(CGPoint(x: -352, y: -163), from: camera) + let upper = scene.convert(CGPoint(x: 352, y: 163), from: camera) + let crop = CGRect(x: lower.x, y: lower.y, width: upper.x-lower.x, height: upper.y-lower.y) + let digest = session.simulation.state.digest() + for reduced in [false, true] { + for style in WorldRenderer.BenchmarkFieldContrast.allCases { + scene.setBenchmarkFieldContrast(style) + scene.refreshBenchmarkPresentation(reducedMotion: reduced) + player.removeAllActions(); player.texture = candidate + player.size = CGSize(width: 64, height: 64) + player.anchorPoint = CGPoint(x: 0.5, y: 0.125) + scene.refreshBenchmarkOutlines(samplingScale: 3) + XCTAssertEqual(session.simulation.state.digest(), digest) + let texture = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let attachment = XCTAttachment(image: UIImage(cgImage: texture.cgImage())) + attachment.name = "BP010-field-encounter-\(style.rawValue)-reduced-\(reduced)" + attachment.lifetime = .keepAlways; add(attachment) + if style == .paired { + for zoom: CGFloat in [1, 1.25] { + try captureProjectedLegalEncounter(scene: scene, view: view, snap: snap, + zoom: zoom, label: "reduced-\(reduced)") + XCTAssertEqual(session.simulation.state.digest(), digest) + let bounds = session.simulation.state.arena.boundsUnits + let rect = CGRect(x: bounds.minX, y: bounds.minY, + width: bounds.maxX - bounds.minX, height: bounds.maxY - bounds.minY) + for framing in ["contained", "player-visible", "hud-safe"] { + try captureProjectedLegalEncounter(scene: scene, view: view, snap: snap, + zoom: zoom, label: "reduced-\(reduced)", prefix: "BP007-camera-\(framing)", + framing: framing, arena: rect) + XCTAssertEqual(session.simulation.state.digest(), digest) + } + } + } + + } + } + let state = session.simulation.state + // BP-004/BP-007: distinguish ground mount, targeting and field emission. + // Diagnostic overlays only; never relocate authority to fit elevated art. + var registration: [[String: Any]] = [] + let landmarks = SKNode() + landmarks.zPosition = 10_000 + scene.addChild(landmarks) + for device in state.cameras where abs(device.position.x - snap.player.x) < 280 + && abs(device.position.y - snap.player.y) < 120 { + let mount = CGPoint(x: device.position.x, y: device.position.y) + let field = CGPoint(x: Double(device.fieldOrigin.x.raw) / Double(Q8.scale), + y: Double(device.fieldOrigin.y.raw) / Double(Q8.scale)) + let target = CGPoint(x: Double(device.targetAnchor.x.raw) / Double(Q8.scale), + y: Double(device.targetAnchor.y.raw) / Double(Q8.scale)) + let sprite = try XCTUnwrap(snap.cameras.first { $0.id == device.entityId }) + let key = CameraFieldGeometry.Key(camera: sprite, solids: snap.solids) + XCTAssertEqual(key.originX, Double(field.x)) + XCTAssertEqual(key.originY, Double(field.y)) + for (label, point, color, offset) in [ + ("M", mount, SKColor.cyan, CGPoint(x: -18, y: -18)), + ("T", target, SKColor.magenta, CGPoint(x: -20, y: 20)), + ("F", field, SKColor.yellow, CGPoint(x: 20, y: 20)) + ] { + let dot = SKShapeNode(circleOfRadius: 2) + dot.position = point; dot.fillColor = color; dot.strokeColor = .black + landmarks.addChild(dot) + let text = SKLabelNode(fontNamed: "Menlo-Bold") + text.text = label; text.fontSize = 10; text.fontColor = color + text.position = CGPoint(x: point.x + offset.x, y: point.y + offset.y) + landmarks.addChild(text) + let path = CGMutablePath(); path.move(to: point); path.addLine(to: text.position) + let leader = SKShapeNode(path: path) + leader.strokeColor = color; leader.lineWidth = 0.5 + landmarks.addChild(leader) + } + registration.append([ + "socket": device.socketId, "headingMilliDegrees": device.headingMilliDegrees, + "mount": [device.position.x, device.position.y], + "fieldQ8": [device.fieldOrigin.x.raw, device.fieldOrigin.y.raw], + "targetQ8": [device.targetAnchor.x.raw, device.targetAnchor.y.raw], + "q8Scale": Q8.scale + ]) + } + XCTAssertFalse(registration.isEmpty) + let alignmentTexture = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let alignment = XCTAttachment(image: UIImage(cgImage: alignmentTexture.cgImage())) + alignment.name = "BP010-field-encounter-registration" + alignment.lifetime = .keepAlways; add(alignment) + landmarks.removeFromParent() + XCTAssertEqual(session.simulation.state.digest(), digest) + let coordinates = XCTAttachment(data: try JSONSerialization.data(withJSONObject: registration, options: [.prettyPrinted, .sortedKeys]), + uniformTypeIdentifier: "public.json") + coordinates.name = "BP010-field-encounter-registration-coordinates" + coordinates.lifetime = .keepAlways; add(coordinates) + let replay = GhostRecord(identity: state.identity, seed: state.seed, ticks: state.tick, + digest: state.digest(), commands: session.commandLog) + let replayData = try JSONEncoder().encode(replay) + let decoded = try JSONDecoder().decode(GhostRecord.self, from: replayData) + let replayed = try XCTUnwrap(GhostRun.replay(seed: decoded.seed, commands: decoded.playerCommands, until: decoded.ticks)) + XCTAssertEqual(replayed.state.digest(), state.digest()) + let commands = XCTAttachment(data: replayData, uniformTypeIdentifier: "public.json") + commands.name = "BP010-field-encounter-commands-seed-1" + commands.lifetime = .keepAlways; add(commands) + let record = XCTAttachment(string: """ + Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. + tick=\(snap.tick), player=\(snap.player.x),\(snap.player.y), facing=\(snap.playerDirection) + enemies=\(snap.enemies.count), projectiles=\(snap.projectiles.count), telegraphs=\(snap.telegraphs.count) + Production GameScene/HUD/fog/ground/projection; painted neutral Player and complete Camera candidate family. + Same unedited snapshot across control/dark/paired and normal/Reduced Motion. + digest=\(state.digest()); candidate source: docs/review/camera-clips. + Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. + """) + record.name = "BP010-field-encounter-record"; record.lifetime = .keepAlways; add(record) + } + + @MainActor + func testCapturePaintedPlayerLegalEncounterContrast() throws { + let session = GameSession(seed: 1) + session.audioSettings = .init(effectsEnabled: false, hapticsEnabled: false, musicEnabled: false) + var pilot = try XCTUnwrap(DebugAutopilot(scenario: "run", arena: session.simulation.state.arena)) + var found = false + for _ in 0..<6000 { + let before = session.snapshot + let command = pilot.command(before) + session.moveX = command.moveX; session.moveY = command.moveY + session.dodgePressed = command.dodge + if before.upgradePending { session.pendingUpgradeChoice = pilot.upgradeChoice.selectionIndex } + session.step() + let snap = session.snapshot + let nearby = snap.enemies.filter { abs($0.x - snap.player.x) < 300 && abs($0.y - snap.player.y) < 130 } + if nearby.count >= 2 && !snap.projectiles.isEmpty { found = true; break } + if session.simulation.isTerminal { break } + } + XCTAssertTrue(found, "Pilot must reach an unedited encounter with nearby enemies and projectiles") + guard found else { return } + XCTAssertFalse(session.scenarioSeeded) + let view = SKView(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + view.isPaused = true + let scene = GameScene(size: view.bounds.size, session: session) + view.presentScene(scene) + defer { view.presentScene(nil) } + scene.skipIntroIfRunning() + scene.update(0) + let snap = session.snapshot + let player = try XCTUnwrap(scene.childNode(withName: "//sprite-player") as? SKSpriteNode) + let directions = ["n": "north", "s": "south", "e": "east", "w": "west"] + let facing = directions[snap.playerDirection] ?? snap.playerDirection + let url = try XCTUnwrap(Bundle(for: Self.self).url(forResource: "painted-player-\(facing)", withExtension: "png")) + let image = try XCTUnwrap(UIImage(contentsOfFile: url.path)) + player.removeAllActions() + player.texture = SKTexture(image: image) + player.texture?.filteringMode = .linear + player.size = CGSize(width: 64, height: 64) + player.anchorPoint = CGPoint(x: 0.5, y: 0.125) + scene.refreshBenchmarkOutlines(samplingScale: 3) + let border = try XCTUnwrap(player.childNode(withName: WorldRenderer.outlineName)) + let camera = try XCTUnwrap(scene.camera) + let lower = scene.convert(CGPoint(x: -352, y: -163), from: camera) + let upper = scene.convert(CGPoint(x: 352, y: 163), from: camera) + let crop = CGRect(x: lower.x, y: lower.y, width: upper.x - lower.x, height: upper.y - lower.y) + for (label, opacity) in [("full", CGFloat(1)), ("quarter", CGFloat(0.25)), ("none", CGFloat(0))] { + border.alpha = opacity + let texture = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let attachment = XCTAttachment(image: UIImage(cgImage: texture.cgImage())) + attachment.name = "BP010-legal-encounter-\(label)" + attachment.lifetime = .keepAlways + add(attachment) + } + let state = session.simulation.state + let replay = GhostRecord(identity: state.identity, seed: state.seed, ticks: state.tick, + digest: state.digest(), commands: session.commandLog) + let replayData = try JSONEncoder().encode(replay) + let decoded = try JSONDecoder().decode(GhostRecord.self, from: replayData) + let replayed = try XCTUnwrap(GhostRun.replay(seed: decoded.seed, commands: decoded.playerCommands, until: decoded.ticks)) + XCTAssertEqual(replayed.state.digest(), state.digest()) + let commands = XCTAttachment(data: replayData, uniformTypeIdentifier: "public.json") + commands.name = "BP010-legal-encounter-commands-seed-1" + commands.lifetime = .keepAlways; add(commands) + let record = XCTAttachment(string: """ + Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. + tick=\(snap.tick), player=\(snap.player.x),\(snap.player.y), facing=\(snap.playerDirection) + enemies=\(snap.enemies.count), projectiles=\(snap.projectiles.count), telegraphs=\(snap.telegraphs.count) + Production GameScene/HUD/fog/ground/projection, painted neutral Player texture only. + Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. + """) + record.name = "BP010-legal-encounter-record"; record.lifetime = .keepAlways; add(record) + } + + /// BP-007 comparison: project ground geometry while preserving upright art. + /// Restores the tree after capture so repeated state samples cannot accumulate transforms. + @MainActor + private func projectedSharedCameraScene(scene: GameScene, view: SKView, center: CGPoint, + crop: CGRect, cameraID: UInt64, box: AABB, magnification: CGFloat = 1) throws -> UIImage { + let camera = try XCTUnwrap(scene.camera) + let names = ["sprite-player", "sprite-camera-\(cameraID)", "benchmark-building", + "benchmark-prop-0", "benchmark-prop-1"] + let billboards = try names.map { try XCTUnwrap(scene.childNode(withName: "//" + $0)) } + let building = try XCTUnwrap(billboards[2] as? SKSpriteNode) + XCTAssertEqual(box.halfSize, VecI(x: 64, y: 64)) + let canvas = CGFloat(1254) * (CGFloat(128) * CGFloat(2).squareRoot() / 934) + building.size = CGSize(width: canvas, height: canvas) + building.anchorPoint = CGPoint(x: CGFloat(653) / 1254, y: 1 - CGFloat(1152) / 1254) + building.position = CGPoint(x: box.minX, y: box.minY) + let originals = try billboards.map { node in + (node, try XCTUnwrap(node.parent), node.position, node.zPosition) + } + func projected(_ point: CGPoint) -> CGPoint { + let x = point.x - center.x, y = point.y - center.y + let r = CGFloat(0.5).squareRoot() + return CGPoint(x: center.x + r * (x - y), y: center.y + r * (x + y) / 2) + } + for (node, parent, position, _) in originals { + let point = scene.convert(position, from: parent) + var z = node.zPosition + var ancestor: SKNode? = parent + while let a = ancestor, a !== scene { z += a.zPosition; ancestor = a.parent } + node.removeFromParent(); node.position = projected(point); node.zPosition = z + scene.addChild(node) + } + let upright = Set(billboards.map(ObjectIdentifier.init)) + let groundNodes = scene.children.filter { $0 !== camera && !upright.contains(ObjectIdentifier($0)) } + let squash = SKNode(), rotation = SKNode(), translation = SKNode() + squash.position = center; squash.yScale = 0.5 + rotation.zRotation = .pi / 4; translation.position = CGPoint(x: -center.x, y: -center.y) + scene.addChild(squash); squash.addChild(rotation); rotation.addChild(translation) + for node in groundNodes { node.removeFromParent(); translation.addChild(node) } + defer { + for node in groundNodes { node.removeFromParent(); scene.addChild(node) } + for (node, parent, position, z) in originals { + node.removeFromParent(); node.position = position; node.zPosition = z; parent.addChild(node) + } + squash.removeFromParent() + } + for point in [CGPoint(x: box.minX, y: box.minY), CGPoint(x: box.maxX, y: box.maxY)] { + let actual = translation.convert(point, to: scene), expected = projected(point) + XCTAssertEqual(actual.x, expected.x, accuracy: 0.0001) + XCTAssertEqual(actual.y, expected.y, accuracy: 0.0001) + } + // BP-007: exercise the actual comparison tree in all travel directions, + // including partial input and a full authored-cycle distance. + let directions: [(CGFloat, CGFloat)] = [ + (1, 0), (1, 1), (0, 1), (-1, 1), (-1, 0), (-1, -1), (0, -1), (1, -1) + ] + for (x, y) in directions { + for magnitude: CGFloat in [0.25, 0.5, 1, 120] { + let length = hypot(x, y) + let point = CGPoint(x: center.x + x / length * magnitude, + y: center.y + y / length * magnitude) + let actual = translation.convert(point, to: scene) + let expected = projected(point) + // Numeric transform bound at SpriteKit's Float storage precision; + // this is not an art/contact acceptance threshold. + let tolerance = CGFloat(Float(max(abs(point.x), abs(point.y), 1)).ulp) * 8 + XCTAssertEqual(actual.x, expected.x, accuracy: tolerance) + XCTAssertEqual(actual.y, expected.y, accuracy: tolerance) + let recovered = scene.convert(actual, to: translation) + XCTAssertEqual(recovered.x, point.x, accuracy: tolerance) + XCTAssertEqual(recovered.y, point.y, accuracy: tolerance) + } + } + let screenDownWorld = scene.convert(CGPoint(x: center.x, y: center.y - 1), to: translation) + XCTAssertLessThan(screenDownWorld.x, center.x) + XCTAssertLessThan(screenDownWorld.y, center.y) + let expectedCorner = projected(CGPoint(x: box.minX, y: box.minY)) + // #129: SKNode's observed stored components use Float precision. + // Keep exact equality at that representation, separate from the ground transform check. + XCTAssertEqual(building.position, CGPoint(x: CGFloat(Float(expectedCorner.x)), + y: CGFloat(Float(expectedCorner.y)))) + XCTAssertEqual(building.size.width, building.size.height) + XCTAssertEqual(camera.xScale, 1) + // Camera-owned HUD stays fixed while the complete projected world is + // reframed. Sprite size/anchor and authoritative geometry remain intact. + let world = scene.children.filter { $0 !== camera } + let zoomRoot = SKNode() + if magnification != 1 { + let focus = CGPoint(x: center.x + 35, y: center.y + 25) + zoomRoot.setScale(magnification) + zoomRoot.position = CGPoint(x: center.x - focus.x * magnification, + y: center.y - focus.y * magnification) + scene.addChild(zoomRoot) + for node in world { node.removeFromParent(); zoomRoot.addChild(node) } + } + defer { + if magnification != 1 { + for node in world { node.removeFromParent(); scene.addChild(node) } + zoomRoot.removeFromParent() + } + } + XCTAssertEqual(camera.xScale, 1) + let rendered = try XCTUnwrap(view.texture(from: scene, crop: crop)) + return UIImage(cgImage: rendered.cgImage()) + } + + @MainActor + func testCaptureCompleteCameraCandidatesInSharedScene() throws { + let bundle = Bundle(for: Self.self) + func texture(_ name: String) throws -> SKTexture { + let url = try XCTUnwrap(bundle.url(forResource: name, withExtension: "png")) + let image = try XCTUnwrap(UIImage(contentsOfFile: url.path)) + let texture = SKTexture(image: image) + texture.filteringMode = .linear + return texture + } + let view = SKView(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + view.isPaused = true + let scene = GameScene(size: view.bounds.size) + view.presentScene(scene) + defer { view.presentScene(nil) } + scene.session.audioSettings = .init(effectsEnabled: false, hapticsEnabled: false, musicEnabled: false) + var snap = scene.session.snapshot + let id = "solid-03-transit-kiosk" + let index = try XCTUnwrap(snap.solidIds.firstIndex(of: id)) + let box = snap.solids[index] + let x = box.center.x + let y = box.center.y + snap.solids = [box] + snap.solidIds = [id] + snap.player.x = x + 160 + snap.player.y = y - 50 + snap.playerDirection = "south" + snap.enemies = [] + snap.projectiles = [] + snap.telegraphs = [] + snap.mines = [] + snap.spawnSockets = [] + snap.captainHousings = [] + snap.captainField = nil + snap.patrolCones = [] + snap.cameras = Array(snap.cameras.prefix(1)) + XCTAssertEqual(snap.cameras.count, 1) + snap.cameras[0].x = x + 270 + snap.cameras[0].y = y + 20 + snap.cameras[0].fieldOrigin = VecI(x: x + 270, y: y + 20).asQ8 + snap.cameras[0].headingMilli = 100_000 + snap.cameras[0].integrity = 3 + snap.cameras[0].fieldVisible = true + let env = EnvironmentTextures() + let center = CGPoint(x: x + 130, y: y + 20) + let art = BenchmarkReviewArt( + player: try texture("painted-player-south"), camera: try texture("camera"), + building: .init(texture: try texture("building-constrained"), size: CGSize(width: 190, height: 217), + anchor: CGPoint(x: 0.5, y: 0), position: CGPoint(x: x, y: y - 64)), + buildingID: id, + props: [ + .init(texture: try texture("newsbox"), size: CGSize(width: 20, height: 40), + anchor: CGPoint(x: 0.5, y: 0), position: CGPoint(x: x + 115, y: y - 65)), + .init(texture: try texture("tree"), size: CGSize(width: 50, height: 85), + anchor: CGPoint(x: 0.5, y: 0), position: CGPoint(x: 858, y: 780)) + ], paving: try XCTUnwrap(env.texture(assetId: "env_ground_plaza"))) + var streetArt = art + let road = CGRect(x: 900, y: 0, width: 1404, height: 1536) + streetArt.configureStreetCorner(asphalt: try XCTUnwrap(env.texture(assetId: "env_ground_asphalt"))) + XCTAssertFalse(road.intersects(CGRect(x: box.minX, y: box.minY, + width: box.halfSize.x * 2, height: box.halfSize.y * 2))) + let candidates = try CameraPlaybackTests.candidateFrames() + XCTAssertTrue(scene.installBenchmarkCameraFrames(candidates)) + let crop = CGRect(x: center.x - 352, y: center.y - 163, width: 704, height: 326) + let clips = [3: "camera_operational_idle", 2: "camera_hit", + 1: "camera_critical_enter", 0: "camera_destroyed_idle"] + for style in WorldRenderer.BenchmarkFieldContrast.allCases { + scene.setBenchmarkFieldContrast(style) + for integrity in stride(from: 3, through: 0, by: -1) { + snap.cameras[0].integrity = integrity + snap.cameras[0].fieldVisible = integrity > 0 + scene.renderBenchmark(snapshot: snap, art: art, center: center) + XCTAssertNil(scene.childNode(withName: "//benchmark-ground-line-0")) + let sprite = try XCTUnwrap(scene.childNode(withName: "//sprite-camera-\(snap.cameras[0].id.raw)") as? SKSpriteNode) + XCTAssertTrue(sprite.texture === candidates[clips[integrity]!]!.last) + XCTAssertFalse(sprite.hasActions()) + let contact = try XCTUnwrap(scene.childNode(withName: "//benchmark-camera-contact-\(snap.cameras[0].id.raw)")) + XCTAssertEqual(contact.position, CGPoint(x: snap.cameras[0].x, y: snap.cameras[0].y - 2)) + XCTAssertNil(scene.childNode(withName: "//housing-\(snap.cameras[0].id.raw)")) + if integrity == 0 { XCTAssertNil(scene.childNode(withName: "//field-\(snap.cameras[0].id.raw)")) } + let result = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let attachment = XCTAttachment(image: UIImage(cgImage: result.cgImage())) + attachment.name = "BP004-shared-scene-\(style.rawValue)-integrity-\(integrity)" + attachment.lifetime = .keepAlways; add(attachment) + let digest = scene.session.simulation.state.digest() + let projected = try projectedSharedCameraScene(scene: scene, view: view, center: center, + crop: crop, cameraID: snap.cameras[0].id.raw, box: box) + XCTAssertEqual(scene.session.simulation.state.digest(), digest) + let registered = XCTAttachment(image: projected) + registered.name = "BP004-registered-shared-scene-\(style.rawValue)-integrity-\(integrity)" + registered.lifetime = .keepAlways; add(registered) + scene.renderBenchmark(snapshot: snap, art: streetArt, center: center) + var patchCount = 0 + scene.enumerateChildNodes(withName: "//benchmark-ground-patch-0") { node, _ in + guard let tile = node as? SKSpriteNode else { XCTFail("Patch must be a surface tile"); return } + patchCount += 1 + XCTAssertTrue(road.contains(tile.frame)) + XCTAssertEqual(tile.texture?.size(), tile.size, "128px/128-unit source density must survive edge cropping") + } + XCTAssertEqual(patchCount, 11 * 12) + let street = try projectedSharedCameraScene(scene: scene, view: view, center: center, + crop: crop, cameraID: snap.cameras[0].id.raw, box: box) + XCTAssertEqual(scene.session.simulation.state.digest(), digest) + let furnished = XCTAttachment(image: street) + furnished.name = "BP004-street-shared-scene-\(style.rawValue)-integrity-\(integrity)" + furnished.lifetime = .keepAlways; add(furnished) + // Revised source composition only. Keep the old neutral control above. + if style == .paired && integrity == 3 { + for frame in [0, 4, 8, 12] { + var revised = BenchmarkReviewArt( + player: try texture(String(format: "player-source-s-%02d", frame)), + camera: streetArt.camera, building: streetArt.building, + buildingID: streetArt.buildingID, props: streetArt.props, paving: streetArt.paving) + revised.groundPatches = streetArt.groundPatches + revised.groundLines = streetArt.groundLines + scene.renderBenchmark(snapshot: snap, art: revised, center: center) + let player = try XCTUnwrap(scene.childNode(withName: "//sprite-player") as? SKSpriteNode) + player.size = CGSize(width: 64, height: 416.0 / 6.0) + player.anchorPoint = CGPoint(x: 0.5, y: 1 - 336.0 / 416.0) + // Approved clean-review treatment only; restore controls afterward. + var outlineVisibility: [(SKNode, Bool)] = [] + scene.enumerateChildNodes(withName: "//" + WorldRenderer.outlineName) { node, _ in + outlineVisibility.append((node, node.isHidden)); node.isHidden = true + } + defer { for (node, hidden) in outlineVisibility { node.isHidden = hidden } } + let composed = try projectedSharedCameraScene(scene: scene, view: view, center: center, + crop: crop, cameraID: snap.cameras[0].id.raw, box: box) + XCTAssertEqual(scene.session.simulation.state.digest(), digest) + XCTAssertEqual(player.size.height, CGFloat(Float(416.0 / 6.0))) + let image = XCTAttachment(image: composed) + image.name = "BP008-revised-shared-composition-pose-\(frame)" + image.lifetime = .keepAlways; add(image) + if frame == 0 { + for zoom: CGFloat in [1.25, 1.4] { + let closer = try projectedSharedCameraScene(scene: scene, view: view, center: center, + crop: crop, cameraID: snap.cameras[0].id.raw, box: box, magnification: zoom) + XCTAssertEqual(scene.session.simulation.state.digest(), digest) + let comparison = XCTAttachment(image: closer) + comparison.name = "BP007-street-framing-\(Int(zoom * 100))-percent" + comparison.lifetime = .keepAlways; add(comparison) + } + } + } + } + } + } + let record = XCTAttachment(string: """ + Actual GameScene/WorldRenderer/HUD; 704x326 logical viewport. Complete camera + candidates use the production integrity policy, with Reduced Motion settled + frames. Painted neutral player and constrained building are review assets. + Explicit composition placements; not a legal encounter or animation capture. + Registered variants use the BP007 45-degree rotation/half-height ground comparison, + unchanged zoom, upright artwork and documented constrained-building corner anchor. + Control variants retain the old stretched building for direct comparison (issue 128). + Street variants add asphalt bounds (960,0,1344,1536), 128-unit tiles; curb at + x=960/957 (width 4/3), rail grooves at x=1020/1060 (width 5, metal 1.5). + All strips span y=0...1536; these are editable fixture values, not arena placement. + Geometry mapping and player locomotion remain unaccepted. Native frame scale + must be read from the exported pixel dimensions. Camera texture filtering is + nearest; other high-resolution composition sources use linear filtering. + """) + record.name = "BP004-shared-scene-record"; record.lifetime = .keepAlways; add(record) + } + + @MainActor + func testCaptureRevisedBenchmarkComposition() throws { + let bundle = Bundle(for: Self.self) + func texture(_ name: String) throws -> SKTexture { + let url = try XCTUnwrap(bundle.url(forResource: name, withExtension: "png")) + let image = try XCTUnwrap(UIImage(contentsOfFile: url.path)) + let texture = SKTexture(image: image) + texture.filteringMode = .linear + return texture + } + let view = SKView(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + view.isPaused = true + let scene = GameScene(size: view.bounds.size) + view.presentScene(scene) + defer { view.presentScene(nil) } + scene.session.audioSettings = .init(effectsEnabled: false, hapticsEnabled: false, musicEnabled: false) + var snap = scene.session.snapshot + let id = "solid-03-transit-kiosk" + let index = try XCTUnwrap(snap.solidIds.firstIndex(of: id)) + let box = snap.solids[index] + let x = box.center.x + let y = box.center.y + snap.solids = [box] + snap.solidIds = [id] + snap.player.x = x + 160 + snap.player.y = y - 50 + snap.playerDirection = "south" + snap.enemies = [] + snap.projectiles = [] + snap.telegraphs = [] + snap.mines = [] + snap.spawnSockets = [] + snap.captainHousings = [] + snap.captainField = nil + snap.patrolCones = [] + snap.cameras = Array(snap.cameras.prefix(1)) + XCTAssertEqual(snap.cameras.count, 1) + snap.cameras[0].x = x + 270 + snap.cameras[0].y = y + 20 + snap.cameras[0].fieldOrigin = VecI(x: x + 270, y: y + 20).asQ8 + snap.cameras[0].headingMilli = 100_000 + snap.cameras[0].integrity = 3 + snap.cameras[0].fieldVisible = true + let env = EnvironmentTextures() + let center = CGPoint(x: x + 130, y: y + 20) + var art = BenchmarkReviewArt( + player: try texture("player-south"), camera: try texture("camera"), + building: .init(texture: try texture("building"), size: CGSize(width: 190, height: 217), + anchor: CGPoint(x: 0.5, y: 0), position: CGPoint(x: x, y: y - 64)), + buildingID: id, + props: [ + .init(texture: try texture("newsbox"), size: CGSize(width: 20, height: 40), + anchor: CGPoint(x: 0.5, y: 0), position: CGPoint(x: x + 115, y: y - 65)), + .init(texture: try texture("tree"), size: CGSize(width: 50, height: 85), + anchor: CGPoint(x: 0.5, y: 0), position: CGPoint(x: 858, y: 780)) + ], paving: try XCTUnwrap(env.texture(assetId: "env_ground_plaza"))) + art.cameraStates = [3: try texture("camera-state-intact"), 2: try texture("camera-state-damaged"), + 1: try texture("camera-state-critical"), 0: try texture("camera-state-destroyed")] + scene.renderBenchmark(snapshot: snap, art: art, center: center) + XCTAssertNil(scene.childNode(withName: "//housing-\(snap.cameras[0].id.raw)")) + XCTAssertNotNil(scene.childNode(withName: "//sprite-camera-\(snap.cameras[0].id.raw)")) + XCTAssertNotNil(scene.childNode(withName: "//benchmark-building")) + let crop = CGRect(x: center.x - 352, y: center.y - 163, width: 704, height: 326) + func capture(_ name: String) throws { + let result = try XCTUnwrap(view.texture(from: scene, crop: crop)) + let attachment = XCTAttachment(image: UIImage(cgImage: result.cgImage())) + attachment.name = name + attachment.lifetime = .keepAlways + add(attachment) + } + try capture("BP001-revised-composition") + let overlay = SKShapeNode(rectOf: CGSize(width: box.halfSize.x * 2, height: box.halfSize.y * 2)) + overlay.position = CGPoint(x: x, y: y) + overlay.strokeColor = .magenta + overlay.fillColor = .clear + overlay.lineWidth = 1 + overlay.zPosition = 999 + scene.addChild(overlay) + try capture("BP001-revised-building-footprint") + overlay.isHidden = true + + // texture(from:crop:) renders node coordinates rather than a camera viewport. + // Apply the equivalent world-to-view affine zoom before rasterization, leaving + // the camera-attached HUD fixed. This is not enlargement of a captured bitmap. + let camera = try XCTUnwrap(scene.camera) + let worldChildren = scene.children.filter { $0 !== camera } + let zoomRoot = SKNode() + let zoom: CGFloat = 1.25 + zoomRoot.setScale(zoom) + zoomRoot.position = CGPoint(x: center.x * (1 - zoom), y: center.y * (1 - zoom)) + scene.addChild(zoomRoot) + for node in worldChildren { + node.removeFromParent() + zoomRoot.addChild(node) + } + let centerAfterZoom = zoomRoot.convert(center, to: scene) + XCTAssertEqual(centerAfterZoom.x, center.x, accuracy: 0.001) + XCTAssertEqual(centerAfterZoom.y, center.y, accuracy: 0.001) + XCTAssertEqual(camera.xScale, 1) + try capture("BP007-framing-125-percent") + overlay.isHidden = false + try capture("BP007-framing-125-percent-footprint") + for node in worldChildren { + node.removeFromParent() + scene.addChild(node) + } + zoomRoot.removeFromParent() + overlay.removeFromParent() + for integrity in stride(from: 3, through: 0, by: -1) { + snap.cameras[0].integrity = integrity + snap.cameras[0].fieldVisible = integrity > 0 + scene.renderBenchmark(snapshot: snap, art: art, center: center) + let sprite = try XCTUnwrap(scene.childNode(withName: "//sprite-camera-\(snap.cameras[0].id.raw)") as? SKSpriteNode) + XCTAssertTrue(sprite.texture === art.cameraStates[integrity]) + XCTAssertEqual(sprite.position, CGPoint(x: snap.cameras[0].x, y: snap.cameras[0].y)) + XCTAssertNil(scene.childNode(withName: "//housing-\(snap.cameras[0].id.raw)")) + try capture("BP004-candidate-integrity-\(integrity)") + } + // BP-007 review experiment only: transform ground geometry and roots, + // preserving upright sprite form. This is not a production projection API. + for zoom in [CGFloat(1), CGFloat(2).squareRoot()] { + snap.cameras[0].integrity = 3 + snap.cameras[0].fieldVisible = true + scene.renderBenchmark(snapshot: snap, art: art, center: center) + let billboardNames = ["sprite-player", "sprite-camera-\(snap.cameras[0].id.raw)", + "benchmark-building", "benchmark-prop-0", "benchmark-prop-1"] + let billboards = try billboardNames.map { try XCTUnwrap(scene.childNode(withName: "//" + $0)) } + let originals = try billboards.map { node in + (node, try XCTUnwrap(node.parent), node.position, node.xScale, node.yScale, node.zPosition) + } + func projected(_ p: CGPoint) -> CGPoint { + let x = p.x - center.x, y = p.y - center.y + let r = CGFloat(0.5).squareRoot() + return CGPoint(x: center.x + zoom * r * (x - y), + y: center.y + zoom * r * (x + y) / 2) + } + for (node, parent, position, _, _, _) in originals { + let world = scene.convert(position, from: parent) + var z = node.zPosition + var ancestor: SKNode? = parent + while let a = ancestor, a !== scene { z += a.zPosition; ancestor = a.parent } + node.removeFromParent() + node.position = projected(world) + node.xScale *= zoom; node.yScale *= zoom + node.zPosition = z + scene.addChild(node) + } + let uprightSet = Set(billboards.map(ObjectIdentifier.init)) + let world = scene.children.filter { $0 !== camera && !uprightSet.contains(ObjectIdentifier($0)) } + let squash = SKNode(), rotation = SKNode(), translation = SKNode() + squash.position = center; squash.xScale = zoom; squash.yScale = zoom / 2 + rotation.zRotation = .pi / 4 + translation.position = CGPoint(x: -center.x, y: -center.y) + scene.addChild(squash); squash.addChild(rotation); rotation.addChild(translation) + for node in world { node.removeFromParent(); translation.addChild(node) } + let probe = CGPoint(x: x + 64, y: y - 64) + let converted = translation.convert(probe, to: scene) + XCTAssertEqual(converted.x, projected(probe).x, accuracy: 0.0001) + XCTAssertEqual(converted.y, projected(probe).y, accuracy: 0.0001) + let player = try XCTUnwrap(billboards.first as? SKSpriteNode) + let expectedSize = CGFloat(Float(64 * zoom)) + XCTAssertEqual(player.size, CGSize(width: expectedSize, height: expectedSize)) + XCTAssertEqual(player.xScale, player.yScale) + XCTAssertEqual(camera.xScale, 1) + let tag = zoom == 1 ? "unchanged-zoom" : "equal-area-zoom" + try capture("BP007-projected-\(tag)") + let footprintRoot = SKNode(), footprintRotation = SKNode(), footprintTranslation = SKNode() + footprintRoot.position = center; footprintRoot.xScale = zoom; footprintRoot.yScale = zoom / 2 + footprintRoot.zPosition = 999 + footprintRotation.zRotation = .pi / 4 + footprintTranslation.position = CGPoint(x: -center.x, y: -center.y) + scene.addChild(footprintRoot); footprintRoot.addChild(footprintRotation) + footprintRotation.addChild(footprintTranslation) + let footprint = SKShapeNode(rectOf: CGSize(width: box.halfSize.x * 2, height: box.halfSize.y * 2)) + footprint.position = CGPoint(x: x, y: y) + footprint.strokeColor = .magenta; footprint.fillColor = .clear; footprint.lineWidth = 1 + footprintTranslation.addChild(footprint) + try capture("BP007-projected-\(tag)-geometry") + // New constrained wall source: register the visible near corner to + // the projected minimum-x/minimum-y world corner, never to the apron. + let building = try XCTUnwrap(billboards[2] as? SKSpriteNode) + building.texture = try texture("building-constrained") + building.xScale = 1; building.yScale = 1 + let canvas = CGFloat(1254) * (CGFloat(128) * CGFloat(2).squareRoot() / 934) * zoom + building.size = CGSize(width: canvas, height: canvas) + building.anchorPoint = CGPoint(x: CGFloat(653) / 1254, y: 1 - CGFloat(1152) / 1254) + building.position = projected(CGPoint(x: x - 64, y: y - 64)) + try capture("BP007-constrained-wall-\(tag)-geometry") + footprintRoot.isHidden = true + try capture("BP007-constrained-wall-\(tag)") + // BP-002 painted neutral source: one logical size and anchor across + // four real facings. Test-only textures; no clip or art admission. + let previousPlayerTexture = player.texture + let previousPlayerAnchor = player.anchorPoint + for facing in ["south", "east", "north", "west"] { + let candidate = try texture("painted-player-\(facing)") + XCTAssertEqual(candidate.size(), CGSize(width: 384, height: 384)) + player.texture = candidate + player.anchorPoint = CGPoint(x: 0.5, y: 0.125) + // A paused SKView does not run the post-action outline refresh. + // Use the normal scene callback so no previous-frame outline leaks. + scene.didEvaluateActions() + try capture("BP002-painted-neutral-\(facing)-\(tag)") + scene.refreshBenchmarkOutlines(samplingScale: 3) + try capture("BP007-outline-3x-\(facing)-\(tag)") + // BP-010: change only the added Player border in this paused + // review fixture. Never modify enemy outlines or source art. + let border = try XCTUnwrap(player.childNode(withName: WorldRenderer.outlineName)) + let originalAlpha = border.alpha + let rootPosition = player.position + let otherChildren = player.children.filter { $0 !== border }.map { ($0, $0.alpha) } + do { + defer { border.alpha = originalAlpha } + for (label, opacity) in [("half", CGFloat(0.5)), ("quarter", CGFloat(0.25)), ("none", CGFloat(0))] { + border.alpha = opacity + try capture("BP010-border-\(label)-\(facing)-\(tag)") + XCTAssertEqual(player.position, rootPosition) + XCTAssertTrue(player.texture === candidate) + for (node, alpha) in otherChildren { XCTAssertEqual(node.alpha, alpha) } + } + } + XCTAssertEqual(border.alpha, originalAlpha) + if zoom != 1 { + // BP-010 backdrop diagnostic. Reuse bundled level surfaces; + // only replace the review paving, not world geometry or art. + func pavingNodes(_ node: SKNode) -> [SKSpriteNode] { + let own = (node as? SKSpriteNode).flatMap { $0.texture === art.paving ? $0 : nil } + return (own.map { [$0] } ?? []) + node.children.flatMap(pavingNodes) + } + let ground = pavingNodes(scene) + XCTAssertFalse(ground.isEmpty) + let originals = ground.map { ($0, $0.texture) } + do { + defer { + for (node, original) in originals { node.texture = original } + border.alpha = originalAlpha + } + for surface in ["asphalt", "service"] { + let paving = try XCTUnwrap(env.texture(assetId: "env_ground_\(surface)")) + for node in ground { node.texture = paving } + for (label, opacity) in [("full", CGFloat(1)), ("quarter", CGFloat(0.25)), ("none", CGFloat(0))] { + border.alpha = opacity + try capture("BP010-ground-\(surface)-\(label)-\(facing)") + XCTAssertEqual(player.position, rootPosition) + XCTAssertTrue(player.texture === candidate) + } + } + } + for (node, original) in originals { XCTAssertTrue(node.texture === original) } + XCTAssertEqual(border.alpha, originalAlpha) + } + scene.didEvaluateActions() + } + player.texture = previousPlayerTexture + player.anchorPoint = previousPlayerAnchor + scene.didEvaluateActions() + if zoom == 1 { + // Actual fixed-point slide solver, isolated to this authored solid. + // These are contact probes, not a full encounter or animation proof. + let probes: [(String, Int, Int, Int16, Int16)] = [ + ("west", -130, 0, 32767, 0), ("east", 130, 0, -32767, 0), + ("south", 0, -130, 0, 32767), ("north", 0, 130, 0, -32767), + ("near-corner", -130, -130, 32767, 32767), + ("far-corner", 130, 130, -32767, -32767) + ] + // View direction for this candidate is toward decreasing world X/Y. + // Intersect that ground ray with the box, then require visual overlap. + // This bounded review classifier is not used by the shipping renderer. + func isOccluded(_ point: CGPoint) -> Bool { + let enter = max(0, point.x - CGFloat(box.maxX), point.y - CGFloat(box.maxY)) + let leave = min(point.x - CGFloat(box.minX), point.y - CGFloat(box.minY)) + return leave > enter && player.frame.intersects(building.frame) + } + let playerStart = player.position + let shadow = scene.childNode(withName: "//shadow-player") + let shadowStart = shadow?.position + var evidence = ["Isolated movement/collision probes. Radius18; existing obstacle unchanged. Neutral south art; no animation."] + for (label, dx, dy, mx, my) in probes { + var position = VecI(x: x + dx, y: y + dy).asQ8 + for tick in 1...40 { + let command = PlayerCommand(tick: UInt64(tick), moveX: mx, moveY: my, dodgePressed: false) + let delta = Movement.displacement(from: command, dodgeActive: false, ghostStep: false) + position = Collision.slideCircle(from: position, delta: delta, radius: PlayerBody.radiusUnits, + bounds: AABB(center: box.center, halfSize: VecI(x: 512, y: 512)), solids: [(id: id, box: box)]) + XCTAssertFalse(Circle(center: position, radiusUnits: PlayerBody.radiusUnits).penetrates(box)) + evidence.append("\(label),\(tick),\(position.x.raw),\(position.y.raw)") + } + // Four straight approaches end at exact radius contact. + if dy == 0 { XCTAssertEqual(abs(position.x.raw - Int64(x) * Q8.scale), Int64(82) * Q8.scale) } + if dx == 0 { XCTAssertEqual(abs(position.y.raw - Int64(y) * Q8.scale), Int64(82) * Q8.scale) } + let point = CGPoint(x: CGFloat(position.x.raw) / CGFloat(Q8.scale), + y: CGFloat(position.y.raw) / CGFloat(Q8.scale)) + player.position = projected(point) + if let shadowStart { + shadow?.position = CGPoint(x: point.x + shadowStart.x - CGFloat(snap.player.x), + y: point.y + shadowStart.y - CGFloat(snap.player.y)) + } + footprintRoot.isHidden = true + try capture("BP005-contact-\(label)") + let radius = SKShapeNode(circleOfRadius: CGFloat(PlayerBody.radiusUnits)) + radius.position = point; radius.strokeColor = .cyan; radius.fillColor = .clear + radius.lineWidth = 1 + footprintTranslation.addChild(radius) + footprintRoot.isHidden = false + try capture("BP005-contact-\(label)-geometry") + radius.removeFromParent() + let occluded = isOccluded(point) + XCTAssertEqual(occluded, ["east", "north", "far-corner"].contains(label)) + if occluded { + let priorZ = player.zPosition + let shadowWasHidden = shadow?.isHidden + player.zPosition = building.zPosition - 0.1 + shadow?.isHidden = true + footprintRoot.isHidden = true + try capture("BP005-opaque-depth-\(label)") + building.alpha = 0.35 + try capture("BP005-faded-depth-\(label)") + // BP-009: compare static projected ground cues with fading. + // Review parameters only; not the chosen shipping style. + footprint.strokeColor = SKColor(white: 0.85, alpha: 1) + footprint.lineWidth = 1.5 + footprint.fillColor = SKColor(white: 0.1, alpha: 0.16) + let contactBacking = SKShapeNode(circleOfRadius: CGFloat(PlayerBody.radiusUnits)) + contactBacking.position = point + contactBacking.fillColor = .clear + contactBacking.strokeColor = SKColor(white: 0.08, alpha: 1) + contactBacking.lineWidth = 3 + let contactRing = SKShapeNode(circleOfRadius: CGFloat(PlayerBody.radiusUnits)) + contactRing.fillColor = .clear + contactRing.strokeColor = SKColor(white: 0.95, alpha: 1) + contactRing.lineWidth = 1.25 + contactBacking.addChild(contactRing) + footprintTranslation.addChild(contactBacking) + footprintRoot.isHidden = false + XCTAssertFalse(contactBacking.hasActions()) + XCTAssertFalse(contactRing.hasActions()) + try capture("BP009-ground-cue-\(label)") + footprint.strokeColor = SKColor(white: 0.18, alpha: 0.8) + footprint.lineWidth = 1 + footprint.fillColor = SKColor(white: 0.08, alpha: 0.22) + try capture("BP009-muted-ground-cue-\(label)") + contactBacking.removeFromParent() + footprintRoot.isHidden = true + footprint.strokeColor = .magenta + footprint.lineWidth = 1; footprint.fillColor = .clear + building.alpha = 1 + player.zPosition = priorZ + if let shadowWasHidden { shadow?.isHidden = shadowWasHidden } + } + } + // Continuous solver movement around all four sides, with automatic + // treatment entry/exit. Sample every ten ticks for review playback. + let normalZ = player.zPosition + var position = VecI(x: x - 100, y: y - 100).asQ8 + let start = position + var previousOccluded = false, changes = 0, tick = 0 + let contact = SKShapeNode(circleOfRadius: CGFloat(PlayerBody.radiusUnits)) + contact.fillColor = .clear; contact.strokeColor = SKColor(white: 0.9, alpha: 1) + contact.lineWidth = 1.25 + footprintTranslation.addChild(contact) + footprint.strokeColor = SKColor(white: 0.18, alpha: 0.8) + footprint.lineWidth = 1; footprint.fillColor = SKColor(white: 0.08, alpha: 0.22) + for (mx, my) in [(Int16(32767), Int16(0)), (0, 32767), (-32767, 0), (0, -32767)] { + for _ in 0..<50 { + tick += 1 + let command = PlayerCommand(tick: UInt64(tick), moveX: mx, moveY: my, dodgePressed: false) + position = Collision.slideCircle(from: position, + delta: Movement.displacement(from: command, dodgeActive: false, ghostStep: false), + radius: PlayerBody.radiusUnits, + bounds: AABB(center: box.center, halfSize: VecI(x: 512, y: 512)), solids: [(id: id, box: box)]) + XCTAssertFalse(Circle(center: position, radiusUnits: PlayerBody.radiusUnits).penetrates(box)) + let point = CGPoint(x: CGFloat(position.x.raw) / CGFloat(Q8.scale), y: CGFloat(position.y.raw) / CGFloat(Q8.scale)) + player.position = projected(point) + let occluded = isOccluded(point) + if previousOccluded != occluded { changes += 1 } + previousOccluded = occluded + building.alpha = occluded ? 0.35 : 1 + player.zPosition = occluded ? building.zPosition - 0.1 : normalZ + footprintRoot.isHidden = !occluded; contact.position = point + shadow?.isHidden = occluded + if let shadowStart { shadow?.position = CGPoint(x: point.x + shadowStart.x - CGFloat(snap.player.x), y: point.y + shadowStart.y - CGFloat(snap.player.y)) } + evidence.append("perimeter,\(tick),\(position.x.raw),\(position.y.raw),occluded=\(occluded)") + if tick % 10 == 0 { try capture("BP009-perimeter-\(tick)") } + } + } + XCTAssertEqual(position, start) + XCTAssertEqual(changes, 2) + XCTAssertFalse(previousOccluded) + XCTAssertEqual(building.alpha, 1) + contact.removeFromParent(); footprintRoot.isHidden = true + footprint.strokeColor = .magenta; footprint.lineWidth = 1; footprint.fillColor = .clear + shadow?.isHidden = false + player.position = playerStart + if let shadowStart { shadow?.position = shadowStart } + let probeRecord = XCTAttachment(string: evidence.joined(separator: "\n")) + probeRecord.name = "BP005-contact-probes-q8" + probeRecord.lifetime = .keepAlways; add(probeRecord) + } + footprintRoot.removeFromParent() + for node in world { node.removeFromParent(); scene.addChild(node) } + for (node, parent, position, sx, sy, z) in originals { + node.removeFromParent(); parent.addChild(node) + node.position = position; node.xScale = sx; node.yScale = sy; node.zPosition = z + } + squash.removeFromParent() + } + let record = XCTAttachment(string: """ + Composition fixture, not a legal encounter or animation acceptance. + Runtime renderer and HUD; test-only candidate textures. 704x326 logical viewport. + Existing solid \(id) AABB is unchanged: \(box). Other solids omitted for isolated review. + Player, camera and props are explicitly placed presentation samples; simulation is unchanged. + One complete camera node. Candidate settled state captures at integrity3/2/1/0. + These are four still states, not the six required animated clip deliveries. + No locomotion animation claimed. + BP002-painted-neutral captures use four registered 384x384 test-only source + images at the same 64x64 logical canvas and (32,56) anchor. Both ground + projection zooms are captured with the constrained building, municipal + camera and props. Names identify view intent, not calibrated world facings. + Source registration/hashes: BenchmarkAssets/painted-player-sources.json. + These are still comparisons, not layered-source or animation acceptance. + Fog omitted while source strips await replacement. Paving uses existing plaza texture. + Building mapping: 190x217, bottom-center at (\(x),\(y-64)); not fitted to collision AABB. + Player mapping: 64x64, anchor (32,56). Camera mapping: 64x96, anchor (32,88). + Candidate source records are in BenchmarkAssets/sources.json. Linear filtering for high-resolution candidate textures. + BP007 comparison: identical snapshot, art sizes, center, HUD and 704x326 output viewport. + Close candidate: 1.25 world-to-view magnification (equivalent camera scale 0.8). + World nodes transformed before rasterization; camera/HUD unchanged. No bitmap upscaling. + This comparison reduces visible world area; it does not validate legal encounter readability. + """) + record.name = "BP001-revised-composition-record" + record.lifetime = .keepAlways + add(record) + } +#endif + +} diff --git a/AppTests/CameraPlaybackTests.swift b/AppTests/CameraPlaybackTests.swift new file mode 100644 index 00000000..5dfbd302 --- /dev/null +++ b/AppTests/CameraPlaybackTests.swift @@ -0,0 +1,191 @@ +import SpriteKit +import Testing +import UIKit +@testable import SSRuntime +@testable import SurveillanceCore + +/// BP-004: exercise the real renderer and delivered clips, not a parallel policy. +@Suite(.serialized) +@MainActor +struct CameraPlaybackTests { + private func snapshot() throws -> PresentationSnapshot { + PresentationSnapshot(try Simulation.make(seed: 1).state) + } + + private func sprite(_ renderer: WorldRenderer, _ snap: PresentationSnapshot) throws -> SKSpriteNode { + let id = try #require(snap.cameras.first?.id.raw) + return try #require(renderer.root.childNode(withName: "//sprite-camera-\(id)") as? SKSpriteNode) + } + + @Test func criticalIntegrityWinsOverTransientHitClip() throws { + var snap = try snapshot() + snap.cameras[0].integrity = 1 + snap.cameras[0].presentationState = .hit + snap.cameras[0].clipId = "camera_hit" + let renderer = WorldRenderer() + renderer.render(snap) + let node = try sprite(renderer, snap) + let action = try #require(node.action(forKey: "camera-state")) + let expected = try #require(SpriteLibrary().animation(clipId: "camera_critical_enter")) + #expect(action.duration == expected.duration) + snap.cameras[0].presentationState = .critical + snap.cameras[0].clipId = "camera_critical_enter" + renderer.render(snap) + #expect(node.action(forKey: "camera-state") === action) + #expect(node.position == CGPoint(x: snap.cameras[0].x, y: snap.cameras[0].y)) + // SpriteKit round-trips anchors at Float precision. Keep an exact + // comparison to that representation of the contract's (32,88). + #expect(node.anchorPoint == CGPoint(x: 0.5, y: CGFloat(Float(1 - 88.0 / 96.0)))) + } + + @Test func destructionSurvivesNextSnapshotAndDropsFieldImmediately() throws { + var snap = try snapshot() + let renderer = WorldRenderer() + renderer.render(snap) + let node = try sprite(renderer, snap) + let live = try #require(node.action(forKey: "camera-state")) + snap.cameras[0].integrity = 0 + snap.cameras[0].fieldVisible = false + snap.cameras[0].presentationState = .destroying + snap.cameras[0].clipId = "camera_destroy" + renderer.render(snap) + let destruction = try #require(node.action(forKey: "camera-state")) + #expect(destruction !== live) + #expect(renderer.root.childNode(withName: "//field-\(snap.cameras[0].id.raw)") == nil) + snap.cameras[0].presentationState = .dormant + snap.cameras[0].clipId = "camera_destroyed_idle" + renderer.render(snap) + #expect(node.action(forKey: "camera-state") === destruction) + } + + @Test func reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse() throws { + var snap = try snapshot() + let renderer = WorldRenderer() + let library = SpriteLibrary() + for (integrity, clip) in [(3, "camera_operational_idle"), (2, "camera_hit"), + (1, "camera_critical_enter"), (0, "camera_destroyed_idle")] { + snap.cameras[0].integrity = integrity + renderer.render(snap) + let node = try sprite(renderer, snap) + #expect(node.hasActions()) + renderer.render(snap, reducedMotion: true) + #expect(!node.hasActions()) + let actual = try #require(node.texture) + let expected = try #require(library.lastTexture(clipId: clip)) + #expect(UIImage(cgImage: actual.cgImage()).pngData() == UIImage(cgImage: expected.cgImage()).pngData()) + } + } + + @Test func newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode() throws { + var snap = try snapshot() + let renderer = WorldRenderer() + var previous: SKAction? + var original: SKSpriteNode? + for integrity in [3, 2, 1, 0] { + snap.cameras[0].integrity = integrity + renderer.render(snap) + let node = try sprite(renderer, snap) + if let original { #expect(node === original) } else { original = node } + let action = try #require(node.action(forKey: "camera-state")) + if let previous { #expect(action !== previous) } + previous = action + renderer.render(snap) + #expect(node.action(forKey: "camera-state") === action) + } + } + private final class BundleAnchor {} + + static func candidateFrames() throws -> [String: [SKTexture]] { + let bundle = Bundle(for: BundleAnchor.self) + let records = [("camera_operational_idle", "operationalIdle", 4), + ("camera_hit", "hit", 2), ("camera_critical_enter", "criticalEnter", 3), + ("camera_destroy", "destroy", 4), ("camera_field_off", "fieldOff", 1), + ("camera_destroyed_idle", "destroyedIdle", 2)] + var result: [String: [SKTexture]] = [:] + for (clip, stem, count) in records { + result[clip] = try (1...count).map { index in + let name = String(format: "actor_camera_%@_none_%02d@4x", stem, index) + let url = try #require(bundle.url(forResource: name, withExtension: "png")) + let image = try #require(UIImage(contentsOfFile: url.path)) + let texture = SKTexture(image: image) + texture.filteringMode = .nearest + return texture + } + } + return result + } + + @Test func completeCameraCandidatesUseShippingIntegrityPolicy() throws { + let candidates = try Self.candidateFrames() + let renderer = WorldRenderer() + #expect(renderer.installBenchmarkCameraFrames(candidates)) + var snap = try snapshot() + var original: SKSpriteNode? + var oldAction: SKAction? + for (integrity, settled) in [(3, "camera_operational_idle"), (2, "camera_hit"), + (1, "camera_critical_enter"), (0, "camera_destroyed_idle")] { + snap.cameras[0].integrity = integrity + snap.cameras[0].fieldVisible = integrity > 0 + renderer.render(snap) + let node = try sprite(renderer, snap) + if let original { #expect(node === original) } else { original = node } + #expect(renderer.root.childNode(withName: "//housing-\(snap.cameras[0].id.raw)") == nil) + let action = try #require(node.action(forKey: "camera-state")) + if let oldAction { #expect(action !== oldAction) } + renderer.render(snap) + #expect(node.action(forKey: "camera-state") === action) + oldAction = action + if integrity == 0 { + #expect(renderer.root.childNode(withName: "//field-\(snap.cameras[0].id.raw)") == nil) + } + renderer.render(snap, reducedMotion: true) + #expect(!node.hasActions()) + #expect(node.texture === candidates[settled]?.last) + #expect(node.position == CGPoint(x: snap.cameras[0].x, y: snap.cameras[0].y)) + } + } + + @Test func incompleteCameraCandidateFamilyCannotReplaceTextures() throws { + let library = SpriteLibrary() + let before = try #require(library.firstTexture(clipId: "camera_hit")) + var candidates = try Self.candidateFrames() + candidates["camera_destroy"]?.removeLast() + #expect(!library.installBenchmarkCameraFrames(candidates)) + #expect(library.firstTexture(clipId: "camera_hit") === before) + } + + @Test func fieldContrastCandidatesRetainClippedPathsAndClearWithFields() throws { + var snap = try snapshot() + snap.cameras[0].fieldVisible = true + snap.captainField = snap.cameras[0] + let renderer = WorldRenderer() + renderer.render(snap) + let name = "//field-\(snap.cameras[0].id.raw)" + let field = try #require(renderer.root.childNode(withName: name) as? SKShapeNode) + let baseline = try #require(field.path) + renderer.benchmarkFieldContrast = .paired + renderer.render(snap) + let inner = try #require(field.childNode(withName: "benchmark-field-inner") as? SKShapeNode) + #expect(field.path == baseline) + #expect(inner.path == baseline) + let captain = try #require(renderer.root.childNode(withName: "//captain-field") as? SKShapeNode) + #expect((captain.childNode(withName: "benchmark-field-inner") as? SKShapeNode)?.path == captain.path) + for _ in 0..<12 { renderer.render(snap) } + #expect(field.childNode(withName: "benchmark-field-inner") === inner) + #expect(field.children.filter { $0.name == "benchmark-field-inner" }.count == 1) + renderer.benchmarkFieldContrast = .control + renderer.render(snap) + #expect(field.childNode(withName: "benchmark-field-inner") == nil) + renderer.benchmarkFieldContrast = .paired + renderer.render(snap) + snap.cameras[0].integrity = 0 + snap.cameras[0].fieldVisible = false + snap.captainField = nil + renderer.render(snap) + #expect(renderer.root.childNode(withName: name) == nil) + #expect(renderer.root.childNode(withName: "//captain-field") == nil) + renderer.reset() + #expect(renderer.root.childNode(withName: "//benchmark-field-inner") == nil) + } + +} diff --git a/AppTests/DevicePresentationRegressionTests.swift b/AppTests/DevicePresentationRegressionTests.swift new file mode 100644 index 00000000..53610dc1 --- /dev/null +++ b/AppTests/DevicePresentationRegressionTests.swift @@ -0,0 +1,333 @@ +import SpriteKit +import UIKit +import Testing +@testable import SSRuntime +@testable import SurveillanceCore + +@Suite(.serialized) +@MainActor +struct DevicePresentationRegressionTests { + @Test func v2TimingReachesTrackerAndActualRendererTogether() throws { + var root = try JSONSerialization.jsonObject(with: SpecBundle.contract("clip-metadata-001")) as! [String: Any] + root["schemaVersion"] = "clip-metadata-002" + var clips = root["clips"] as! [[String: Any]] + for index in clips.indices { + let fps = clips[index].removeValue(forKey: "framesPerSecond") as! Int + let ids = clips[index]["frameIds"] as! [String] + clips[index]["timing"] = ["unitsPerSecond": fps, "frameUnits": Array(repeating: 1, count: ids.count)] + if clips[index]["clipId"] as? String == "player_hurt" { + clips[index]["timing"] = ["unitsPerSecond": 60, + "frameUnits": [1,2,3, 2,4,6, 3,6,9, 4,8,12]] + } + } + root["clips"] = clips + let data = try JSONSerialization.data(withJSONObject: root) + let catalog = try ClipCatalogLoader.decode(data) + let frames = try ClipFrameLibrary.make(clipJSON: data, catalog: AssetCatalog.bundled()) + let renderer = WorldRenderer(sprites: SpriteLibrary(frames: frames)) + var tracker = ReactionClipTracker(catalog: catalog) + let state = try Simulation.make(seed: 1).state + func event(_ tick: UInt64) -> TickResult { + TickResult(tick: tick, events: [AuthoritativeEvent(tick: tick, phase: 10, + type: .playerDamaged, primary: EntityID(1), insertion: 0)], digest: "", outcome: .playing) + } + func pixels(_ texture: SKTexture?) throws -> Data { + let texture = try #require(texture) + return try #require(UIImage(cgImage: texture.cgImage()).pngData()) + } + func expected(_ id: String) throws -> Data { + let file = try #require(frames.deliveredPaths[id]) + let url = try #require(RuntimeAssetBundle.url(forFile: file)) + let image = try #require(UIImage(contentsOfFile: url.path)) + return try pixels(SKTexture(image: image)) + } + tracker.ingest(event(100), previousEnemies: [], currentEnemies: [], playerDirection: "w") + #expect(tracker.playerReaction?.endTick == 124) + // First render is late. Independent authored boundaries: w=[4,8,12]. + for (tick, id) in [(UInt64(104), "actor_player_hurt_w_02"), (111, "actor_player_hurt_w_02"), (112, "actor_player_hurt_w_03")] { + var snap = PresentationSnapshot(state) + snap.tick = tick; snap.playerDirection = "e" + tracker.apply(to: &snap) + renderer.render(snap) + let node = try #require(renderer.root.childNode(withName: "//sprite-player") as? SKSpriteNode) + #expect(try pixels(node.texture) == expected(id)) + #expect(!node.hasActions()) + renderer.render(snap) // repeated tick / paused presentation + #expect(try pixels(node.texture) == expected(id)) + } + tracker.ingest(event(112), previousEnemies: [], currentEnemies: [], playerDirection: "w") + #expect(tracker.playerReaction?.endTick == 136) + var snap = PresentationSnapshot(state) + snap.tick = 112; snap.playerDirection = "e" + tracker.apply(to: &snap) + renderer.render(snap) + let node = try #require(renderer.root.childNode(withName: "//sprite-player") as? SKSpriteNode) + #expect(try pixels(node.texture) == expected("actor_player_hurt_w_01")) + renderer.render(snap, reducedMotion: true) + #expect(try pixels(node.texture) == expected("actor_player_hurt_w_03")) + snap.tick = 136 + tracker.apply(to: &snap) + renderer.render(snap) + #expect(snap.playerReactionClipId == nil) + #expect(try pixels(node.texture) == pixels(SpriteLibrary().firstTexture(clipId: snap.playerClipId, direction: "e"))) + renderer.reset() + #expect(renderer.root.childNode(withName: "//sprite-player") == nil) + } + + @Test func reactionPlaybackKeepsEventFacingAndElapsedPhase() throws { + var snap = PresentationSnapshot(try Simulation.make(seed: 1).state) + snap.playerReactionClipId = "player_hurt" + snap.playerReactionOccurrence = ClipOccurrence(direction: "w", startTick: 100) + snap.playerDirection = "e" + snap.tick = 106 // late first render: third of three 20-fps frames + let renderer = WorldRenderer() + let library = SpriteLibrary() + renderer.render(snap) + let node = try #require(renderer.root.childNode(withName: "//sprite-player") as? SKSpriteNode) + func pixels(_ texture: SKTexture?) throws -> Data { + let image = try #require(texture) + return try #require(UIImage(cgImage: image.cgImage()).pngData()) + } + let last = try pixels(library.lastTexture(clipId: "player_hurt", direction: "w")) + #expect(try pixels(node.texture) == last) + #expect(!node.hasActions()) + snap.playerDirection = "n" + renderer.render(snap) // same tick models a paused/repeated render + #expect(try pixels(node.texture) == last) + snap.playerReactionOccurrence = ClipOccurrence(direction: "w", startTick: 106) + renderer.render(snap) + #expect(try pixels(node.texture) == pixels(library.firstTexture(clipId: "player_hurt", direction: "w"))) + renderer.render(snap, reducedMotion: true) + #expect(try pixels(node.texture) == last) + snap.playerReactionClipId = "missing_reaction" + renderer.render(snap) + #expect(try pixels(node.texture) == pixels(library.firstTexture(clipId: snap.playerClipId, direction: "n"))) + snap.playerReactionClipId = nil + snap.playerReactionOccurrence = nil + renderer.render(snap) + #expect(node.hasActions()) + } + + @Test func cameraDamageNotchesPersistAndClearWithIntegrity() throws { + var snapshot = PresentationSnapshot(try Simulation.make(seed: 1).state) + let camera = try #require(snapshot.cameras.first) + snapshot.cameras = [camera] + let renderer = WorldRenderer() + let markerName = "//camera-damage-\(camera.id.raw)" + renderer.render(snapshot) + #expect(renderer.root.childNode(withName: markerName) == nil) + snapshot.cameras[0].integrity = 2 + renderer.render(snapshot) + let damaged = try #require(renderer.root.childNode(withName: markerName)) + #expect(damaged.children.filter { !$0.isHidden }.count == 1) + #expect(!damaged.hasActions()) + let position = damaged.position + snapshot.cameras[0].integrity = 1 + renderer.render(snapshot, reducedMotion: true) + let critical = try #require(renderer.root.childNode(withName: markerName)) + #expect(critical === damaged) + #expect(critical.position == position) + #expect(critical.children.filter { !$0.isHidden }.count == 2) + #expect(!critical.hasActions()) + snapshot.cameras[0].integrity = 0 + snapshot.cameras[0].fieldVisible = false + renderer.render(snapshot) + #expect(renderer.root.childNode(withName: markerName) == nil) + snapshot.cameras[0].integrity = 2 + renderer.render(snapshot) + #expect(renderer.root.childNode(withName: markerName) != nil) + snapshot.cameras = [] + renderer.render(snapshot) + #expect(renderer.root.childNode(withName: markerName) == nil) + } + + @Test func subUnitTravelAnimatesWithoutChangingAuthority() throws { + let session = GameSession(seed: 1) + var bare = try Simulation.make(seed: 1) + for (index, axis) in [Int16(2000), -2000, 2000, 0].enumerated() { + let before = session.simulation.state.player.position + session.moveX = axis + session.step() + _ = bare.step(command: PlayerCommand(tick: UInt64(index + 1), moveX: axis, moveY: 0, dodgePressed: false)) + #expect(session.simulation.state.digest() == bare.state.digest()) + #expect(session.simulation.state.player.movedUnitsLastTick == 0) + if axis == 0 { + #expect(session.simulation.state.player.position == before) + #expect(session.snapshot.playerClipId == "player_idle") + } else { + #expect(session.simulation.state.player.position != before) + #expect(session.snapshot.playerClipId == "player_move") + } + } + session.moveX = 2000 + session.step() + session.restartRun() + #expect(session.snapshot.playerClipId == "player_idle") + } + + @Test func cameraFieldStartsAtEmitterAndStopsAtCover() throws { + let simulation = try Simulation.make(seed: 1) + var camera = try #require(PresentationSnapshot(simulation.state).cameras.first) + camera.x = 0; camera.y = 0 + camera.fieldOrigin = VecI(x: 30, y: 0).asQ8 + camera.range = 200; camera.headingMilli = 0; camera.fieldAngleMilli = 90_000 + let wall = AABB(center: VecI(x: 110, y: 0), halfSize: VecI(x: 10, y: 200)) + let path = CameraFieldGeometry.path(.init(camera: camera, solids: [wall])) + #expect(!path.contains(CGPoint(x: 10, y: 0))) + #expect(path.contains(CGPoint(x: 80, y: 0))) + #expect(!path.contains(CGPoint(x: 120, y: 0))) + let open = CameraFieldGeometry.path(.init(camera: camera, solids: [])) + #expect(open.contains(CGPoint(x: 120, y: 0))) + } + + @Test func cameraUsesClockwiseHeadingAndNarrowCornerOcclusion() throws { + var camera = try #require(PresentationSnapshot(Simulation.make(seed: 1).state).cameras.first) + camera.fieldOrigin = VecI(x: 0, y: 0).asQ8 + camera.headingMilli = 90_000; camera.fieldAngleMilli = 90_000; camera.range = 240 + let path = CameraFieldGeometry.path(.init(camera: camera, solids: [])) + #expect(path.contains(CGPoint(x: 0, y: -100))) + #expect(!path.contains(CGPoint(x: 0, y: 100))) + camera.headingMilli = 0 + let narrow = AABB(center: VecI(x: 100, y: 7), halfSize: VecI(x: 2, y: 1)) + let clipped = CameraFieldGeometry.path(.init(camera: camera, solids: [narrow])) + #expect(!clipped.contains(CGPoint(x: 200, y: 14))) + #expect(clipped.contains(CGPoint(x: 200, y: -14))) + } + + @Test func snapshotPreservesAuthoritativeEmitterPosition() throws { + let simulation = try Simulation.make(seed: 1) + let snapshot = PresentationSnapshot(simulation.state) + for camera in snapshot.cameras { + let source = try #require(simulation.state.cameras.first { $0.entityId == camera.id }) + #expect(camera.fieldOrigin == source.fieldOrigin) + } + } + + @Test func cameraFieldRebuildsWhenCoverChanges() throws { + var snapshot = PresentationSnapshot(try Simulation.make(seed: 1).state) + var camera = try #require(snapshot.cameras.first) + camera.fieldOrigin = .zero; camera.x = 0; camera.y = 0 + camera.headingMilli = 0; camera.range = 240; camera.fieldAngleMilli = 90_000 + camera.fieldVisible = true + snapshot.cameras = [camera]; snapshot.captainField = nil + snapshot.solids = []; snapshot.solidIds = [] + let renderer = WorldRenderer() + renderer.render(snapshot) + let field = try #require(renderer.root.childNode(withName: "//field-\(camera.id.raw)") as? SKShapeNode) + #expect(try #require(field.path).contains(CGPoint(x: 180, y: 0))) + snapshot.solids = [AABB(center: VecI(x: 100, y: 0), halfSize: VecI(x: 10, y: 300))] + snapshot.solidIds = ["qa-wall"] + renderer.render(snapshot) + #expect(!(try #require(field.path)).contains(CGPoint(x: 180, y: 0))) + } + + @Test func returningCameraReattachesItsAnimation() throws { + var snapshot = PresentationSnapshot(try Simulation.make(seed: 1).state) + let camera = try #require(snapshot.cameras.first) + snapshot.cameras = [camera] + let renderer = WorldRenderer() + renderer.render(snapshot) + let name = "//sprite-camera-\(camera.id.raw)" + let first = try #require(renderer.root.childNode(withName: name) as? SKSpriteNode) + #expect(first.hasActions()) + snapshot.cameras = [] + renderer.render(snapshot) + #expect(renderer.root.childNode(withName: name) == nil) + snapshot.cameras = [camera] + renderer.render(snapshot) + let returned = try #require(renderer.root.childNode(withName: name) as? SKSpriteNode) + #expect(returned !== first) + #expect(returned.hasActions()) + } + + @Test func isolatedSlowFramesAreNotASustainedStreak() { + let collector = FrameTimeCollector() + var time = 0.0 + collector.recordFrame(timestamp: time) + for ms in [40.0, 16, 40, 16, 40] { + time += ms / 1000 + collector.recordFrame(timestamp: time) + } + #expect(!collector.summarize().sustainedBelowFloorFps) + for _ in 0..<3 { time += 0.05; collector.recordFrame(timestamp: time) } + #expect(collector.summarize().sustainedBelowFloorFps) + } + @Test func solidFootprintsRemainVisibleAcrossTransparentArt() throws { + let snapshot = PresentationSnapshot(try Simulation.make(seed: 1).state) + let renderer = WorldRenderer() + renderer.render(snapshot) + for (index, box) in snapshot.solids.enumerated() { + let id = snapshot.solidIds[index] + guard !id.hasPrefix(SelectedCamera.mountSolidPrefix), !snapshot.gateIds.contains(id) else { continue } + let foundation = try #require(renderer.root.childNode(withName: "//solid-footprint-\(id)") as? SKShapeNode) + #expect(foundation.fillColor.cgColor.alpha == 1) + #expect(foundation.path?.boundingBox.width == CGFloat(box.halfSize.x * 2)) + #expect(foundation.path?.boundingBox.height == CGFloat(box.halfSize.y * 2)) + } + } + + @Test func cameraHousingAndHeadUseTheSameGroundAnchor() throws { + let snapshot = PresentationSnapshot(try Simulation.make(seed: 1).state) + let renderer = WorldRenderer() + renderer.render(snapshot) + for camera in snapshot.cameras where camera.housingFamily != nil { + let housing = try #require(renderer.root.childNode(withName: "//housing-\(camera.id.raw)") as? SKSpriteNode) + let head = try #require(renderer.root.childNode(withName: "//sprite-camera-\(camera.id.raw)") as? SKSpriteNode) + #expect(housing.anchorPoint == head.anchorPoint) + #expect(head.texture != nil) // Visible even before SKActions evaluate. + } + } + + @Test func damageDiagnosticsPreserveRemovedMineAndUnknownSources() throws { + var before = try Simulation.make(seed: 1).state + let owner = EntityID(900) + before.mines = [MineBody(id: EntityID(901), ownerId: owner, + position: before.player.position, armRemaining: 0, lifeRemaining: 50, radius: 24, damage: 5)] + var after = before + after.mines = [] + let event = AuthoritativeEvent(tick: 1, phase: 12, type: .playerDamaged, + primary: before.player.id, secondary: owner, + payload: ["amount": .integer(5)], insertion: 0) + let hit = try #require(DamageDiagnostic.capture(before: before, after: after, events: [event]).first) + #expect(hit.sourceID == owner.raw) + #expect(hit.amount == 5) + #expect(hit.candidates.first?.kind == "removed-mine") + #expect(hit.candidates.first?.id == 901) + let unknown = AuthoritativeEvent(tick: 1, phase: 12, type: .playerDamaged, + secondary: EntityID(999), insertion: 1) + #expect(DamageDiagnostic.capture(before: before, after: after, events: [unknown]).first?.classification == "unresolved-source") + #expect(try JSONDecoder().decode(DamageDiagnostic.self, from: JSONEncoder().encode(hit)) == hit) + } + + @Test func diagnosticsNeverChangeAuthorityAndResetWithRun() { + let observed = GameSession(seed: 1) + let control = GameSession(seed: 1) + observed.damageDiagnosticsEnabled = true + for _ in 0..<120 { observed.step(); control.step() } + #expect(observed.simulation.state.digest() == control.simulation.state.digest()) + #expect(observed.commandLog == control.commandLog) + observed.restartRun() + #expect(observed.damageDiagnostics.isEmpty) + #expect(observed.latestDamageDiagnostics.isEmpty) + #expect(observed.droppedDamageDiagnostics == 0) + } + + @Test func pausingFreezesWorldActionsWithoutAdvancingTicks() throws { + let view = SKView(frame: CGRect(x: 0, y: 0, width: 844, height: 390)) + view.isPaused = true + let scene = GameScene(size: view.bounds.size) + view.presentScene(scene) + defer { view.presentScene(nil) } + let sprite = try #require(scene.childNode(withName: "//sprite-player")) + var world = sprite + while let parent = world.parent, parent !== scene { world = parent } + scene.setPaused(true) + let tick = scene.currentTick + scene.update(1) + #expect(world.isPaused) + #expect(scene.currentTick == tick) + scene.setPaused(false) + #expect(!world.isPaused) + } + +} diff --git a/AppTests/DisplayedPlaybackTests.swift b/AppTests/DisplayedPlaybackTests.swift new file mode 100644 index 00000000..64ef7b65 --- /dev/null +++ b/AppTests/DisplayedPlaybackTests.swift @@ -0,0 +1,1120 @@ +import SpriteKit +import UIKit +import XCTest +@testable import SSRuntime +@testable import SurveillanceCore + +#if DEBUG +/// BP-008 harness sanity: real action-time textures and real simulation travel. +/// This does not admit candidate art or close the full movement matrix. +@MainActor +final class DisplayedPlaybackTests: XCTestCase { + final class CaptureScene: SKScene { + struct Sample: Codable { + let displayTime: Double + let tick: UInt64 + let authoritativeRawX: Int64 + let authoritativeRawY: Int64 + let renderedX: Double + let renderedY: Double + let width: Double + let height: Double + let anchorX: Double + let anchorY: Double + let facing: String + let clip: String + let framePath: String? + } + let renderer = WorldRenderer() + let session = GameSession(seed: 1) + var samples: [Sample] = [] + var done: (() -> Void)? + private var previousTime: Double? + private var accumulator = 0.0 + private var displayTime = 0.0 + private var finished = false + + override func didMove(to view: SKView) { + addChild(renderer.root) + session.moveY = PlayerCommand.axisMaximum + let camera = SKCameraNode() + addChild(camera) + self.camera = camera + } + override func update(_ currentTime: TimeInterval) { + guard !finished else { return } + displayTime = currentTime + if let previousTime { accumulator += min(currentTime - previousTime, 0.25) } + previousTime = currentTime + while accumulator >= 1.0 / 60.0 { + session.step() + accumulator -= 1.0 / 60.0 + } + let snap = session.snapshot + camera?.position = CGPoint(x: snap.player.x, y: snap.player.y) + renderer.render(snap, reducedMotion: false) + } + override func didEvaluateActions() { + guard !finished, let observed = renderer.observePlayerPlayback() else { return } + let state = session.simulation.state + let snap = session.snapshot + samples.append(Sample(displayTime: displayTime, tick: state.tick, + authoritativeRawX: state.player.position.x.raw, + authoritativeRawY: state.player.position.y.raw, + renderedX: Double(observed.position.x), renderedY: Double(observed.position.y), + width: Double(observed.size.width), height: Double(observed.size.height), + anchorX: Double(observed.anchor.x), anchorY: Double(observed.anchor.y), + facing: snap.playerDirection, clip: observed.clipToken ?? "unidentified", + framePath: observed.deliveredPath)) + // #126: tick coverage and observed display coverage are independent. + if state.tick >= 90 && samples.count > 10 { + finished = true + done?() + } + } + } + + func testLiveActionsExposeChangingDeliveredFramesAndSimulationTravel() async throws { + let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + let controller = UIViewController() + let view = SKView(frame: window.bounds) + controller.view = view + window.rootViewController = controller + window.makeKeyAndVisible() + let scene = CaptureScene(size: view.bounds.size) + let completed = expectation(description: "at least 90 simulation ticks and 11 post-action observations") + scene.done = { completed.fulfill() } + view.presentScene(scene) + defer { view.presentScene(nil); window.isHidden = true } + await fulfillment(of: [completed], timeout: 15) + XCTAssertGreaterThan(scene.samples.count, 10) + XCTAssertTrue(scene.samples.allSatisfy { $0.framePath != nil }) + let moving = scene.samples.filter { $0.clip.hasPrefix("player_move|") } + XCTAssertGreaterThan(Set(moving.compactMap(\.framePath)).count, 1, + "A static or reset-on-every-frame fixture cannot prove playback") + let first = try XCTUnwrap(scene.samples.first) + XCTAssertTrue(scene.samples.contains { + $0.authoritativeRawX != first.authoritativeRawX || $0.authoritativeRawY != first.authoritativeRawY + }) + let encoder = JSONEncoder() + encoder.outputFormatting = [.prettyPrinted, .sortedKeys] + let data = try encoder.encode(scene.samples) + let attachment = XCTAttachment(data: data, uniformTypeIdentifier: "public.json") + attachment.name = "BP008-live-admitted-player-post-action-frames" + attachment.lifetime = .keepAlways + add(attachment) + } + + func testFullGameSceneCapturesPostActionImagesWithFrameRecords() async throws { + let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + let controller = UIViewController() + let view = SKView(frame: window.bounds) + controller.view = view + window.rootViewController = controller + window.makeKeyAndVisible() + let scene = GameScene(size: view.bounds.size, session: GameSession(seed: 1)) + scene.session.audioSettings = .init(effectsEnabled: false, hapticsEnabled: false, musicEnabled: false) + let completed = expectation(description: "full GameScene post-action captures") + var records: [[String: Any]] = [] + var images: [(String, UIImage)] = [] + var capturedPaths: Set = [] + var finished = false + scene.benchmarkPlaybackObserver = { time, snapshot, position, observed, camera in + guard !finished else { return } + let imageName = "BP008-full-scene-tick-\(snapshot.tick)" + var record: [String: Any] = [ + "displayTime": time, "tick": snapshot.tick, + "authoritativeRawX": position.x.raw, "authoritativeRawY": position.y.raw, + "renderedX": observed.position.x, "renderedY": observed.position.y, + "cameraX": camera.x, "cameraY": camera.y, + "width": observed.size.width, "height": observed.size.height, + "anchorX": observed.anchor.x, "anchorY": observed.anchor.y, + "facing": snapshot.playerDirection, "clip": observed.clipToken ?? "unidentified", + "framePath": observed.deliveredPath ?? "unidentified", + "viewportWidth": view.bounds.width, "viewportHeight": view.bounds.height, + "displayScale": view.contentScaleFactor + ] + if let path = observed.deliveredPath, snapshot.playerClipId == "player_move", + images.count < 4, !capturedPaths.contains(path) { + let crop = CGRect(x: camera.x - 352, y: camera.y - 163, width: 704, height: 326) + if let texture = view.texture(from: scene, crop: crop) { + images.append((imageName, UIImage(cgImage: texture.cgImage()))) + capturedPaths.insert(path) + record["imageAttachment"] = imageName + } + } + records.append(record) + if snapshot.tick >= 90 { finished = true; completed.fulfill() } + } + view.presentScene(scene) + defer { + scene.benchmarkPlaybackObserver = nil + view.presentScene(nil) + window.isHidden = true + } + let layout = try XCTUnwrap(scene.controlLayout) + final class Finger {} + let finger = Finger() + let token = TouchController.TouchToken(id: ObjectIdentifier(finger)) + // First input dismisses an active intro; a second begins normal steering. + _ = scene.beginTouch(token: token, atPoints: layout.stickCentre) + _ = scene.beginTouch(token: token, atPoints: layout.stickCentre) + scene.moveTouch(token: token, toPoints: CGPoint(x: layout.stickCentre.x, + y: layout.stickCentre.y - layout.stickRadius)) + await fulfillment(of: [completed], timeout: 30) + scene.endTouch(token: token) + XCTAssertGreaterThan(images.count, 1) + XCTAssertTrue(records.allSatisfy { ($0["framePath"] as? String) != "unidentified" }) + XCTAssertGreaterThan(Set(records.compactMap { $0["authoritativeRawY"] as? Int64 }).count, 1) + for (name, image) in images { + let attachment = XCTAttachment(image: image) + attachment.name = name + attachment.lifetime = .keepAlways + add(attachment) + } + let data = try JSONSerialization.data(withJSONObject: records, options: [.prettyPrinted, .sortedKeys]) + let attachment = XCTAttachment(data: data, uniformTypeIdentifier: "public.json") + attachment.name = "BP008-full-scene-post-action-records" + attachment.lifetime = .keepAlways + add(attachment) + } + + static func interruptionCommand(tick: UInt64) -> PlayerCommand { + let m = PlayerCommand.axisMaximum + let x: Int16, y: Int16 + switch tick { + case 1...30: (x, y) = (-m, 0) + case 31...60: (x, y) = (-m, -m) + case 61...120, 151...225: (x, y) = (0, -m) + case 136...150, 241...300: (x, y) = (0, m) + default: (x, y) = (0, 0) + } + return PlayerCommand(tick: tick, moveX: x, moveY: y, dodgePressed: tick == 211) + } + + /// Isolated ground/contact comparison, not a full benchmark encounter. + final class PlayerCandidateScene: SKScene { + let renderer: WorldRenderer + let session: GameSession + let axis: Int16 + let reducedMotion: Bool + let stage: Int + var simulationSeconds = 0.0 + var renderSeconds = 0.0 + var postActionSeconds = 0.0 + var diagnosticSeconds = 0.0 + private var presentedSnapshot: PresentationSnapshot? + var snapshotBuildCount = 0 + var frameCosts: [[String: Any]] = [] + var cleanSilhouetteReview = false + // BP-008 experiment only; shipping renderer cadence remains untouched. + var reviewLabel = "" + var distancePhaseComparison = false + var candidateTextures: [SKTexture] = [] + var moveTicks: UInt64 = 120 + var interruptionRoute = false + private var pauseUntil: TimeInterval? + private var pauseCompleted = false + private var reviewPaused = false + private var accumulatedTravel = 0.0 + private var distanceSegmentActive = false + private var sceneConfigured = false + private var initialDisplayPasses = 0 + private var initialDisplayBegan: TimeInterval? + var initialDisplaySeconds = 0.0 + private var preparingDisplay = false + let paths: [String] + let upright = SKNode() + var records: [[String: Any]] = [] + var images: [(String, UIImage)] = [] + var seenPaths: Set = [] + var done: (() -> Void)? + private var previousTime: Double? + private var accumulator = 0.0 + private var now = 0.0 + private var finished = false + + init(size: CGSize, library: SpriteLibrary, paths: [String], axis: Int16, reducedMotion: Bool, stage: Int) throws { + var simulation = try Simulation.make(seed: 1) + simulation.testing_setPlayerPosition(VecI(x: 224, y: 704)) + session = GameSession(simulation: simulation) + self.axis = axis; self.reducedMotion = reducedMotion; self.stage = stage + renderer = WorldRenderer(sprites: library) + self.paths = paths + if stage >= 1 { + renderer.benchmarkPlayerRegistration = (CGSize(width: 64, height: 416.0 / 6.0), + CGPoint(x: 0.5, y: 1 - 336.0 / 416.0)) + } + super.init(size: size) + } + required init?(coder: NSCoder) { fatalError("init(coder:) unsupported") } + override func didMove(to view: SKView) { configureScene() } + func configureScene() { + guard !sceneConfigured else { return } + sceneConfigured = true + addChild(renderer.root) + renderer.root.yScale = 0.5 + upright.name = "player-source-wrapper"; upright.yScale = 2 + renderer.root.children[WorldRenderer.Layer.actors.rawValue].addChild(upright) + let camera = SKCameraNode(); addChild(camera); self.camera = camera + let label = SKLabelNode(fontNamed: "Menlo") + label.text = reviewLabel; label.fontSize = 11; label.fontColor = .white + label.horizontalAlignmentMode = .left; label.position = CGPoint(x: -340, y: 145) + label.zPosition = 10000; camera.addChild(label) + session.moveY = -axis + } + override func update(_ time: TimeInterval) { + guard !finished else { return } + now = time + preparingDisplay = stage >= 4 && initialDisplayPasses < 2 + if preparingDisplay { + if initialDisplayBegan == nil { initialDisplayBegan = time } + // Initial presentation is loading, never gameplay catch-up. + previousTime = nil + } else if let began = initialDisplayBegan { + initialDisplaySeconds = time - began + initialDisplayBegan = nil + } + reviewPaused = pauseUntil.map { time < $0 } ?? false + if pauseUntil != nil && !reviewPaused { + pauseUntil = nil; pauseCompleted = true; previousTime = nil; accumulator = 0 + renderer.root.isPaused = false + } + if reviewPaused { previousTime = nil; accumulator = 0 } + if let previousTime { accumulator += min(time - previousTime, 0.25) } + previousTime = preparingDisplay || reviewPaused ? nil : time + let simulationBegan = CFAbsoluteTimeGetCurrent() + while accumulator >= 1.0 / 60.0 { + if interruptionRoute { + let command = DisplayedPlaybackTests.interruptionCommand(tick: session.simulation.state.tick + 1) + session.moveX = command.moveX; session.moveY = command.moveY + session.dodgePressed = command.dodgePressed + } else { + session.moveY = session.simulation.state.tick < moveTicks ? -axis : 0 + } + let before = session.simulation.state.player.position + session.step(); accumulator -= 1.0 / 60.0 + if distancePhaseComparison { + let after = session.simulation.state.player.position + let dx = Double(after.x.raw - before.x.raw) / 256 + let dy = Double(after.y.raw - before.y.raw) / 256 + let travel = hypot(dx, dy) + if travel > 0 { + if distanceSegmentActive { accumulatedTravel += travel } + else { distanceSegmentActive = true; accumulatedTravel = 0 } + } + } + if interruptionRoute && !pauseCompleted && session.simulation.state.tick == 120 { + pauseUntil = time + 0.35; reviewPaused = true + renderer.root.isPaused = true; previousTime = nil; accumulator = 0 + break + } + } + let simulationCost = CFAbsoluteTimeGetCurrent() - simulationBegan + simulationSeconds += simulationCost + let renderBegan = CFAbsoluteTimeGetCurrent() + let snap = session.snapshot + presentedSnapshot = snap + snapshotBuildCount += 1 + renderer.render(snap, reducedMotion: reducedMotion) + if distancePhaseComparison { applyDistanceFrameIfSelected() } + let renderCost = CFAbsoluteTimeGetCurrent() - renderBegan + renderSeconds += renderCost + frameCosts.append(["tick": session.simulation.state.tick, "simulationSeconds": simulationCost, + "renderSeconds": renderCost]) + // Only ground and this actor are in the registration diagnostic. + // Other upright art must not be flattened into this comparison. + for (index, layer) in renderer.root.children.enumerated() { + layer.isHidden = index != WorldRenderer.Layer.ground.rawValue + && index != WorldRenderer.Layer.actors.rawValue + if index == WorldRenderer.Layer.actors.rawValue { + for child in layer.children { child.isHidden = child.name != "sprite-player" && child !== upright } + } + } + if let player = renderer.root.childNode(withName: "//sprite-player") as? SKSpriteNode { + player.size = CGSize(width: 64, height: 416.0 / 6.0) + player.anchorPoint = CGPoint(x: 0.5, y: 1 - 336.0 / 416.0) + // Project ground roots, preserving the already elevated artwork. + if player.parent !== upright { + player.removeFromParent(); upright.addChild(player) + } + player.yScale = 1 + player.position.y /= 2 + } + camera?.position = CGPoint(x: snap.player.x, y: snap.player.y / 2) + } + @discardableResult + func applyDistanceFrameIfSelected() -> Bool { + // Base movement can be obscured by a selected event reaction. + guard renderer.observePlayerPlayback()?.clipToken == "player_move|s", + candidateTextures.count == 16, + let player = renderer.root.childNode(withName: "//sprite-player") as? SKSpriteNode else { + distanceSegmentActive = false; accumulatedTravel = 0 + return false + } + let phase = accumulatedTravel.truncatingRemainder(dividingBy: 120) / 120 + player.removeAllActions() + player.texture = candidateTextures[min(15, Int(floor(phase * 16)))] + return true + } + override func didEvaluateActions() { + guard !finished else { return } + // Match GameScene post-action outline synchronization. + let postBegan = CFAbsoluteTimeGetCurrent() + renderer.syncOutlines() + // Visual review only: preserve measured outline preparation controls, + // but do not show their diagnostic border in the clean art capture. + if cleanSilhouetteReview { + renderer.root.enumerateChildNodes(withName: "//" + WorldRenderer.outlineName) { node, _ in + node.isHidden = true + } + } + postActionSeconds += CFAbsoluteTimeGetCurrent() - postBegan + if preparingDisplay { + initialDisplayPasses += 1 + return + } + let diagnosticBegan = CFAbsoluteTimeGetCurrent() + defer { diagnosticSeconds += CFAbsoluteTimeGetCurrent() - diagnosticBegan } + guard let snapshot = presentedSnapshot else { return } + // #130: completion and missing-frame evidence cannot depend on move art. + defer { + if session.simulation.state.tick >= moveTicks + 30 { + finished = true; done?() + } + } + guard let observed = renderer.observePlayerPlayback(), + let path = observed.deliveredPath, let frame = paths.firstIndex(of: path), + let player = renderer.root.childNode(withName: "//sprite-player"), + let parent = player.parent else { + records.append(["displayTime": now, "tick": session.simulation.state.tick, + "facing": snapshot.playerDirection, "clip": snapshot.playerClipId, + "candidateAvailable": false, "inputAxis": axis, "reducedMotion": reducedMotion, + "reviewPaused": reviewPaused]) + return + } + let position = session.simulation.state.player.position + let projected = convert(player.position, from: parent) + let record: [String: Any] = [ + "displayTime": now, "tick": session.simulation.state.tick, + "inputAxis": axis, "reducedMotion": reducedMotion, "candidateAvailable": true, + "cameraX": camera?.position.x ?? 0, "cameraY": camera?.position.y ?? 0, + "viewScale": view?.contentScaleFactor ?? 1, + "authoritativeRawX": position.x.raw, "authoritativeRawY": position.y.raw, + "renderedX": projected.x, "renderedY": projected.y, + "framePath": path, "sourceFrameIndex": frame, + "facing": snapshot.playerDirection, + "clip": observed.clipToken ?? "unidentified", + "width": observed.size.width, "height": observed.size.height, + "anchorX": observed.anchor.x, "anchorY": observed.anchor.y, + "groundYScale": 0.5, "artYScaleAfterParent": 1.0, + "distancePhaseComparison": distancePhaseComparison, "accumulatedTravel": accumulatedTravel, + "observationWallTime": Date().timeIntervalSince1970, "reviewPaused": reviewPaused + ] + // Record texture identity independently of costly GPU image readback. + seenPaths.insert(path) + records.append(record) + } + } + + func testRevisedPlayerCleanSilhouetteReview() async throws { + try await capturePlayerCycle(axis: PlayerCommand.axisMaximum, reducedMotion: false, + repetition: 10, cleanSilhouetteReview: true) + } + func testRevisedPlayerSourcePlaysWithProjectedSimulationTravel() async throws { + try await capturePlayerCycle(axis: PlayerCommand.axisMaximum, reducedMotion: false) + } + func testRevisedPlayerHalfInputCycle() async throws { + try await capturePlayerCycle(axis: PlayerCommand.axisMaximum / 2, reducedMotion: false) + } + func testRevisedPlayerQuarterInputCycle() async throws { + try await capturePlayerCycle(axis: PlayerCommand.axisMaximum / 4, reducedMotion: false) + } + func testRevisedPlayerReducedMotionCycle() async throws { + for repetition in 1...3 { + try await capturePlayerCycle(axis: PlayerCommand.axisMaximum, reducedMotion: true, + repetition: repetition) + } + } + func testCommandDrivenInterruptionRoute() async throws { + for reduced in [false, true] { + for distance in [false, true] { + try await capturePlayerCycle(axis: PlayerCommand.axisMaximum, reducedMotion: reduced, + repetition: distance ? 30 : 31, cleanSilhouetteReview: true, + distancePhaseComparison: distance, moveTicks: 300, interruptionRoute: true) + } + } + } + + /// Live renderer composition with a real, preflighted SW simulation route. + /// Other encounter actors are omitted from this art-review snapshot only. + final class SharedTraversalScene: SKScene { + let renderer: WorldRenderer + let session: GameSession + let reduced: Bool + let magnification: CGFloat + let tracksPlayer: Bool + let textures: [SKTexture] + let center = CGPoint(x: 706, y: 644) + let hud = HUDRenderer() + let squash = SKNode(), rotation = SKNode(), translation = SKNode() + var originals: [(SKNode, SKNode, CGPoint, CGFloat)] = [] + var player: SKSpriteNode? + var selectedClip: String? + var presentedPlayer = CGPoint.zero + var records: [[String: Any]] = [] + var images: [(Int, UIImage)] = [] + var seen: Set = [] + var seenImages: Set = [] + var capturesImages = false + var done: (() -> Void)? + var previous: TimeInterval? + var accumulator = 0.0 + var warmup = 0 + var finished = false + var worldTrace: [VecQ8] = [] + init(size: CGSize, renderer: WorldRenderer, textures: [SKTexture], reduced: Bool, magnification: CGFloat = 1, tracksPlayer: Bool = false) throws { + var simulation = try Simulation.make(seed: 1) + simulation.testing_setPlayerPosition(VecI(x: 736, y: 654)) + session = GameSession(simulation: simulation) + self.renderer = renderer; self.textures = textures + self.reduced = reduced + self.magnification = magnification; self.tracksPlayer = tracksPlayer + super.init(size: size) + squash.position = center; squash.yScale = 0.5 + rotation.zRotation = .pi / 4 + translation.position = CGPoint(x: -center.x, y: -center.y) + addChild(squash); squash.addChild(rotation); rotation.addChild(translation) + translation.addChild(renderer.root) + let camera = SKCameraNode(); camera.position = center; addChild(camera); self.camera = camera + camera.setScale(1 / magnification) + camera.addChild(hud.root) + hud.configure(projector: HUDProjector(viewSize: size, + safeInsets: EdgeInsetsPoints(top: 0, left: 0, bottom: 0, right: 0), sceneSize: size), + handedness: .right, hudScale: .standard) + let label = SKLabelNode(fontNamed: "Menlo") + label.text = "BP008 projected SW / front source / composition only" + label.fontSize = 9; label.position = CGPoint(x: 0, y: -153) + label.zPosition = 10000; camera.addChild(label) + } + required init?(coder: NSCoder) { fatalError("unsupported") } + func restoreBillboards() { + for (node, parent, position, z) in originals { + node.removeFromParent(); node.position = position; node.zPosition = z; parent.addChild(node) + } + originals.removeAll(keepingCapacity: true) + } + override func update(_ time: TimeInterval) { + guard !finished else { return } + restoreBillboards() + player = nil + if warmup >= 2, let previous { accumulator += min(time - previous, 0.25) } + previous = time + while accumulator >= 1.0 / 60.0 && session.simulation.state.tick < 90 { + let moving = session.simulation.state.tick < 75 + session.moveX = moving ? -PlayerCommand.axisMaximum : 0 + session.moveY = moving ? -PlayerCommand.axisMaximum : 0 + session.step(); accumulator -= 1.0 / 60.0 + worldTrace.append(session.simulation.state.player.position) + } + var snap = session.snapshot + // Review composition, not a legal-encounter visibility or camera proof. + let index = snap.solidIds.firstIndex(of: "solid-03-transit-kiosk")! + snap.solids = [snap.solids[index]]; snap.solidIds = ["solid-03-transit-kiosk"] + snap.enemies = []; snap.projectiles = []; snap.telegraphs = []; snap.mines = [] + snap.spawnSockets = []; snap.captainHousings = []; snap.captainField = nil; snap.patrolCones = [] + snap.cameras = Array(snap.cameras.prefix(1)) + snap.cameras[0].x = 846; snap.cameras[0].y = 674 + snap.cameras[0].fieldOrigin = VecI(x: 846, y: 674).asQ8 + snap.cameras[0].headingMilli = 100_000 + renderer.render(snap, reducedMotion: reduced) + selectedClip = renderer.observePlayerPlayback()?.clipToken + presentedPlayer = CGPoint(x: snap.player.x, y: snap.player.y) + hud.render(snap, cameraHUD: session.cameraHUDProjection, paused: false) + if magnification != 1 { + let initial = translation.convert(CGPoint(x: 736, y: 654), to: self) + let current = translation.convert(presentedPlayer, to: self) + camera?.position = CGPoint(x: center.x + 35 + (tracksPlayer ? current.x - initial.x : 0), + y: center.y + 25 + (tracksPlayer ? current.y - initial.y : 0)) + } + + let names = ["sprite-player", "sprite-camera-\(snap.cameras[0].id.raw)", + "benchmark-building", "benchmark-prop-0", "benchmark-prop-1"] + for name in names { + guard let node = renderer.root.childNode(withName: "//" + name), let parent = node.parent else { continue } + let world = renderer.root.convert(node.position, from: parent) + let point = translation.convert(world, to: self) + var z = node.zPosition + var ancestor: SKNode? = parent + while let current = ancestor, current !== self { z += current.zPosition; ancestor = current.parent } + originals.append((node, parent, node.position, node.zPosition)) + node.removeFromParent(); node.position = point; node.zPosition = z; addChild(node) + if name == "sprite-player" { player = node as? SKSpriteNode } + } + renderer.root.enumerateChildNodes(withName: "//" + WorldRenderer.outlineName) { node, _ in node.isHidden = true } + player?.enumerateChildNodes(withName: "//" + WorldRenderer.outlineName) { node, _ in node.isHidden = true } + } + override func didEvaluateActions() { + guard !finished else { return } + warmup += 1 + guard warmup > 2 else { return } + defer { if session.simulation.state.tick == 90 { finished = true; done?() } } + guard let player else { return } + let frame = textures.firstIndex { $0 === player.texture } + let world = session.simulation.state.player.position + let cameraPosition = camera!.position + let visible = CGRect(x: cameraPosition.x - size.width / magnification / 2, + y: cameraPosition.y - size.height / magnification / 2, + width: size.width / magnification, height: size.height / magnification) + let emitter = translation.convert(CGPoint(x: 846, y: 674), to: self) + let record: [String: Any] = ["tick": session.simulation.state.tick, + "wallTime": Date().timeIntervalSince1970, + "rawX": world.x.raw, "rawY": world.y.raw, + "presentationX": presentedPlayer.x, "presentationY": presentedPlayer.y, + "renderedX": player.position.x, "renderedY": player.position.y, + "frame": frame ?? -1, "selectedClip": selectedClip ?? "none", + "worldFacing": session.snapshot.playerDirection, "authoredFacing": "front", + "reducedMotion": reduced, "magnification": magnification, "tracksPlayer": tracksPlayer, + "playerCanvasVisible": visible.contains(player.frame), "cameraEmitterVisible": visible.contains(emitter), + "viewCenterX": cameraPosition.x, "viewCenterY": cameraPosition.y, + "playerScreenX": (player.position.x - cameraPosition.x) * magnification + size.width / 2, + "playerScreenY": (player.position.y - cameraPosition.y) * magnification + size.height / 2] + records.append(record) + if let frame { + seen.insert(frame) + if capturesImages, [0, 4, 8, 12].contains(frame), seenImages.insert(frame).inserted, + let image = view?.texture(from: self, + crop: CGRect(x: center.x - 352, y: center.y - 163, width: 704, height: 326)) { + images.append((frame, UIImage(cgImage: image.cgImage()))) + } + } + } + } + + func testSessionStepStageTimingPreservesAuthority() throws { + var measurements: [[String: Any]] = [] + for measuredFirst in [false, true] { + var initial = try Simulation.make(seed: 1) + initial.testing_setPlayerPosition(VecI(x: 224, y: 704)) + let control = GameSession(simulation: initial), measured = GameSession(simulation: initial) + measured.benchmarkStepTimingEnabled = true + control.moveY = -PlayerCommand.axisMaximum; measured.moveY = -PlayerCommand.axisMaximum + for tick in 1...120 { + if measuredFirst { measured.step(); control.step() } + else { control.step(); measured.step() } + XCTAssertEqual(measured.simulation.state.digest(), control.simulation.state.digest()) + XCTAssertEqual(measured.lastEvents, control.lastEvents) + XCTAssertTrue(control.benchmarkStepTimings.isEmpty) + XCTAssertEqual(Set(measured.benchmarkStepTimings.keys), Set([ + "commandAndFeelBefore", "simulation", "diagnosticsAndCommandLog", "reactions", + "hudCaptionsQuietFeel", "audioAndCaptionBoard", "awarenessSnapshotAndHint", "terminalReceipt" + ])) + measurements.append(["tick": tick, "measuredFirst": measuredFirst, + "seconds": measured.benchmarkStepTimings]) + } + XCTAssertEqual(measured.commandLog, control.commandLog) + } + let data = try JSONSerialization.data(withJSONObject: measurements, options: [.prettyPrinted, .sortedKeys]) + let attachment = XCTAttachment(data: data, uniformTypeIdentifier: "public.json") + attachment.name = "BP008-session-step-stage-timings" + attachment.lifetime = .keepAlways; add(attachment) + } + + func testSharedProjectedPlayerTraversal() async throws { + let facing = ClipFrameLibrary.direction(forFacing: VecQ8(unitsX: -1, unitsY: -1)) + var preflight = try Simulation.make(seed: 1) + preflight.testing_setPlayerPosition(VecI(x: 736, y: 654)) + var expected: [VecQ8] = [] + for tick in 1...90 { + let before = preflight.state.player.position + let axis: Int16 = tick <= 75 ? -PlayerCommand.axisMaximum : 0 + _ = preflight.step(command: PlayerCommand(tick: UInt64(tick), moveX: axis, moveY: axis, dodgePressed: false)) + let after = preflight.state.player.position + if tick <= 75 { + XCTAssertLessThan(after.x.raw, before.x.raw) + XCTAssertEqual(after.x.raw - before.x.raw, after.y.raw - before.y.raw) + } + expected.append(after) + } + let bundle = Bundle(for: Self.self) + func texture(_ name: String) throws -> SKTexture { + let url = try XCTUnwrap(bundle.url(forResource: name, withExtension: "png")) + let image = try XCTUnwrap(UIImage(contentsOfFile: url.path)) + let texture = SKTexture(image: image); texture.filteringMode = .linear; return texture + } + let paths = (0..<16).map { String(format: "player-source-s-%02d", $0) } + let textures = try paths.map(texture) + // Explicit pilot alias: this world diagonal projects toward the viewer. + // It is not a new source facing or production metadata migration. + let ids = (0..<16).map { String(format: "player_move_%@_%02d", facing, $0) } + let clip = ClipFrameLibrary.Clip(clipId: "player_move", actorRole: "player", directions: [facing], + framesPerSecond: nil, + authoredTiming: try ClipTiming(unitsPerSecond: 32, frameUnits: Array(repeating: 1, count: 16)), + loop: true, anchor: VecI(x: 32, y: 56), frameIds: ids) + // Build one isolated review library containing the player pilot and the + // six existing camera timing contracts; no bundled delivery is modified. + let cameraCandidates = try CameraPlaybackTests.candidateFrames() + let bundled = try ClipFrameLibrary.bundled() + var reviewClips = ["player_move": clip] + var delivered = Dictionary(uniqueKeysWithValues: zip(ids, paths)) + var reviewTextures = Dictionary(uniqueKeysWithValues: zip(paths, textures)) + for (name, candidates) in cameraCandidates { + let cameraClip = try XCTUnwrap(bundled.clip(name)) + let cameraPaths = try XCTUnwrap(bundled.deliveredFrames(clipId: name, direction: nil)) + XCTAssertEqual(cameraClip.frameIds.count, cameraPaths.count) + XCTAssertEqual(cameraPaths.count, candidates.count) + reviewClips[name] = cameraClip + for (id, path) in zip(cameraClip.frameIds, cameraPaths) { delivered[id] = path } + for (path, candidate) in zip(cameraPaths, candidates) { reviewTextures[path] = candidate } + } + let frames = ClipFrameLibrary(clips: reviewClips, deliveredPaths: delivered) + for (zoom, tracking): (CGFloat, Bool) in [(1, false), (1.25, false), (1.25, true)] { + for reduced in [false, true] { + let library = try XCTUnwrap(SpriteLibrary(benchmarkFrames: frames, benchmarkTextures: reviewTextures)) + let renderer = WorldRenderer(sprites: library) + var art = BenchmarkReviewArt(player: textures[0], camera: try texture("camera"), + building: .init(texture: try texture("building-constrained"), + size: CGSize(width: 1254 * 128 * sqrt(2.0) / 934, height: 1254 * 128 * sqrt(2.0) / 934), + anchor: CGPoint(x: 653.0 / 1254, y: 1 - 1152.0 / 1254), position: CGPoint(x: 512, y: 640)), + buildingID: "solid-03-transit-kiosk", + props: [.init(texture: try texture("newsbox"), size: CGSize(width: 20, height: 40), + anchor: CGPoint(x: 0.5, y: 0), position: CGPoint(x: 691, y: 639)), + .init(texture: try texture("tree"), size: CGSize(width: 50, height: 85), + anchor: CGPoint(x: 0.5, y: 0), position: CGPoint(x: 858, y: 780))], + paving: try XCTUnwrap(EnvironmentTextures().texture(assetId: "env_ground_plaza"))) + art.configureStreetCorner(asphalt: try XCTUnwrap(EnvironmentTextures().texture(assetId: "env_ground_asphalt"))) + art.playerPresentation = .selectedClip + renderer.installBenchmarkArt(art) + XCTAssertTrue(renderer.installBenchmarkCameraFrames(cameraCandidates)) + renderer.benchmarkPlayerRegistration = (CGSize(width: 64, height: 416.0 / 6.0), + CGPoint(x: 0.5, y: 1 - 336.0 / 416.0)) + let scene = try SharedTraversalScene(size: CGSize(width: 704, height: 326), renderer: renderer, + textures: textures, reduced: reduced, magnification: zoom, tracksPlayer: tracking) + let windowScene = try XCTUnwrap(UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }.first) + let window = UIWindow(windowScene: windowScene) + window.frame = CGRect(x: 0, y: 0, width: 704, height: 326) + window.windowLevel = UIWindow.Level(rawValue: UIWindow.Level.alert.rawValue + 1) + let controller = UIViewController(), view = SKView(frame: window.bounds) + controller.view = view; window.rootViewController = controller; window.makeKeyAndVisible() + view.preferredFramesPerSecond = 60 + var preload = Array(reviewTextures.values) + for (path, texture) in zip(paths, textures) { + let url = try XCTUnwrap(bundle.url(forResource: path, withExtension: "png")) + let image = try XCTUnwrap(UIImage(contentsOfFile: url.path)?.cgImage) + preload.append(try XCTUnwrap(renderer.prepareBenchmarkPlayerOutline(texture: texture, + image: image, size: CGSize(width: 64, height: 416.0 / 6.0)))) + } + // Construct scene resources before its simulation clock starts. + scene.update(0); scene.previous = nil + scene.enumerateChildNodes(withName: "//*") { node, _ in + if let texture = (node as? SKSpriteNode)?.texture { preload.append(texture) } + } + await withCheckedContinuation { (continuation: CheckedContinuation) in + // SpriteKit may complete on its loading queue. Capture only the + // Sendable continuation, not this test's MainActor isolation. + SKTexture.preload(preload) { @Sendable in continuation.resume() } + } + renderer.resetBenchmarkOutlineMetrics() + let complete = expectation(description: "shared projected traversal") + scene.done = { complete.fulfill() }; view.presentScene(scene) + await fulfillment(of: [complete], timeout: 30) + view.presentScene(nil); window.isHidden = true + XCTAssertEqual(scene.worldTrace, expected, "Presentation must preserve every simulated step") + XCTAssertEqual(scene.session.simulation.state.digest(), preflight.state.digest()) + XCTAssertEqual(renderer.benchmarkOutlineMetrics.readbacks, 0) + XCTAssertEqual(scene.seen.count, 16) + let moving = scene.records.filter { ($0["frame"] as? Int ?? -1) >= 0 } + for record in moving { + if tracking { XCTAssertEqual(record["playerCanvasVisible"] as? Bool, true) } + + XCTAssertEqual(record["worldFacing"] as? String, facing) + XCTAssertEqual(record["selectedClip"] as? String, "player_move|\(facing)") + let x = Double(try XCTUnwrap(record["presentationX"] as? CGFloat)) + let y = Double(try XCTUnwrap(record["presentationY"] as? CGFloat)) + let r = sqrt(0.5) + XCTAssertEqual(Double(try XCTUnwrap(record["renderedX"] as? CGFloat)), 706 + r * (x - 706 - y + 644), accuracy: 0.001) + XCTAssertEqual(Double(try XCTUnwrap(record["renderedY"] as? CGFloat)), 644 + r * (x - 706 + y - 644) / 2, accuracy: 0.001) + } + let data = try JSONSerialization.data(withJSONObject: scene.records, options: [.prettyPrinted, .sortedKeys]) + let attachment = XCTAttachment(data: data, uniformTypeIdentifier: "public.json") + attachment.name = "BP008-shared-traversal-zoom-\(zoom)-tracking-\(tracking)-reduced-\(reduced)-records" + attachment.lifetime = .keepAlways; add(attachment) + for (frame, image) in scene.images { + let attachment = XCTAttachment(image: image) + attachment.name = "BP008-shared-traversal-zoom-\(zoom)-tracking-\(tracking)-reduced-\(reduced)-frame-\(frame)" + attachment.lifetime = .keepAlways; add(attachment) + } + } + } + } + + func testSharedReviewArtPreservesSelectedPlayerClips() throws { + let library = SpriteLibrary() + let still = try XCTUnwrap(library.firstTexture(clipId: "player_idle", direction: "s")) + for reduced in [false, true] { + for state in ["player_move", "player_idle", "player_dodge", "hurt", "missing-direction"] { + let control = WorldRenderer(sprites: library) + let shared = WorldRenderer(sprites: library) + var art = BenchmarkReviewArt(player: still, camera: still, + building: .init(texture: still, size: CGSize(width: 10, height: 10), + anchor: .zero, position: .zero), + buildingID: "unused", props: [], paving: still) + art.playerPresentation = .selectedClip + shared.installBenchmarkArt(art) + var snap = PresentationSnapshot(try Simulation.make(seed: 1).state) + snap.playerClipId = state == "hurt" || state == "missing-direction" ? "player_move" : state + snap.playerDirection = state == "missing-direction" ? "unsupported" : "s" + if state == "hurt" { + snap.playerReactionClipId = "player_hurt" + snap.playerReactionOccurrence = ClipOccurrence(direction: "w", startTick: 100) + snap.tick = 106 + } + for _ in 0..<2 { + control.render(snap, reducedMotion: reduced) + shared.render(snap, reducedMotion: reduced) + let expected = control.root.childNode(withName: "//sprite-player") as? SKSpriteNode + let actual = shared.root.childNode(withName: "//sprite-player") as? SKSpriteNode + XCTAssertEqual(actual != nil, expected != nil, state) + if let expected, let actual { + XCTAssertTrue(actual.texture === expected.texture, state) + XCTAssertEqual(actual.hasActions(), expected.hasActions(), state) + XCTAssertEqual(actual.size, expected.size, state) + XCTAssertEqual(actual.anchorPoint, expected.anchorPoint, state) + } + XCTAssertEqual(shared.observePlayerPlayback()?.clipToken, + control.observePlayerPlayback()?.clipToken, state) + } + // Default static composition remains available as its own control. + art.playerPresentation = .staticComposition + shared.installBenchmarkArt(art) + shared.render(snap, reducedMotion: reduced) + let staticPlayer = try XCTUnwrap(shared.root.childNode(withName: "//sprite-player") as? SKSpriteNode) + XCTAssertTrue(staticPlayer.texture === still) + XCTAssertFalse(staticPlayer.hasActions()) + } + } + } + + func testDistanceCandidatePreservesSelectedInterruptions() throws { + let library = SpriteLibrary() + let scene = try PlayerCandidateScene(size: CGSize(width: 704, height: 326), + library: library, paths: [], axis: PlayerCommand.axisMaximum, + reducedMotion: false, stage: 4) + let candidate = try XCTUnwrap(library.firstTexture(clipId: "player_move", direction: "s")) + scene.candidateTextures = Array(repeating: candidate, count: 16) + for reduced in [false, true] { + for clip in ["player_idle", "player_dodge", "player_defeat", "player_complete"] { + var snap = PresentationSnapshot(try Simulation.make(seed: 1).state) + snap.playerClipId = clip; snap.playerDirection = "s" + scene.renderer.render(snap, reducedMotion: reduced) + let node = try XCTUnwrap(scene.renderer.root.childNode(withName: "//sprite-player") as? SKSpriteNode) + let texture = node.texture; let actions = node.hasActions() + XCTAssertFalse(scene.applyDistanceFrameIfSelected(), clip) + XCTAssertTrue(node.texture === texture, clip) + XCTAssertEqual(node.hasActions(), actions, clip) + } + var snap = PresentationSnapshot(try Simulation.make(seed: 1).state) + snap.playerClipId = "player_move"; snap.playerDirection = "s" + snap.playerReactionClipId = "player_hurt" + snap.playerReactionOccurrence = ClipOccurrence(direction: "w", startTick: 100) + snap.tick = 106 + scene.renderer.render(snap, reducedMotion: reduced) + let node = try XCTUnwrap(scene.renderer.root.childNode(withName: "//sprite-player") as? SKSpriteNode) + let reaction = node.texture + XCTAssertFalse(scene.applyDistanceFrameIfSelected()) + XCTAssertTrue(node.texture === reaction) + snap.playerReactionClipId = nil; snap.playerReactionOccurrence = nil + snap.playerDirection = "n" + scene.renderer.render(snap, reducedMotion: reduced) + let reversed = node.texture + XCTAssertFalse(scene.applyDistanceFrameIfSelected()) + XCTAssertTrue(node.texture === reversed) + snap.playerDirection = "s" + scene.renderer.render(snap, reducedMotion: reduced) + XCTAssertTrue(scene.applyDistanceFrameIfSelected()) + XCTAssertTrue(node.texture === candidate) + } + } + + func testDistancePhaseCandidateAtAllInputLevels() async throws { + for reduced in [false, true] { + for axis in [PlayerCommand.axisMaximum, PlayerCommand.axisMaximum / 2, PlayerCommand.axisMaximum / 4] { + // Same legal 120-tick route length, extended duration for partial input. + let ticks = UInt64(120 * Int(PlayerCommand.axisMaximum) / Int(axis)) + try await capturePlayerCycle(axis: axis, reducedMotion: reduced, + repetition: 21, cleanSilhouetteReview: true, moveTicks: ticks) + try await capturePlayerCycle(axis: axis, reducedMotion: reduced, + repetition: 20, cleanSilhouetteReview: true, + distancePhaseComparison: true, moveTicks: ticks) + } + } + } + + func testPlayerPreparationStageComparison() async throws { + // Controls report coverage; the four final-mode tests below retain strict gates. + for repetition in 1...2 { + for stage in 3...4 { + try await capturePlayerCycle(axis: PlayerCommand.axisMaximum, reducedMotion: false, + stage: stage, repetition: repetition, requireCoverage: false) + } + } + } + private func capturePlayerCycle(axis: Int16, reducedMotion: Bool, stage: Int = 4, + repetition: Int = 0, requireCoverage: Bool = true, + cleanSilhouetteReview: Bool = false, + distancePhaseComparison: Bool = false, + moveTicks: UInt64 = 120, interruptionRoute: Bool = false) async throws { + // Route is a test initial condition within the real arena; no speed or solid edits. + var preflight = try Simulation.make(seed: 1) + preflight.testing_setPlayerPosition(VecI(x: 224, y: 704)) + var preflightY: [Int64] = [] + var blocked = false, slid = false, dodged = false + for tick in 1...moveTicks { + let before = preflight.state.player.position + let command = interruptionRoute ? Self.interruptionCommand(tick: tick) + : PlayerCommand(tick: tick, moveX: 0, moveY: -axis, dodgePressed: false) + _ = preflight.step(command: command) + let after = preflight.state.player.position + if interruptionRoute { + if tick <= 30 && before == after { blocked = true } + if (31...60).contains(tick) && before.x == after.x && before.y != after.y { slid = true } + dodged = dodged || preflight.state.player.dodgeActiveRemaining > 0 + } else { + XCTAssertEqual(after.x, before.x) + XCTAssertLessThan(after.y.raw, before.y.raw, + "Every measured move tick must travel on the preflighted route") + } + preflightY.append(after.y.raw) + } + if interruptionRoute { + XCTAssertTrue(blocked, "Must actually stop against the real western solid") + XCTAssertTrue(slid, "Must actually slide tangentially along that solid") + XCTAssertTrue(dodged, "Dodge command must activate authoritative Dodge") + } + + let bundle = Bundle(for: Self.self) + let paths = (0..<16).map { String(format: "player-source-s-%02d", $0) } + var textures: [String: SKTexture] = [:] + var sourceImages: [String: CGImage] = [:] + for path in paths { + let url = try XCTUnwrap(bundle.url(forResource: path, withExtension: "png")) + let image = try XCTUnwrap(UIImage(contentsOfFile: url.path)) + sourceImages[path] = try XCTUnwrap(image.cgImage) + let texture = SKTexture(image: image) + XCTAssertEqual(texture.size(), CGSize(width: 384, height: 416)) + texture.filteringMode = .linear; textures[path] = texture + } + let ids = (0..<16).map { String(format: "player_move_s_%02d", $0) } + let clip = ClipFrameLibrary.Clip(clipId: "player_move", actorRole: "player", + directions: ["s"], framesPerSecond: nil, + authoredTiming: try ClipTiming(unitsPerSecond: 32, frameUnits: Array(repeating: 1, count: 16)), + loop: true, anchor: VecI(x: 32, y: 56), frameIds: ids) + let frames = ClipFrameLibrary(clips: ["player_move": clip], + deliveredPaths: Dictionary(uniqueKeysWithValues: zip(ids, paths))) + XCTAssertNil(SpriteLibrary(benchmarkFrames: frames, benchmarkTextures: [:])) + let library = try XCTUnwrap(SpriteLibrary(benchmarkFrames: frames, benchmarkTextures: textures)) + let windowScene = try XCTUnwrap(UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }.first) + let window = UIWindow(windowScene: windowScene) + window.frame = CGRect(x: 0, y: 0, width: 704, height: 326) + window.windowLevel = UIWindow.Level(rawValue: UIWindow.Level.alert.rawValue + 1) + let controller = UIViewController(), view = SKView(frame: window.bounds) + controller.view = view; window.rootViewController = controller; window.makeKeyAndVisible() + view.preferredFramesPerSecond = 60 + let scene = try PlayerCandidateScene(size: view.bounds.size, library: library, paths: paths, + axis: axis, reducedMotion: reducedMotion, stage: stage) + scene.cleanSilhouetteReview = cleanSilhouetteReview + scene.distancePhaseComparison = distancePhaseComparison + scene.reviewLabel = "BP008 \(distancePhaseComparison ? "DISTANCE" : "CADENCE") input=\(axis) reduced=\(reducedMotion) rep=\(repetition)" + scene.candidateTextures = paths.compactMap { textures[$0] } + scene.moveTicks = moveTicks + scene.interruptionRoute = interruptionRoute + let preparationBegan = CFAbsoluteTimeGetCurrent() + var preloadTextures = paths.compactMap { textures[$0] } + if stage >= 3 { + for path in paths { + let mask = try XCTUnwrap(scene.renderer.prepareBenchmarkPlayerOutline( + texture: try XCTUnwrap(textures[path]), image: try XCTUnwrap(sourceImages[path]), + size: CGSize(width: 64, height: 416.0 / 6.0))) + preloadTextures.append(mask) + } + XCTAssertEqual(scene.renderer.benchmarkOutlineMetrics.readbacks, 0) + } + var scenePreparationSeconds = 0.0 + if stage >= 4 { + let began = CFAbsoluteTimeGetCurrent() + scene.configureScene() + // Construct actual initial scene resources before the simulation clock starts. + scene.renderer.render(scene.session.snapshot, reducedMotion: reducedMotion) + scenePreparationSeconds = CFAbsoluteTimeGetCurrent() - began + scene.renderer.root.enumerateChildNodes(withName: "//*") { node, _ in + if let texture = (node as? SKSpriteNode)?.texture { preloadTextures.append(texture) } + } + } + if stage >= 2 { + await withCheckedContinuation { (continuation: CheckedContinuation) in + // Explicit on older SDKs that do not import this block as Sendable. + SKTexture.preload(preloadTextures) { @Sendable in continuation.resume() } + } + } + let preparationSeconds = CFAbsoluteTimeGetCurrent() - preparationBegan + scene.renderer.resetBenchmarkOutlineMetrics() + let complete = expectation(description: "revised player live action and travel capture") + scene.done = { complete.fulfill() } + view.presentScene(scene) + defer { view.presentScene(nil); window.isHidden = true } + await fulfillment(of: [complete], timeout: 45) + // D-069: locomotion may retain the same clip under Reduced Motion. + if requireCoverage { + XCTAssertEqual(scene.seenPaths.count, 16, + "Normal playback must actually display every source texture") + } + XCTAssertEqual(scene.snapshotBuildCount, scene.frameCosts.count, + "Telemetry must reuse the exact snapshot rendered by each callback") + let metrics = scene.renderer.benchmarkOutlineMetrics + if stage >= 3 { XCTAssertEqual(metrics.readbacks, 0, "Prepared candidate must not read textures back during playback") } + let summary: [String: Any] = ["stage": stage, "repetition": repetition, "axis": axis, + "reducedMotion": reducedMotion, "cleanSilhouetteReview": cleanSilhouetteReview, + "distancePhaseComparison": distancePhaseComparison, "moveTicks": moveTicks, + "frames": scene.seenPaths.count, + "coveragePassed": scene.seenPaths.count == 16, "preparationSeconds": preparationSeconds, "scenePreparationSeconds": scenePreparationSeconds, + "initialDisplaySeconds": scene.initialDisplaySeconds, + "frameCosts": scene.frameCosts, + "simulationSeconds": scene.simulationSeconds, "renderSeconds": scene.renderSeconds, + "postActionSeconds": scene.postActionSeconds, "diagnosticSeconds": scene.diagnosticSeconds, + "snapshotBuildCount": scene.snapshotBuildCount, "outlineHits": metrics.hits, + "outlineMisses": metrics.misses, "outlineReadbacks": metrics.readbacks, + "outlineBuildSeconds": metrics.buildSeconds, "outlineBytes": scene.renderer.benchmarkOutlineBytes] + let measurement = XCTAttachment(data: try JSONSerialization.data(withJSONObject: summary, options: [.prettyPrinted, .sortedKeys]), uniformTypeIdentifier: "public.json") + measurement.name = "BP008-stage-\(stage)-rep-\(repetition)-axis-\(axis)-reduced-\(reducedMotion)-metrics" + measurement.lifetime = .keepAlways; add(measurement) + XCTAssertEqual(scene.session.simulation.state.player.position.y.raw, preflightY.last) + XCTAssertEqual(scene.session.simulation.state.player.position.x, preflight.state.player.position.x) + if interruptionRoute { + let paused = scene.records.filter { $0["reviewPaused"] as? Bool == true } + XCTAssertGreaterThan(paused.count, 2) + XCTAssertEqual(Set(paused.compactMap { $0["tick"] as? UInt64 }), Set([UInt64(120)])) + XCTAssertEqual(Set(paused.compactMap { $0["sourceFrameIndex"] as? Int }).count, 1) + XCTAssertTrue(scene.records.contains { ($0["facing"] as? String) == "n" && ($0["candidateAvailable"] as? Bool) == false }) + XCTAssertTrue(scene.records.contains { ($0["clip"] as? String) == "player_dodge" && ($0["candidateAvailable"] as? Bool) == false }) + } + let movingRecords = scene.records.filter { $0["sourceFrameIndex"] != nil } + let wraps = zip(movingRecords, movingRecords.dropFirst()).filter { + ($0.0["sourceFrameIndex"] as? Int ?? 0) > ($0.1["sourceFrameIndex"] as? Int ?? 0) + }.count + XCTAssertGreaterThanOrEqual(wraps, 2, "Repeated live cycles required") + XCTAssertGreaterThan(Set(scene.records.compactMap { $0["authoritativeRawY"] as? Int64 }).count, 1) + XCTAssertEqual(scene.records.first?["tick"] as? UInt64, 0) + XCTAssertEqual(scene.records.first?["clip"] as? String, "player_idle") + XCTAssertEqual(scene.records.first?["facing"] as? String, "e") + let lastMovingTick = try XCTUnwrap(scene.records.filter { $0["sourceFrameIndex"] != nil } + .compactMap { $0["tick"] as? UInt64 }.max()) + XCTAssertTrue(scene.records.contains { ($0["tick"] as? UInt64 ?? 0) > lastMovingTick + && $0["candidateAvailable"] as? Bool == false && $0["clip"] as? String == "player_idle" }) + for record in scene.records where record["sourceFrameIndex"] != nil { + XCTAssertEqual(record["facing"] as? String, "s") + XCTAssertEqual(record["clip"] as? String, "player_move|s") + XCTAssertEqual(try XCTUnwrap(record["width"] as? CGFloat), CGFloat(64)) + XCTAssertEqual(try XCTUnwrap(record["height"] as? CGFloat), CGFloat(Float(416.0 / 6.0))) + let rawY = try XCTUnwrap(record["authoritativeRawY"] as? Int64) + let renderedY = try XCTUnwrap(record["renderedY"] as? CGFloat) + XCTAssertEqual(Double(renderedY), Double(rawY) / 512, accuracy: 0.51, + "Whole-unit presentation rounding must remain bounded") + } + for (name, image) in scene.images { + let attachment = XCTAttachment(image: image); attachment.name = name + attachment.lifetime = .keepAlways; add(attachment) + } + let data = try JSONSerialization.data(withJSONObject: scene.records, options: [.prettyPrinted, .sortedKeys]) + let attachment = XCTAttachment(data: data, uniformTypeIdentifier: "public.json") + attachment.name = "BP008-stage-\(stage)-rep-\(repetition)-axis-\(axis)-reduced-\(reducedMotion)-post-action-records" + attachment.lifetime = .keepAlways; add(attachment) + } + + final class CameraCandidateScene: SKScene { + let renderer = WorldRenderer() + var snapshot: PresentationSnapshot + let candidates: [String: [SKTexture]] + var stage = 0 + var began: TimeInterval? + var now: TimeInterval = 0 + var done: (() -> Void)? + var records: [[String: Any]] = [] + var settled: [Bool] = [] + var observedIdleFrames: Set = [] + var images: [UIImage] = [] + let clips = ["camera_operational_idle", "camera_hit", "camera_critical_enter", "camera_destroyed_idle"] + init(size: CGSize, snapshot: PresentationSnapshot, candidates: [String: [SKTexture]]) { + self.snapshot = snapshot + self.candidates = candidates + super.init(size: size) + self.snapshot.cameras = Array(snapshot.cameras.prefix(1)) + addChild(renderer.root) + } + required init?(coder: NSCoder) { fatalError("init(coder:) is unsupported") } + override func update(_ time: TimeInterval) { + guard stage < 4 else { return } + now = time + if began == nil { began = time } + snapshot.cameras[0].integrity = 3 - stage + snapshot.cameras[0].fieldVisible = stage < 3 + renderer.render(snapshot) + } + override func didEvaluateActions() { + guard stage < 4, let began, + let node = renderer.root.childNode(withName: "//sprite-camera-\(snapshot.cameras[0].id.raw)") as? SKSpriteNode else { return } + let actual = candidates.keys.sorted().flatMap { clip in + candidates[clip]!.enumerated().compactMap { index, texture in + node.texture === texture ? "\(clip)#\(index + 1)" : nil + } + }.first ?? "unidentified" + records.append(["integrity": 3-stage, "displayTime": now, "actualFrame": actual, + "x": node.position.x, "y": node.position.y, + "fieldPresent": renderer.root.childNode(withName: "//field-\(snapshot.cameras[0].id.raw)") != nil]) + if stage == 0, actual != "unidentified" { observedIdleFrames.insert(actual) } + // #127: elapsed time alone cannot establish displayed frame progress. + // Keep real actions running until both forms of evidence exist. + let complete = stage == 0 ? now-began >= 0.8 && observedIdleFrames.count > 1 + : !node.hasActions() && now-began > 0.05 + if complete { + settled.append(stage == 0 || node.texture === candidates[clips[stage]]?.last) + if let texture = view?.texture(from: node) { images.append(UIImage(cgImage: texture.cgImage())) } + stage += 1 + self.began = nil + if stage == 4 { done?() } + } + } + } + + func testCameraCandidatesActuallyPlayAndSettleInPresentedScene() async throws { + let candidates = try CameraPlaybackTests.candidateFrames() + let snapshot = PresentationSnapshot(try Simulation.make(seed: 1).state) + let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 704, height: 326)) + let controller = UIViewController() + let view = SKView(frame: window.bounds) + controller.view = view; window.rootViewController = controller; window.makeKeyAndVisible() + let scene = CameraCandidateScene(size: view.bounds.size, snapshot: snapshot, candidates: candidates) + XCTAssertTrue(scene.renderer.installBenchmarkCameraFrames(candidates)) + let complete = expectation(description: "candidate camera clips finish under SpriteKit") + scene.done = { complete.fulfill() } + view.presentScene(scene) + defer { view.presentScene(nil); window.isHidden = true } + await fulfillment(of: [complete], timeout: 30) + XCTAssertEqual(scene.settled, [true, true, true, true]) + XCTAssertEqual(scene.images.count, 4) + XCTAssertFalse(scene.records.contains { $0["actualFrame"] as? String == "unidentified" }) + let idleFrames = scene.records.filter { $0["integrity"] as? Int == 3 }.compactMap { $0["actualFrame"] as? String } + XCTAssertGreaterThan(Set(idleFrames).count, 1) + XCTAssertTrue(scene.records.filter { $0["integrity"] as? Int == 0 }.allSatisfy { $0["fieldPresent"] as? Bool == false }) + for (index, image) in scene.images.enumerated() { + let attachment = XCTAttachment(image: image) + attachment.name = "BP004-candidate-integrity-\(3-index)" + attachment.lifetime = .keepAlways; add(attachment) + } + let data = try JSONSerialization.data(withJSONObject: scene.records, options: [.prettyPrinted, .sortedKeys]) + let attachment = XCTAttachment(data: data, uniformTypeIdentifier: "public.json") + attachment.name = "BP004-candidate-post-action-records" + attachment.lifetime = .keepAlways; add(attachment) + } + +} +#endif diff --git a/AppTests/OutlineResolutionTests.swift b/AppTests/OutlineResolutionTests.swift new file mode 100644 index 00000000..5915c1c4 --- /dev/null +++ b/AppTests/OutlineResolutionTests.swift @@ -0,0 +1,181 @@ +import CoreGraphics +import SpriteKit +import Testing +@testable import SSRuntime +@testable import SurveillanceCore + +@Suite(.serialized) +@MainActor +struct OutlineResolutionTests { + private func source(density: Int, shifted: Bool = false) throws -> SKTexture { + let edge = 64 * density + var pixels = [UInt8](repeating: 0, count: edge * edge * 4) + let left = shifted ? 32 : 8 + for y in (16 * density)..<(48 * density) { + for x in (left * density)..<((left + 16) * density) { + let i = (y * edge + x) * 4 + pixels[i] = 255; pixels[i + 3] = 255 + } + } + return try #require(OutlineTextures.texture(pixels: pixels, width: edge, height: edge, smooth: false)) + } + + @Test func sourceDensityDoesNotChangeStrokeOrEnemyDashes() throws { + for faction in [ActorContrast.Faction.player, .enemy] { + var baseline: [UInt8]? + for density in [1, 4, 6] { + let texture = try source(density: density) + let entry = try #require(OutlineTextures.make(from: texture.cgImage(), faction: faction, + logicalSize: CGSize(width: 64, height: 64))) + #expect(entry.maskSize == CGSize(width: 64, height: 64)) + #expect(entry.pad == 1) + let image = entry.texture.cgImage() + #expect(image.width == 66 && image.height == 66) + let bytes = try #require(OutlineTextures.rgba(image)) + if let baseline { #expect(bytes == baseline) } else { baseline = bytes } + let count = stride(from: 3, to: bytes.count, by: 4).filter { bytes[$0] > 0 }.count + if faction == .player { #expect(count == 100) } + else { #expect(count > 0 && count < 100) } + } + } + } + + @Test func finerSamplingPreservesLogicalStrokeDashAndCacheIdentity() throws { + let texture = try source(density: 6) + let cache = OutlineTextures(maxEntries: 128, maxBytes: 198 * 198 * 4) + for faction in [ActorContrast.Faction.player, .enemy] { + let baseline = try #require(OutlineTextures.make(from: texture.cgImage(), faction: faction, + logicalSize: CGSize(width: 64, height: 64))) + let fine = try #require(cache.outline(for: texture, faction: faction, + logicalSize: CGSize(width: 64, height: 64), samplingScale: 3)) + #expect(fine.maskSize == CGSize(width: 192, height: 192)) + #expect(fine.pad == 3 && fine.byteCost == 156816) + #expect(cache.count == 1 && cache.retainedMaskBytes == 156816) + let low = try #require(OutlineTextures.rgba(baseline.texture.cgImage())) + let high = try #require(OutlineTextures.rgba(fine.texture.cgImage())) + // An axis-aligned silhouette must retain exactly the same logical + // ring and dash pattern, with every mask pixel split into nine. + for y in 0..<198 { + for x in 0..<198 { + #expect(high[(y * 198 + x) * 4 + 3] == low[((y / 3) * 66 + x / 3) * 4 + 3]) + } + } + } + let sharedDimensions = OutlineTextures() + let a = try #require(sharedDimensions.outline(for: texture, faction: .player, + logicalSize: CGSize(width: 64, height: 64))) + let b = try #require(sharedDimensions.outline(for: texture, faction: .player, + logicalSize: CGSize(width: 32, height: 32), samplingScale: 2)) + #expect(a.maskSize == b.maskSize && a.pad != b.pad && a.texture !== b.texture) + for scale in [0, 4, Int.max] { + #expect(sharedDimensions.outline(for: texture, faction: .player, + logicalSize: CGSize(width: 64, height: 64), samplingScale: scale) == nil) + } + #expect(sharedDimensions.outline(for: texture, faction: .player, + logicalSize: CGSize(width: 96, height: 96), samplingScale: 3) == nil) + } + + @Test func cacheSeparatesLogicalGeometryFactionAndBoundsChurn() throws { + let cache = OutlineTextures(maxEntries: 2, maxBytes: 2 * 66 * 66 * 4) + let a = try source(density: 6) + let first = try #require(cache.outline(for: a, faction: .player, logicalSize: CGSize(width: 64, height: 64))) + let same = try #require(cache.outline(for: a, faction: .player, logicalSize: CGSize(width: 64, height: 64))) + #expect(first.texture === same.texture) + let resized = try #require(cache.outline(for: a, faction: .player, logicalSize: CGSize(width: 32, height: 64))) + #expect(resized.maskSize == CGSize(width: 32, height: 64)) + #expect(resized.texture !== first.texture) + let enemy = try #require(cache.outline(for: a, faction: .enemy, logicalSize: CGSize(width: 64, height: 64))) + #expect(enemy.texture !== first.texture) + for _ in 0..<12 { + let frame = try source(density: 1) + #expect(cache.outline(for: frame, faction: .player, logicalSize: CGSize(width: 64, height: 64)) != nil) + #expect(cache.count <= 2) + #expect(cache.retainedMaskBytes <= 2 * 66 * 66 * 4) + } + let bytesLimited = OutlineTextures(maxEntries: 128, maxBytes: 66 * 66 * 4) + _ = bytesLimited.outline(for: a, faction: .player, logicalSize: CGSize(width: 64, height: 64)) + _ = bytesLimited.outline(for: a, faction: .enemy, logicalSize: CGSize(width: 64, height: 64)) + #expect(bytesLimited.count == 1) + #expect(bytesLimited.retainedMaskBytes == 66 * 66 * 4) + } + + @Test func preparedSourceMatchesFallbackAndAvoidsPlaybackReadback() throws { + let texture = try source(density: 6) + let image = texture.cgImage() + let size = CGSize(width: 64, height: 416.0 / 6.0) + let prepared = OutlineTextures() + let a = try #require(prepared.outline(for: texture, faction: .player, + logicalSize: size, sourceImage: image)) + #expect(prepared.metrics.misses == 1 && prepared.metrics.readbacks == 0) + prepared.resetMetrics() + let reused = try #require(prepared.outline(for: texture, faction: .player, logicalSize: size)) + #expect(a.texture === reused.texture) + #expect(prepared.metrics.hits == 1 && prepared.metrics.readbacks == 0) + let fallback = OutlineTextures() + let b = try #require(fallback.outline(for: texture, faction: .player, logicalSize: size)) + #expect(fallback.metrics.readbacks == 1) + #expect(OutlineTextures.rgba(a.texture.cgImage()) == OutlineTextures.rgba(b.texture.cgImage())) + #expect(a.pad == b.pad && a.maskSize == b.maskSize) + } + + @Test func invalidSizesAndOversizeSourceFailWithoutAllocationGrowth() throws { + let texture = try source(density: 6) + let cache = OutlineTextures() + for size in [CGSize.zero, CGSize(width: CGFloat.nan, height: 64), + CGSize(width: 64, height: CGFloat.infinity), CGSize(width: 257, height: 64)] { + #expect(cache.outline(for: texture, faction: .player, logicalSize: size) == nil) + } + #expect(cache.count == 0 && cache.retainedMaskBytes == 0) + let pixels = [UInt8](repeating: 255, count: 1025 * 4) + let oversized = try #require(OutlineTextures.texture(pixels: pixels, width: 1025, height: 1, smooth: false)) + #expect(cache.outline(for: oversized, faction: .player, logicalSize: CGSize(width: 64, height: 64)) == nil) + #expect(cache.count == 1 && cache.retainedMaskBytes == 0) + } + + @Test func rendererRefreshKeepsAnchorAndDropsStaleFrameInBothMotionModes() throws { + let snapshot = PresentationSnapshot(try Simulation.make(seed: 1).state) + let first = try source(density: 6) + let next = try source(density: 6, shifted: true) + let tooWide = try #require(OutlineTextures.texture(pixels: [UInt8](repeating: 255, count: 1025 * 4), + width: 1025, height: 1, smooth: false)) + for reduced in [false, true] { + let renderer = WorldRenderer() + renderer.render(snapshot, reducedMotion: reduced) + let sprite = try #require(renderer.root.childNode(withName: "//sprite-player") as? SKSpriteNode) + sprite.removeAllActions() + sprite.size = CGSize(width: 64, height: 64) + sprite.anchorPoint = CGPoint(x: 0.25, y: 0.125) + let position = sprite.position + sprite.texture = first + renderer.syncOutlines() + let outline = try #require(sprite.childNode(withName: WorldRenderer.outlineName) as? SKSpriteNode) + #expect(!outline.isHidden) + #expect(outline.size == CGSize(width: 66, height: 66)) + #expect(abs(outline.anchorPoint.x - 17.0 / 66) < 0.00001) + #expect(abs(outline.anchorPoint.y - 9.0 / 66) < 0.00001) + #expect(outline.position == .zero && sprite.position == position) + let originalOutline = try #require(outline.texture) + // #124: child geometry must not apply an actor's zoom a second time. + for (sx, sy) in [(CGFloat(1.5), CGFloat(1.25)), (CGFloat(1.1), CGFloat(1.3))] { + sprite.xScale = sx + sprite.yScale = sy + renderer.syncOutlines() + #expect(abs(outline.size.width - 66) < 0.0001) + #expect(abs(outline.size.height - 66) < 0.0001) + #expect(outline.texture === originalOutline) + #expect(abs(outline.anchorPoint.x - 17.0 / 66) < 0.00001) + #expect(abs(outline.anchorPoint.y - 9.0 / 66) < 0.00001) + } + sprite.texture = next + renderer.syncOutlines() + #expect(outline.texture !== originalOutline) + sprite.texture = tooWide + renderer.syncOutlines() + #expect(outline.isHidden) + sprite.texture = first + renderer.syncOutlines() + #expect(!outline.isHidden && outline.texture === originalOutline) + #expect(sprite.position == position) + } + } +} diff --git a/AppTests/VFXRendererTests.swift b/AppTests/VFXRendererTests.swift index d6ee86d1..7468af32 100644 --- a/AppTests/VFXRendererTests.swift +++ b/AppTests/VFXRendererTests.swift @@ -48,8 +48,8 @@ struct VFXRendererTests { event(.entityDamaged, EntityID(500)), event(.entityDied, EntityID(501)), event(.dodgeStarted, player), - event(.projectileHit, EntityID(600), ["targetEntityId": .string("\(camera.raw)")]), - event(.projectileHit, EntityID(601), ["targetEntityId": .string("\(player.raw)")]), + event(.projectileHit, EntityID(600), ["projectileId": .string("600"), "projectileKind": .string("civicPulse"), "targetEntityId": .string("\(camera.raw)"), "impactXQ8": .integer(0), "impactYQ8": .integer(0)]), + event(.projectileHit, EntityID(600), ["projectileId": .string("600"), "projectileKind": .string("ricochet"), "targetEntityId": .string("\(player.raw)"), "impactXQ8": .integer(2560), "impactYQ8": .integer(0)]), event(.lockdownEntered, nil, ["reason": .string("exposure")]), event(.bossAttackStarted, EntityID(700)), event(.extractionArmed), @@ -61,6 +61,53 @@ struct VFXRendererTests { ] } + @Test func retiredHazardUsesEventGeometryAndUnknownDirectionUsesRing() throws { + for hasDirection in [false, true] { + let stage = Stage() + let snap = try Self.snapshot() + var evidence: [String: CanonicalJSON] = ["impactXQ8": .integer(25600), "impactYQ8": .integer(25600)] + if hasDirection { + evidence["sourceXQ8"] = .integer(23040) + evidence["sourceYQ8"] = .integer(25600) + evidence["contributors"] = .array([.string("999")]) + } + let hit = AuthoritativeEvent(tick: 1, phase: 12, type: .playerDamaged, + primary: snap.player.id, secondary: EntityID(999), payload: evidence, insertion: 0) + stage.vfx.ingest(tick: 1, events: [hit], snapshot: snap) + let name = hasDirection ? "damage-impact-direction" : "damage-impact-ring" + let node = try #require(stage.vfx.worldLayer.childNode(withName: name)) + #expect(node.position == CGPoint(x: 100, y: 100)) + let shape = try #require(node.children.first as? SKShapeNode) + let bounds = try #require(shape.path).boundingBox + if hasDirection { #expect(bounds.maxX < 0) } else { #expect(bounds.width == 48) } + } + } + + @Test func contactAggregationNeverInventsOneDirection() throws { + let stage = Stage() + let snap = try Self.snapshot() + let hit = AuthoritativeEvent(tick: 1, phase: 12, type: .playerDamaged, primary: snap.player.id, + payload: ["impactXQ8": .integer(0), "impactYQ8": .integer(0), + "sourceXQ8": .integer(2560), "sourceYQ8": .integer(0), + "contributors": .array([.string("10"), .string("11")])], insertion: 0) + stage.vfx.ingest(tick: 1, events: [hit], snapshot: snap) + #expect(stage.vfx.worldLayer.childNode(withName: "damage-impact-ring") != nil) + #expect(stage.vfx.worldLayer.childNode(withName: "damage-impact-direction") == nil) + } + + @Test func projectilePositionHistoryIsBoundedAcrossTurnover() throws { + let stage = Stage() + var snap = try Self.snapshot() + for id in 100..<1100 { + snap.projectiles = [.init(id: EntityID(UInt64(id)), x: 10, y: 10, + previousX: 0, previousY: 0, radius: 4, hostile: true, role: "sutroBolt")] + stage.vfx.render(snap) + #expect(stage.vfx.rememberedPositionCount <= 1 + snap.enemies.count + snap.cameras.count + 1) + } + stage.vfx.reset() + #expect(stage.vfx.rememberedPositionCount == 0) + } + @Test func everyRecipeDraws() throws { let stage = Stage() let snap = try Self.snapshot() diff --git a/AppTests/WeaponUpgradePresentationTests.swift b/AppTests/WeaponUpgradePresentationTests.swift new file mode 100644 index 00000000..e8adabfd --- /dev/null +++ b/AppTests/WeaponUpgradePresentationTests.swift @@ -0,0 +1,108 @@ +import SpriteKit +import SwiftUI +import Testing +@testable import SSRuntime +@testable import SurveillanceCore + +@Suite(.serialized) @MainActor +struct WeaponUpgradePresentationTests { + @Test func dischargeRequiresMatchingEventAndExpiresWithoutNodeGrowth() throws { + var snap = PresentationSnapshot(try Simulation.make(seed: 1).state) + snap.tick = 1 + let id = EntityID(999) + snap.combatFeedback.shot = .init(projectile: id, origin: .init(unitsX: 40, unitsY: 50), velocity: .init(unitsX: -12, unitsY: 0)) + let renderer = CombatFeedbackRenderer() + renderer.update(snap, events: [], settings: .standard) + #expect(renderer.discharge.isHidden) + snap.tick = 2 + let event = AuthoritativeEvent(tick: 2, phase: 7, type: .weaponFired, primary: id, payload: [:], insertion: 0) + renderer.update(snap, events: [event], settings: .standard) + #expect(!renderer.discharge.isHidden) + #expect(renderer.discharge.position == CGPoint(x: 40, y: 50)) + #expect(abs(abs(renderer.aim.zRotation) - .pi) < 0.001) + // Facing is deliberately east; aim is west. + #expect(snap.playerDirection == "e") + for tick in 3...1000 { + snap.tick = UInt64(tick) + snap.combatFeedback = .init() + renderer.update(snap, events: [], settings: .standard) + #expect(renderer.root.children.count == 4) + } + #expect(renderer.discharge.isHidden) + renderer.reset() + let allHidden = renderer.root.children.allSatisfy { $0.isHidden } + #expect(allHidden) + } + + @Test func upgradeContoursAreDistinctStaticUnderReductionAndClearOnRestart() throws { + var snap = PresentationSnapshot(try Simulation.make(seed: 1).state) + snap.tick = 20 + snap.combatFeedback.jammerReducedExposure = true + snap.ghostConcealmentActive = true + let renderer = CombatFeedbackRenderer() + var reduced = PresentationVFXSettings.standard + reduced.reducedMotion = true + renderer.update(snap, events: [], settings: reduced) + #expect(!renderer.jammer.isHidden && !renderer.concealment.isHidden) + #expect(renderer.jammer.zRotation == 0) + #expect(!renderer.jammer.hasActions() && !renderer.concealment.hasActions()) + #expect(renderer.jammer.path?.boundingBox != renderer.concealment.path?.boundingBox) + snap.tick += 1 + snap.combatFeedback = .init() + snap.ghostConcealmentActive = false + renderer.update(snap, events: [], settings: reduced) + #expect(renderer.jammer.isHidden && renderer.concealment.isHidden) + renderer.reset() + let allHidden = renderer.root.children.allSatisfy { $0.isHidden } + #expect(allHidden) + } + + @Test(arguments: [UInt8(0), 1, 2]) + func nativeChoiceBoundaryFreezesUntilChoiceAndClearsHeldInput(index: UInt8) throws { + var sim = try Simulation.make(seed: 1) + sim.testing_primeEncounterForCompletion("M-A") + let session = GameSession(simulation: sim) + let view = SKView(frame: CGRect(x: 0, y: 0, width: 844, height: 390)) + view.isPaused = true + let scene = GameScene(size: view.bounds.size, session: session) + view.presentScene(scene) + defer { view.presentScene(nil) } + let finger = NSObject() + let token = TouchController.TouchToken(id: ObjectIdentifier(finger)) + let layout = try #require(scene.controlLayout) + scene.beginTouch(token: token, atPoints: CGPoint(x: layout.stickCentre.x + layout.stickRadius, y: layout.stickCentre.y)) + scene.update(1) + #expect(scene.upgradeSelection.isPresented) + let tick = scene.currentTick + scene.update(2) + #expect(scene.currentTick == tick) + #expect(!scene.chooseUpgrade(3)) + #expect(scene.chooseUpgrade(index)) + #expect(!scene.chooseUpgrade((index + 1) % 3)) + scene.update(3) + #expect(scene.currentTick == tick + 1) + #expect(session.simulation.state.upgrade.selected == UpgradeID.from(index: index)) + #expect(session.commandLog.last?.moveX == 0) + #expect(session.commandLog.last?.dodgePressed == false) + #expect(!scene.upgradeSelection.isPresented) + scene.update(4) + #expect(session.commandLog.last?.moveX == 0) + scene.restartRun() + #expect(!scene.upgradeSelection.isPresented && !scene.upgradeSelection.submitted) + } + + @Test func accessibilityTextUsesScrollingSingleColumnAndNativeSurfaceHosts() { + #expect(UpgradeSelectionView.columnCount(width: 844, accessibility: false) == 3) + #expect(UpgradeSelectionView.columnCount(width: 844, accessibility: true) == 1) + #expect(UpgradeSelectionView.columnCount(width: 667, accessibility: false) == 1) + let model = UpgradeSelectionModel() + model.synchronize(pending: true) + let host = UIHostingController(rootView: UpgradeSelectionView(model: model, onChoose: { _ in }) + .environment(\.dynamicTypeSize, .accessibility3)) + host.loadViewIfNeeded() + host.view.frame = CGRect(x: 0, y: 0, width: 667, height: 375) + host.view.layoutIfNeeded() + #expect(host.view.bounds.width == 667) + #expect(!model.submitted) // Layout/focus must not implicitly choose. + } +} diff --git a/README.md b/README.md index 589dd87a..df2a7a85 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ iPhone runtime for the one-level **Surveillance Survivor** reboot. - Repository: [scrimshawlife-ctrl/SS-specs](https://github.com/scrimshawlife-ctrl/SS-specs) - Baseline commit: see [SPEC_BASELINE.md](SPEC_BASELINE.md). -- Ruleset: `ss-rules-007` +- Ruleset: `ss-rules-008` - Content: `civic-seam-content-006` - Arena: `civic-seam-arena-004` - Replay schema: `runtime-kernel-001` diff --git a/SPEC_BASELINE.md b/SPEC_BASELINE.md index 3e1962c3..6d0bebf1 100644 --- a/SPEC_BASELINE.md +++ b/SPEC_BASELINE.md @@ -5,8 +5,8 @@ Status: PINNED | Identity | Value | |---|---| | Specification repository | `scrimshawlife-ctrl/SS-specs` | -| Specification commit | `2377b99c6b6d1654e2cb976ee1b7e07b75c77e1a` | -| Ruleset | `ss-rules-007` | +| Specification commit | `d6027758fa8e46ed2073cbb3b6face8ee19847ef` | +| Ruleset | `ss-rules-008` | | Content | `civic-seam-content-006` | | Arena | `civic-seam-arena-004` | | Replay schema | `runtime-kernel-001` | @@ -22,3 +22,41 @@ Changing any pinned identity requires: Legacy evidence is frozen at `scrimshawlife-ctrl/Surveillance-Survivor@3b20d88d6a6e1fe8f07f45f581359d371fa65d98`. Copying legacy files is prohibited. Bounded reimplementation must follow `legacy-admission.md`. D-102 adoption: [SS-specs PR #61](https://github.com/Zero-State-LLC/SS-specs/pull/61). Merge the specification before this runtime change. Ruleset-006 replays fail closed; fixture review is in `docs/review/D102.md`. + +D-103 candidate adoption: combat-causality.md, T1030–T1034, CC-001–CC-007. Ruleset-007 replays fail closed. Fixture review: docs/review/D103.md. The paired spec branch must merge before the runtime PR; no release merge is claimed. + +T1035 / CC-008 phase-3 adoption: weapon/upgrade presentation and protected SwiftUI choice overlay. Presentation evidence stays outside authoritative state; no ruleset, content, arena, event or fixture identity change. Art/device acceptance remains open. + +D-104 / BP-001–BP-006 candidate adoption: shared benchmark production contract, T1042–T1046. The exact spec pin now includes source/frame delivery, named 16-frame locomotion scope, persistent Camera states, geometry evidence and staged asset migration. This pin adoption does not declare existing art compliant. Ruleset/content/arena/clip/fixture identities remain unchanged until accepted production assets require a presentation migration. Open runtime gaps and evidence are recorded in `docs/review/D104.md`; spec PR #62 must land before the dependent runtime PR. + +BP-007 candidate adoption adds resolution/framing comparisons and explicit ground registration evidence. Gameplay identities and contract/fixture payloads remain unchanged. The reviewed composition remains a test fixture, not admitted production art. + +BP-003 timing foundation adoption: exact duration design in animation-timing-migration.md. Existing v1 clips adapt into a shared duration model; no v2 production metadata or new art is admitted. Evidence and remaining migration work: docs/review/animation-timing-foundation.md. + +BP-008 adoption: gait/displacement evidence and exact post-collision position sampling for sub-unit locomotion. No controller or digest changes. See docs/review/subunit-locomotion.md. + +BP-004 damage marker adoption: persistent world-space damage-stage notches, distinct from HUD remaining integrity. Static Reduced Motion behavior and destruction/removal reconciliation verified. See docs/review/camera-damage-markers/review.md. Camera animation and art acceptance remain open. + +BP-005/BP-007 ground-plan clarification adoption: distinguish wall contacts from baked walkable apron; unknown hidden corners cannot be inferred from roof or alpha bounds. No arena, collision or production art change. Study evidence: docs/review/building-wall-study/review.md. + +BP-009 adoption: occlusion must preserve Player ground position and solid-boundary readability without false elevation. Lifecycle and continuous/encounter acceptance remain open; current treatments are comparison fixtures only. See docs/review/ground-cue/review.md. + +BP-003 target-schema adoption: clip-metadata-002.schema.json and mechanical conversion checks define the next decoder target. Active metadata, animation version, frame IDs and gameplay identities remain v1/current. No v2 delivery or new art is admitted. + +BP-003 event-facing adoption: one-shot occurrences carry event-facing/start tick, select exact lifetime and tick-sampled frames, preserve live-state fallback and expire without extension. Core and simulator evidence: docs/review/reaction-occurrence/review.md. Visual turning acceptance and active v2 delivery migration remain open. + +BP-002 controlled-source pilot adoption: editable character rig and measured contact/limb continuity experiment, followed by benchmark costume/facing and renderer gates. A rig scaffold is not admitted art; production resources and gameplay identities stay unchanged. + +BP-007 high-resolution outline clarification adoption: explicit source-pixel/logical-mask separation, constant equal-framing faction treatment, post-action frame correctness and bounded allocation/cache evidence. Runtime #124 remains open; pin adoption alone does not fix or accept 384px production assets. + +BP-010 comparison adoption: compare existing, reduced-opacity and absent Player border in the benchmark fixture before selecting painted-art contrast. Normal play retains D-094; gameplay identities and contract payloads apart from the specification pin remain unchanged. + +BP-002 layered-source clarification adoption: setup-pose part ownership, preserved costume proportions, authored hidden overlaps and joint-range review precede the south cycle. Pin adoption does not admit the partial layered study. See docs/review/layered-source/review.md. Gameplay identities, active clips, fixtures and production textures remain unchanged. + +BP-002/BP-008 elevated-motion clarification adoption: source/anatomical measurements are distinct from projected lengths; layered motion requires reviewed depth treatment and authored foot contacts. The eight-joint source scaffold is not a gait. Gameplay identities, fixtures and active artwork remain unchanged. See docs/review/projected-motion/review.md. + +BP-008 displayed-playback clarification adoption: source, exported-frame and actual displayed contact are distinct evidence. Moving benchmark observations must retain playback and record post-action frame identity with authoritative and rendered positions. Static composition remains a separate fixture; no phase policy or art admission follows from this pin change. + +BP-001/BP-010 field contrast adoption: compare existing fill, dark contour and paired contour on the unchanged solid-clipped field path. D-104/T1045–T1046; presentation comparison only, no ruleset/content/arena/replay or active art migration. Recorded selection and coordinated visual-contract update remain required before changing shipping treatment. + +BP-001 street-surface comparison adoption: separate repeating surfaces from placed continuous curb/embedded rails in the benchmark fixture. T1042/T1046; authored presentation parameters only, no arena, ruleset, content or active art migration. Legal arena integration and visual acceptance remain open. diff --git a/Sources/SurveillanceCore/Combat/DamageOrdering.swift b/Sources/SurveillanceCore/Combat/DamageOrdering.swift index cdb5b825..d0c77e83 100644 --- a/Sources/SurveillanceCore/Combat/DamageOrdering.swift +++ b/Sources/SurveillanceCore/Combat/DamageOrdering.swift @@ -13,7 +13,7 @@ /// never falls back on the order hits were discovered in, which depends on pool /// iteration and is not authoritative. struct DamageHit: Equatable, Sendable { - /// Sweep intersection time along this tick's motion. Walls resolve at 0. + /// Sweep intersection time along this tick's motion. Walls use their actual entry time (D-103). var t: Int64 /// Entity struck. `EntityID(0)` for a wall, which has no entity. var target: EntityID diff --git a/Sources/SurveillanceCore/ContractVersions.swift b/Sources/SurveillanceCore/ContractVersions.swift index 1420a1e8..56c4db95 100644 --- a/Sources/SurveillanceCore/ContractVersions.swift +++ b/Sources/SurveillanceCore/ContractVersions.swift @@ -1,6 +1,6 @@ public enum ContractVersions { - public static let specificationCommit = "2377b99c6b6d1654e2cb976ee1b7e07b75c77e1a" - public static let ruleset = "ss-rules-007" + public static let specificationCommit = "d6027758fa8e46ed2073cbb3b6face8ee19847ef" + public static let ruleset = "ss-rules-008" public static let content = "civic-seam-content-006" public static let arena = "civic-seam-arena-004" public static let replaySchema = "runtime-kernel-001" diff --git a/Sources/SurveillanceCore/Geometry/Collision.swift b/Sources/SurveillanceCore/Geometry/Collision.swift index e1e06a55..84f9ffea 100644 --- a/Sources/SurveillanceCore/Geometry/Collision.swift +++ b/Sources/SurveillanceCore/Geometry/Collision.swift @@ -94,6 +94,11 @@ public enum Collision { } public static func segmentIntersects(_ a: VecQ8, _ b: VecQ8, box: AABB) -> Bool { + segmentEntryTime(a, b, box: box) != nil + } + + /// D-103: Q8 entry time, comparable to circular sweep times. + public static func segmentEntryTime(_ a: VecQ8, _ b: VecQ8, box: AABB) -> Int64? { let x0 = a.x.raw let y0 = a.y.raw let x1 = b.x.raw @@ -126,8 +131,8 @@ public enum Collision { clip(dx, maxX - x0), clip(-dy, y0 - minY), clip(dy, maxY - y0) - else { return false } - return t0 <= t1 + else { return nil } + return t0 <= t1 ? t0 : nil } public static func lineOfFireClear(from: VecQ8, to: VecQ8, solids: [(id: String, box: AABB)]) -> Bool { @@ -150,9 +155,8 @@ public enum Collision { let a = mx * mx + my * my let b = 2 * (dx * mx + dy * my) let c = dx * dx + dy * dy - r * r - if a == 0 { - return c <= 0 ? 0 : nil - } + if c <= 0 { return 0 } + if a == 0 { return nil } guard let disc = IntMath.quadraticDiscriminant(a: a, b: b, c: c) else { return nil } let sqrtDisc = IntMath.isqrt(disc) let tNum = -b - sqrtDisc diff --git a/Sources/SurveillanceCore/Presentation/AwarenessHint.swift b/Sources/SurveillanceCore/Presentation/AwarenessHint.swift index 26f04888..625ea985 100644 --- a/Sources/SurveillanceCore/Presentation/AwarenessHint.swift +++ b/Sources/SurveillanceCore/Presentation/AwarenessHint.swift @@ -7,7 +7,7 @@ /// duration. It is a tutorial hint, not a safety message, so the tutorial /// setting hides it. public struct AwarenessHintProjector: Equatable, Sendable { - public static let copy = "UNSEEN ENEMIES HOLD • STRIKE FIRST FOR DOUBLE DAMAGE" + public static let copy = "UNSEEN ENEMIES HOLD • STRIKE FIRST FOR TRIPLE DAMAGE" /// `hud-tutorial.md`: each card's maximum visual duration. public static let visibleTicks: UInt64 = 300 @@ -40,12 +40,31 @@ public struct AwarenessHintProjector: Equatable, Sendable { } } + /// Equivalent visibility query without constructing unrelated render data. + public static func unawareEnemyOnScreen(_ state: WorldState) -> Bool { + let camera = PresentationCamera.follow( + player: VecI(x: state.player.position.x.unitsTruncated, y: state.player.position.y.unitsTruncated), + heading: state.player.facing, bounds: state.arena.boundsUnits) + return state.enemies.contains { enemy in + enemy.alive && enemy.isUnaware && PresentationCamera.contains( + VecI(x: enemy.position.x.unitsTruncated, y: enemy.position.y.unitsTruncated), + center: camera.center) + } + } + /// The copy to draw for `snap`, or nil. public mutating func project(_ snap: PresentationSnapshot) -> String? { - if shownAt == nil, Self.unawareEnemyOnScreen(snap) { - shownAt = snap.tick - } - guard let shownAt, snap.tick >= shownAt, snap.tick - shownAt < Self.visibleTicks else { return nil } + project(tick: snap.tick, visible: Self.unawareEnemyOnScreen(snap)) + } + + /// Session path: same hint semantics without full rendering projection. + public mutating func project(_ state: WorldState) -> String? { + project(tick: state.tick, visible: Self.unawareEnemyOnScreen(state)) + } + + private mutating func project(tick: UInt64, visible: @autoclosure () -> Bool) -> String? { + if shownAt == nil, visible() { shownAt = tick } + guard let shownAt, tick >= shownAt, tick - shownAt < Self.visibleTicks else { return nil } return Self.copy } } diff --git a/Sources/SurveillanceCore/Presentation/CameraFollow.swift b/Sources/SurveillanceCore/Presentation/CameraFollow.swift new file mode 100644 index 00000000..8ec09724 --- /dev/null +++ b/Sources/SurveillanceCore/Presentation/CameraFollow.swift @@ -0,0 +1,40 @@ +import Foundation + +/// Stateful display-only follow (animation §9 / arena-layout camera framing). +/// RulesViewport and authoritative positions never use this state. +public struct CameraFollow: Sendable { + public private(set) var x: Double? + public private(set) var y: Double? + private var anchorX: Double = 0 + private var anchorY: Double = 0 + public init() {} + public mutating func reset() { self = Self() } + + public mutating func update(player: VecI, heading: VecQ8, bounds: AABB, deltaTime: Double) { + let px = Double(player.x), py = Double(player.y) + if x == nil { + anchorX = px; anchorY = py + x = px; y = py + } + let halfDeadX = Double(PresentationCamera.deadZoneWidth) / 2 + let halfDeadY = Double(PresentationCamera.deadZoneHeight) / 2 + anchorX = min(max(anchorX, px - halfDeadX), px + halfDeadX) + anchorY = min(max(anchorY, py - halfDeadY), py + halfDeadY) + let hx = Double(heading.x.raw), hy = Double(heading.y.raw) + let length = hypot(hx, hy) + let look = Double(PresentationCamera.lookAhead) + let targetX = anchorX + (length > 0 ? hx / length * look : 0) + let targetY = anchorY + (length > 0 ? hy / length * look : 0) + // Exponential smoothing is independent of display cadence. Cap resume + // gaps so a stalled frame cannot turn into a sudden camera jump. + let dt = deltaTime.isFinite ? min(max(deltaTime, 0), 1.0 / 30) : 0 + let gain = 1 - exp(-dt / 0.12) + let halfW = Double(PresentationCamera.visibleWidth) / 2 + let halfH = Double(PresentationCamera.visibleHeight) / 2 + func clamp(_ value: Double, _ low: Double, _ high: Double) -> Double { + low <= high ? min(max(value, low), high) : (low + high) / 2 + } + x = clamp(x! + (targetX - x!) * gain, Double(bounds.minX) + halfW, Double(bounds.maxX) - halfW) + y = clamp(y! + (targetY - y!) * gain, Double(bounds.minY) + halfH, Double(bounds.maxY) - halfH) + } +} diff --git a/Sources/SurveillanceCore/Presentation/ClipFrameLibrary.swift b/Sources/SurveillanceCore/Presentation/ClipFrameLibrary.swift index 9ddf5bb1..99be4ab8 100644 --- a/Sources/SurveillanceCore/Presentation/ClipFrameLibrary.swift +++ b/Sources/SurveillanceCore/Presentation/ClipFrameLibrary.swift @@ -12,10 +12,11 @@ public struct ClipFrameLibrary: Sendable { public var clipId: String public var actorRole: String public var directions: [String] - public var framesPerSecond: Int + public var framesPerSecond: Int? + public var authoredTiming: ClipTiming? = nil public var loop: Bool public var anchor: VecI - /// Frame IDs in contract order, `directions.count` groups of equal size. + /// Frame IDs in authored contract order; facing is encoded in each ID. public var frameIds: [String] public var framesPerDirection: Int { @@ -41,33 +42,21 @@ public struct ClipFrameLibrary: Sendable { } static func make(clipJSON: Data, catalog: AssetCatalog) throws -> ClipFrameLibrary { - guard let root = try? JSONSerialization.jsonObject(with: clipJSON) as? [String: Any], - let rawClips = root["clips"] as? [[String: Any]] - else { - throw AssetCatalogError.invalidJSON - } - - var clips: [String: Clip] = [:] - for raw in rawClips { - guard let clipId = raw["clipId"] as? String, - let actorRole = raw["actorRole"] as? String, - let frameIds = raw["frameIds"] as? [String], - let fps = raw["framesPerSecond"] as? Int, - let loop = raw["loop"] as? Bool - else { - throw AssetCatalogError.invalidJSON - } - let anchorRaw = raw["anchor"] as? [String: Int] ?? [:] - clips[clipId] = Clip( - clipId: clipId, - actorRole: actorRole, - directions: raw["directions"] as? [String] ?? [], - framesPerSecond: fps, - loop: loop, - anchor: VecI(x: anchorRaw["x"] ?? 0, y: anchorRaw["y"] ?? 0), - frameIds: frameIds - ) - } + // Delivery must use the same schema and semantic validation as reactions. + // In particular, future timing keys cannot be silently dropped here. + let validated = try ClipCatalogLoader.decode(clipJSON) + let clips = Dictionary(uniqueKeysWithValues: validated.clips.map { clip in + (clip.clipId, Clip( + clipId: clip.clipId, + actorRole: clip.actorRole, + directions: clip.directions, + framesPerSecond: clip.framesPerSecond, + authoredTiming: clip.authoredTiming, + loop: clip.loop, + anchor: VecI(x: clip.anchor.x, y: clip.anchor.y), + frameIds: clip.frameIds + )) + }) // Only an admitted, accepted sprite contributes a file. var delivered: [String: String] = [:] @@ -92,11 +81,10 @@ public struct ClipFrameLibrary: Sendable { public func frameIds(clipId: String, direction: String?) -> [String] { guard let clip = clips[clipId] else { return [] } guard let direction, !clip.directions.isEmpty else { return clip.frameIds } - guard let index = clip.directions.firstIndex(of: direction) else { return [] } - let per = clip.framesPerDirection - let start = index * per - guard start + per <= clip.frameIds.count else { return [] } - return Array(clip.frameIds[start..<(start + per)]) + guard clip.directions.contains(direction) else { return [] } + // Match ClipRecord's authored-facing selection, even when facings are + // interleaved. Array position alone cannot identify a frame's facing. + return clip.frameIds.filter { $0.contains("_\(direction)_") } } /// Delivered file names for one direction, or `nil` when the clip is not @@ -114,6 +102,21 @@ public struct ClipFrameLibrary: Sendable { return paths } + public func timing(clipId: String, direction: String?) -> ClipTiming? { + guard let clip = clips[clipId] else { return nil } + if let timing = clip.authoredTiming { + if let direction, !clip.directions.isEmpty { + guard clip.directions.contains(direction) else { return nil } + let indices = clip.frameIds.indices.filter { clip.frameIds[$0].contains("_\(direction)_") } + return try? timing.selecting(indices) + } + return timing + } + guard let fps = clip.framesPerSecond else { return nil } + return try? .uniform(frameCount: frameIds(clipId: clipId, direction: direction).count, + framesPerSecond: fps) + } + public func isBacked(clipId: String, direction: String? = nil) -> Bool { deliveredFrames(clipId: clipId, direction: direction) != nil } diff --git a/Sources/SurveillanceCore/Presentation/ClipMetadata.swift b/Sources/SurveillanceCore/Presentation/ClipMetadata.swift index 92505862..90d35210 100644 --- a/Sources/SurveillanceCore/Presentation/ClipMetadata.swift +++ b/Sources/SurveillanceCore/Presentation/ClipMetadata.swift @@ -1,4 +1,5 @@ import Foundation +import CoreFoundation public struct ClipAnchor: Equatable, Hashable, Sendable { public var x: Int @@ -11,7 +12,8 @@ public struct ClipRecord: Equatable, Sendable { public var state: String public var directions: [String] public var frameIds: [String] - public var framesPerSecond: Int + public var framesPerSecond: Int? + public var authoredTiming: ClipTiming? = nil public var loop: Bool public var anchor: ClipAnchor public var authoritativeEventMarker: String @@ -21,6 +23,16 @@ public struct ClipRecord: Equatable, Sendable { public var audioCue: String public var vfxCue: String + public func timing(forDirection direction: String) throws -> ClipTiming { + guard directions.isEmpty || directions.contains(direction) else { throw ClipTiming.Failure.index } + if let authoredTiming { + let indices = frameIds.indices.filter { directions.isEmpty || frameIds[$0].contains("_\(direction)_") } + return try authoredTiming.selecting(indices) + } + guard let framesPerSecond else { throw ClipTiming.Failure.invalid } + return try .uniform(frameCount: frameIds(forDirection: direction).count, framesPerSecond: framesPerSecond) + } + public var eventType: EventType? { ClipCatalog.eventType(forMarker: authoritativeEventMarker) } @@ -148,7 +160,8 @@ enum ClipCatalogLoader { if let unexpected = Set(root.keys).subtracting(catalogKeys).sorted().first { throw ClipMetadataError.unexpectedKey(unexpected) } - guard root["schemaVersion"] as? String == "clip-metadata-001" else { + guard let schema = root["schemaVersion"] as? String, + ["clip-metadata-001", "clip-metadata-002"].contains(schema) else { throw ClipMetadataError.schemaVersion } guard root["animationVersion"] as? String == "animation-civic-seam-001" else { @@ -161,7 +174,7 @@ enum ClipCatalogLoader { var clips: [ClipRecord] = [] var seen = Set() for raw in rawClips { - let clip = try decodeClip(raw) + let clip = try decodeClip(raw, schema: schema) if !seen.insert(clip.clipId).inserted { throw ClipMetadataError.duplicateClipId(clip.clipId) } @@ -186,29 +199,38 @@ enum ClipCatalogLoader { try validateStableAnchors(clips) try validateDirectionFrames(clips) try validateCancelWindows(clips) + for clip in clips { + for direction in clip.directions.isEmpty ? ["none"] : clip.directions { + _ = try clip.timing(forDirection: direction).durationTicks(at: 60) + } + } return ClipCatalog( - schemaVersion: "clip-metadata-001", + schemaVersion: schema, animationVersion: "animation-civic-seam-001", clips: clips ) } - private static func decodeClip(_ raw: [String: Any]) throws -> ClipRecord { - let extra = Set(raw.keys).subtracting(clipKeys) + private static func decodeClip(_ raw: [String: Any], schema: String) throws -> ClipRecord { + let keys = schema == "clip-metadata-002" + ? clipKeys.subtracting(["framesPerSecond"]).union(["timing"]) : clipKeys + let extra = Set(raw.keys).subtracting(keys) if let unexpected = extra.sorted().first { throw ClipMetadataError.unexpectedKey(unexpected) } - for key in clipKeys { + for key in keys { guard raw[key] != nil else { throw ClipMetadataError.missingKey(key) } } guard let clipId = raw["clipId"] as? String, !clipId.isEmpty, let actorRole = raw["actorRole"] as? String, !actorRole.isEmpty, let state = raw["state"] as? String, !state.isEmpty, let directions = raw["directions"] as? [String], + Set(directions).count == directions.count, + directions.allSatisfy({ ClipCatalog.fourDirections.contains($0) }), let frameIds = raw["frameIds"] as? [String], !frameIds.isEmpty, - let fps = intValue(raw["framesPerSecond"]), fps > 0, - let loop = raw["loop"] as? Bool, + let loop = boolValue(raw["loop"]), let anchorObject = raw["anchor"] as? [String: Any], + Set(anchorObject.keys) == ["x", "y"], let anchorX = intValue(anchorObject["x"]), let anchorY = intValue(anchorObject["y"]), let marker = raw["authoritativeEventMarker"] as? String, !marker.isEmpty, @@ -220,6 +242,23 @@ enum ClipCatalogLoader { else { throw ClipMetadataError.invalidJSON } + let fps: Int? + let authoredTiming: ClipTiming? + if schema == "clip-metadata-002" { + guard let timing = raw["timing"] as? [String: Any], + Set(timing.keys) == ["unitsPerSecond", "frameUnits"], + let timebase = intValue(timing["unitsPerSecond"]), + let rawUnits = timing["frameUnits"] as? [Any], + rawUnits.count == frameIds.count else { throw ClipMetadataError.invalidJSON } + let units = rawUnits.compactMap { intValue($0) } + guard units.count == rawUnits.count else { throw ClipMetadataError.invalidJSON } + authoredTiming = try ClipTiming(unitsPerSecond: timebase, frameUnits: units) + fps = nil + } else { + guard let value = intValue(raw["framesPerSecond"]), value > 0 else { throw ClipMetadataError.invalidJSON } + fps = value + authoredTiming = nil + } if frameIds.contains(where: { $0.isEmpty }) { throw ClipMetadataError.invalidJSON } @@ -236,6 +275,7 @@ enum ClipCatalogLoader { directions: directions, frameIds: frameIds, framesPerSecond: fps, + authoredTiming: authoredTiming, loop: loop, anchor: ClipAnchor(x: anchorX, y: anchorY), authoritativeEventMarker: marker, @@ -345,9 +385,16 @@ enum ClipCatalogLoader { } } + private static func boolValue(_ value: Any?) -> Bool? { + guard let number = value as? NSNumber, + CFGetTypeID(number) == CFBooleanGetTypeID() else { return nil } + return number.boolValue + } + private static func intValue(_ value: Any?) -> Int? { - if let value = value as? Int { return value } - if let value = value as? NSNumber { return value.intValue } - return nil + guard let number = value as? NSNumber, + CFGetTypeID(number) != CFBooleanGetTypeID() else { return nil } + // Parse the exact decimal representation: no truncation or overflow wrap. + return Int(number.stringValue) } } diff --git a/Sources/SurveillanceCore/Presentation/ClipTiming.swift b/Sources/SurveillanceCore/Presentation/ClipTiming.swift new file mode 100644 index 00000000..9a413724 --- /dev/null +++ b/Sources/SurveillanceCore/Presentation/ClipTiming.swift @@ -0,0 +1,77 @@ +/// Exact presentation durations. Conversion to seconds belongs at the renderer boundary. +public struct ClipTiming: Equatable, Sendable { + public enum Failure: Error, Equatable { case invalid, overflow, index } + public let unitsPerSecond: Int + public let frameUnits: [Int] + public let totalUnits: Int + + public init(unitsPerSecond: Int, frameUnits: [Int]) throws { + guard unitsPerSecond > 0, !frameUnits.isEmpty, + frameUnits.allSatisfy({ $0 > 0 }) else { throw Failure.invalid } + var total = 0 + for units in frameUnits { + let sum = total.addingReportingOverflow(units) + guard !sum.overflow else { throw Failure.overflow } + total = sum.partialValue + } + self.unitsPerSecond = unitsPerSecond + self.frameUnits = frameUnits + self.totalUnits = total + } + + /// Adapter for the unchanged v1 delivery, not a new metadata schema. + public static func uniform(frameCount: Int, framesPerSecond: Int) throws -> Self { + guard frameCount > 0, framesPerSecond > 0 else { throw Failure.invalid } + return try Self(unitsPerSecond: framesPerSecond, frameUnits: Array(repeating: 1, count: frameCount)) + } + + /// Select with exactly the same indices used to select frame IDs. + public func selecting(_ indices: [Int]) throws -> Self { + guard !indices.isEmpty, indices.allSatisfy({ frameUnits.indices.contains($0) }), + zip(indices, indices.dropFirst()).allSatisfy({ $0.0 < $0.1 }) else { throw Failure.index } + return try Self(unitsPerSecond: unitsPerSecond, frameUnits: indices.map { frameUnits[$0] }) + } + + public var frameSeconds: [Double] { + frameUnits.map { Double($0) / Double(unitsPerSecond) } + } + + public func durationTicks(at ticksPerSecond: Int) throws -> UInt64 { + guard ticksPerSecond > 0 else { throw Failure.invalid } + let product = totalUnits.multipliedReportingOverflow(by: ticksPerSecond) + guard !product.overflow else { throw Failure.overflow } + let whole = product.partialValue / unitsPerSecond + // Avoid adding denominator-1 to the numerator, which can overflow. + return UInt64(whole) + (product.partialValue % unitsPerSecond == 0 ? 0 : 1) + } +} + +/// Identity and facing of one event-driven presentation occurrence. +public struct ClipOccurrence: Equatable, Sendable { + public let direction: String + public let startTick: UInt64 + public init(direction: String, startTick: UInt64) { + self.direction = direction + self.startTick = startTick + } + public func elapsedTicks(at tick: UInt64) -> UInt64 { + tick >= startTick ? tick - startTick : 0 + } +} + +extension ClipTiming { + /// Exact frame selection at 60 Hz; completed one-shots retain their last pose. + /// Full-width products avoid overflow even for a very late render. + public func frameIndex(atTickOffset offset: UInt64) -> Int { + let elapsed = offset.multipliedFullWidth(by: UInt64(unitsPerSecond)) + var boundary: UInt64 = 0 + for (index, units) in frameUnits.enumerated() { + boundary += UInt64(units) // construction already checked the total + let end = boundary.multipliedFullWidth(by: 60) + if elapsed.high < end.high || (elapsed.high == end.high && elapsed.low < end.low) { + return index + } + } + return frameUnits.count - 1 + } +} diff --git a/Sources/SurveillanceCore/Presentation/CombatFeedbackFrame.swift b/Sources/SurveillanceCore/Presentation/CombatFeedbackFrame.swift new file mode 100644 index 00000000..10c822b2 --- /dev/null +++ b/Sources/SurveillanceCore/Presentation/CombatFeedbackFrame.swift @@ -0,0 +1,17 @@ +/// T1035 / CC-008: transient observations of a completed tick. Never serialized +/// into WorldState, used by rules, or substituted for authoritative events. +public struct CombatFeedbackFrame: Equatable, Sendable { + public struct Shot: Equatable, Sendable { + public var projectile: EntityID + public var origin: VecQ8 + public var velocity: VecQ8 + public init(projectile: EntityID, origin: VecQ8, velocity: VecQ8) { + self.projectile = projectile + self.origin = origin + self.velocity = velocity + } + } + public var shot: Shot? = nil + public var jammerReducedExposure = false + public init() {} +} diff --git a/Sources/SurveillanceCore/Presentation/FeelPassPresenter.swift b/Sources/SurveillanceCore/Presentation/FeelPassPresenter.swift index 3eebd515..d3dea118 100644 --- a/Sources/SurveillanceCore/Presentation/FeelPassPresenter.swift +++ b/Sources/SurveillanceCore/Presentation/FeelPassPresenter.swift @@ -43,16 +43,33 @@ public struct FeelPassPresenter: Equatable, Sendable { /// Refreshes everything derived from the current state alone (also used /// once a debug scenario has rewritten the state). public mutating func observe(_ state: WorldState) { - let snap = PresentationSnapshot(state) + let player = VecI(x: state.player.position.x.unitsTruncated, y: state.player.position.y.unitsTruncated) + let camera = PresentationCamera.follow(player: player, heading: state.player.facing, bounds: state.arena.boundsUnits) + let node = CombatAuthoritySnapshot.project(state).currentNode + let copy = HUDLayout.combatObjectiveCopy( + node: node, extractionArmed: state.extraction.armed, + insideLockedExtraction: state.arena.extraction.aabb.contains(player) && !state.extraction.armed) nearMiss = PatrolNearMiss.members(state) - objectiveCopy = encounterLabels.project(snap, state: state) + objectiveCopy = encounterLabels.project(copy: copy, node: node, tick: state.tick, state: state) + // Match PatrolConeProjection's membership exactly, including zero-facing + // exclusion, without computing the clipped outlines just to test origins. + let patrol = Set(state.enemies.filter { + $0.alive && $0.isUnaware && $0.patrol.map { $0.facing != .zero } == true + }.map(\.id)) + var patrolVisible = false + var unawareVisible = false + for enemy in state.enemies where enemy.alive && enemy.isUnaware { + guard PresentationCamera.contains( + VecI(x: enemy.position.x.unitsTruncated, y: enemy.position.y.unitsTruncated), + center: camera.center) else { continue } + if patrol.contains(enemy.id) { patrolVisible = true } else { unawareVisible = true } + } var hints: [String] = [] - if PatrolTutorial.coneOnScreen(snap) { hints.append(PatrolTutorial.copy) } - if Self.unawareNonPatrolOnScreen(snap) { hints.append(AwarenessHintProjector.copy) } - let card = snap.tutorialCopyIsSafetyMessage ? nil : snap.tutorialCopy - let blocked = snap.upgradePending - || snap.tutorialCopyIsSafetyMessage - || encounterLabels.isFresh(snap.objectiveNode, tick: snap.tick) + if patrolVisible { hints.append(PatrolTutorial.copy) } + if unawareVisible { hints.append(AwarenessHintProjector.copy) } + let safety = state.tutorial.copyIsSafetyMessage + let card = safety || state.tutorial.copy.isEmpty ? nil : state.tutorial.copy + let blocked = state.upgrade.pending || safety || encounterLabels.isFresh(node, tick: state.tick) tutorialLine = tutorial.update(card: card, hints: hints, blocked: blocked) } diff --git a/Sources/SurveillanceCore/Presentation/Opening.swift b/Sources/SurveillanceCore/Presentation/Opening.swift index 54611c29..129ee3b2 100644 --- a/Sources/SurveillanceCore/Presentation/Opening.swift +++ b/Sources/SurveillanceCore/Presentation/Opening.swift @@ -200,12 +200,16 @@ public struct EncounterLabelGate: Equatable, Sendable { /// not activated. Extraction copy (locked or open) is not an encounter /// label and always shows. public mutating func project(_ snap: PresentationSnapshot, state: WorldState) -> String? { - let copy = snap.combatObjectiveCopy + project(copy: snap.combatObjectiveCopy, node: snap.objectiveNode, tick: snap.tick, state: state) + } + + /// Copy-only session path; no render geometry is required by this gate. + mutating func project(copy: String, node: CombatAuthorityNode, tick: UInt64, state: WorldState) -> String? { let isEncounterLabel = copy != HUDLayout.lockedExtractionCopy && copy != HUDLayout.phoenixStepsOpenCopy guard isEncounterLabel else { return copy } - guard Self.activated(snap.objectiveNode, in: state) else { return nil } - if shownAt[snap.objectiveNode] == nil { shownAt[snap.objectiveNode] = snap.tick } + guard Self.activated(node, in: state) else { return nil } + if shownAt[node] == nil { shownAt[node] = tick } return copy } diff --git a/Sources/SurveillanceCore/Presentation/PresentationSnapshot.swift b/Sources/SurveillanceCore/Presentation/PresentationSnapshot.swift index eb75e9e2..a84f2a40 100644 --- a/Sources/SurveillanceCore/Presentation/PresentationSnapshot.swift +++ b/Sources/SurveillanceCore/Presentation/PresentationSnapshot.swift @@ -15,6 +15,9 @@ public struct PresentationSnapshot: Equatable, Sendable { /// `ReactionClipTracker`. The renderer tries it before `clipId` and falls /// back, so an unbacked reaction never hides the state clip. public var reactionClipId: String? = nil + public var reactionOccurrence: ClipOccurrence? = nil + public var heldClipOccurrence: ClipOccurrence? = nil + public var fallbackClipId: String? = nil /// D-089: a standard enemy that has not been alerted. The renderer /// draws the `?` marker above it (animation.md § 8a); its shape, not /// its colour, carries the state. Presentation only. @@ -22,6 +25,8 @@ public struct PresentationSnapshot: Equatable, Sendable { } public struct CameraSprite: Equatable, Sendable { + /// Exact authoritative emitter position, distinct from the mount artwork. + public var fieldOrigin: VecQ8? = nil public var id: EntityID public var x: Int public var y: Int @@ -78,6 +83,9 @@ public struct PresentationSnapshot: Equatable, Sendable { public var inTransition: Bool } + public var combatFeedback = CombatFeedbackFrame() + /// Inclusive authority window, independent of the shorter Dodge animation. + public var ghostConcealmentActive = false public var tick: UInt64 public var outcome: RunOutcome public var player: CircleSprite @@ -159,6 +167,7 @@ public struct PresentationSnapshot: Equatable, Sendable { public var playerClipId: String /// Player hurt clip an event calls for, preferred over `playerClipId`. public var playerReactionClipId: String? = nil + public var playerReactionOccurrence: ClipOccurrence? = nil /// Defeated enemies still playing their defeat clip after leaving /// authoritative state. Presentation only; drawn only where the clip is backed. public var defeated: [CircleSprite] = [] @@ -215,6 +224,7 @@ public struct PresentationSnapshot: Equatable, Sendable { cameras = state.cameras.map { let presentationState = CameraPresentation.persistentState(integrity: $0.integrity) return CameraSprite( + fieldOrigin: $0.fieldOrigin, id: $0.entityId, x: $0.position.x, y: $0.position.y, @@ -268,6 +278,8 @@ public struct PresentationSnapshot: Equatable, Sendable { destroyed: camerasDestroyed, complete: state.networkBlackout ) + ghostConcealmentActive = state.upgrade.ghostStep && state.tick > 0 + && state.tick <= state.player.cameraInvisibleUntilTick && !state.outcome.isTerminal upgrade = state.upgrade.selected upgradePending = state.upgrade.pending tutorialCopy = state.tutorial.copy.isEmpty ? nil : state.tutorial.copy diff --git a/Sources/SurveillanceCore/Presentation/ProceduralVFX.swift b/Sources/SurveillanceCore/Presentation/ProceduralVFX.swift index c3aaf0d5..d2d1ac9d 100644 --- a/Sources/SurveillanceCore/Presentation/ProceduralVFX.swift +++ b/Sources/SurveillanceCore/Presentation/ProceduralVFX.swift @@ -94,6 +94,8 @@ public struct VFXPresentation: Equatable, Sendable { public var shape: String public var sourceEntityId: EntityID? public var sequence: Int + public var evidence: [String: CanonicalJSON] = [:] + public var impactPoints: [VecQ8] = [] /// Text the moment shows: the boss phase name for `bossPhaseBreak`, and /// `NETWORK BLACKOUT` for `networkBlackout`. Nil for every other recipe. public var label: String? = nil @@ -136,6 +138,7 @@ public struct VFXProjection: Equatable, Sendable { public struct VFXProjector: Equatable, Sendable { public var lastPlayerDamageTick: UInt64? public var nextSequence: Int + private var damageTicksBySource: [String: UInt64] = [:] public init() { lastPlayerDamageTick = nil @@ -154,13 +157,15 @@ public struct VFXProjector: Equatable, Sendable { context: VFXProjectionContext = .none ) -> VFXProjection { var presentations: [VFXPresentation] = [] + damageTicksBySource = damageTicksBySource.filter { tick >= $0.value && tick - $0.value < catalog.playerDamageCoalesceTicks } let reduced = settings.reducedMotion || settings.reducedFlash for event in events { for recipe in catalog.recipes where recipe.eventTypes.contains(event.type) { if recipe.id == "playerHit" { - if let last = lastPlayerDamageTick, tick >= last, tick - last < catalog.playerDamageCoalesceTicks { - continue - } + let key = event.payload["contributors"]?.serialize() + ?? payloadString(event, "sourceEntityId") ?? "unknown" + if damageTicksBySource[key] != nil { continue } + damageTicksBySource[key] = tick lastPlayerDamageTick = tick } if recipe.id == "cameraAcquire" { @@ -198,16 +203,33 @@ public struct VFXProjector: Equatable, Sendable { } } let projectileHits = events.filter { $0.type == .projectileHit } - if projectileHits.count >= 2, let recipe = catalog.recipesById["ricochet"] { - presentations.append( - present(recipe, event: projectileHits[0], reduced: reduced, sequence: nextSequence) - ) + let groups = Dictionary(grouping: projectileHits, by: \.primaryEntityId) + for id in groups.keys.compactMap({ $0 }).sorted() { + guard let hits = groups[id], hits.count == 2, + let first = hits.first(where: { payloadString($0, "projectileKind") == "civicPulse" }), + let second = hits.first(where: { payloadString($0, "projectileKind") == "ricochet" }), + payloadString(first, "projectileId") == id.decimalString, + payloadString(second, "projectileId") == id.decimalString, + let firstTarget = payloadString(first, "targetEntityId"), + let secondTarget = payloadString(second, "targetEntityId"), firstTarget != secondTarget, + let a = Self.point(first.payload, prefix: "impact"), + let b = Self.point(second.payload, prefix: "impact"), + let recipe = catalog.recipesById["ricochet"] else { continue } + var presentation = present(recipe, event: first, reduced: reduced, sequence: nextSequence) + presentation.impactPoints = [a, b] + presentations.append(presentation) nextSequence += 1 } presentations = steal(presentations, limit: catalog.maxConcurrentEmitters) return VFXProjection(presentations: presentations) } + public static func point(_ payload: [String: CanonicalJSON], prefix: String) -> VecQ8? { + guard case .integer(let x) = payload["\(prefix)XQ8"], + case .integer(let y) = payload["\(prefix)YQ8"] else { return nil } + return VecQ8(x: Q8(raw: x), y: Q8(raw: y)) + } + private func present( _ recipe: VFXRecipe, event: AuthoritativeEvent, @@ -225,6 +247,7 @@ public struct VFXProjector: Equatable, Sendable { shape: recipe.shape, sourceEntityId: event.primaryEntityId, sequence: sequence, + evidence: event.payload, reduced: reduced ) } diff --git a/Sources/SurveillanceCore/Presentation/ReactionClipTracker.swift b/Sources/SurveillanceCore/Presentation/ReactionClipTracker.swift index 5c7f16f7..cbc11523 100644 --- a/Sources/SurveillanceCore/Presentation/ReactionClipTracker.swift +++ b/Sources/SurveillanceCore/Presentation/ReactionClipTracker.swift @@ -33,6 +33,7 @@ public struct ReactionClipTracker: Sendable { public var clipId: String /// Exclusive: the reaction shows while `tick < endTick`. public var endTick: UInt64 + public var occurrence: ClipOccurrence } /// A defeated enemy held on screen for its defeat clip after it has left @@ -106,11 +107,19 @@ public struct ReactionClipTracker: Sendable { /// contract cannot load, so presentation degrades to state clips. public static let empty = ReactionClipTracker(clips: []) - /// Ticks one direction of `clip` plays for: frames ÷ fps at 60 Hz, rounded up. - public static func durationTicks(_ clip: ClipRecord) -> UInt64 { - guard clip.framesPerSecond > 0 else { return 0 } - let perDirection = clip.directions.isEmpty ? clip.frameIds.count : clip.frameIds.count / clip.directions.count - return UInt64((perDirection * 60 + clip.framesPerSecond - 1) / clip.framesPerSecond) + /// Selected-facing duration at 60 Hz, rounded up from exact authored timing. + public static func durationTicks(_ clip: ClipRecord, direction: String? = nil) -> UInt64 { + guard let timing = try? clip.timing(forDirection: direction ?? clip.directions.first ?? "none"), + let ticks = try? timing.durationTicks(at: 60) else { return 0 } + return ticks + } + + private static func reaction(_ clip: ClipRecord, direction: String, tick: UInt64) -> Reaction? { + let duration = durationTicks(clip, direction: direction) + let end = tick.addingReportingOverflow(duration) + guard duration > 0, !end.overflow else { return nil } + return Reaction(clipId: clip.clipId, endTick: end.partialValue, + occurrence: ClipOccurrence(direction: direction, startTick: tick)) } /// Records the reactions `result`'s events call for. @@ -119,7 +128,7 @@ public struct ReactionClipTracker: Sendable { /// `currentEnemies` the list after it. A defeated enemy may already be gone /// from the second, so its last position and facing are taken from /// whichever list still holds it, preferring the later. - public mutating func ingest(_ result: TickResult, previousEnemies: [EnemyBody], currentEnemies: [EnemyBody]) { + public mutating func ingest(_ result: TickResult, previousEnemies: [EnemyBody], currentEnemies: [EnemyBody], playerDirection: String = "s") { let tick = result.tick prune(at: tick) func enemy(_ id: EntityID) -> EnemyBody? { @@ -130,13 +139,14 @@ public struct ReactionClipTracker: Sendable { guard let clip = transitionCommitByRole[body.archetype], previousEnemies.first(where: { $0.id == body.id })?.state == .telegraph else { continue } - commits[body.id] = Reaction(clipId: clip.clipId, endTick: tick + Self.durationTicks(clip)) + commits[body.id] = Self.reaction(clip, direction: ActorClipProjection.direction(for: body.velocity), tick: tick) } for event in result.events { switch event.type { case .entityDied: guard let id = event.primaryEntityId, let body = enemy(id), - let clip = defeatClipByRole[body.archetype.rawValue] else { continue } + let clip = defeatClipByRole[body.archetype.rawValue], + let playback = Self.reaction(clip, direction: ActorClipProjection.direction(for: body.velocity), tick: tick) else { continue } reactions[id] = nil commits[id] = nil remains[id] = Remains( @@ -148,24 +158,25 @@ public struct ReactionClipTracker: Sendable { role: body.archetype.rawValue, silhouette: ActorSilhouette.enemy(body.archetype), clipId: clip.clipId, - direction: ActorClipProjection.direction(for: body.velocity) + direction: playback.occurrence.direction, + heldClipOccurrence: playback.occurrence ), - endTick: tick + Self.durationTicks(clip) + endTick: playback.endTick ) case .entityDamaged: // Cameras take entityDamaged too; they are not enemies and are // skipped by the lookup. A killing blow shows defeat, not hurt. guard let id = event.primaryEntityId, !died.contains(id), let body = enemy(id), let clip = hurtClipByRole[body.archetype.rawValue] else { continue } - reactions[id] = Reaction(clipId: clip.clipId, endTick: tick + Self.durationTicks(clip)) + reactions[id] = Self.reaction(clip, direction: ActorClipProjection.direction(for: body.velocity), tick: tick) case .playerDamaged: if let source = event.secondaryEntityId, !died.contains(source), let body = enemy(source), let commit = contactCommitByRole[body.archetype.rawValue] { - commits[source] = Reaction(clipId: commit.clipId, endTick: tick + Self.durationTicks(commit)) + commits[source] = Self.reaction(commit, direction: ActorClipProjection.direction(for: body.velocity), tick: tick) } guard let clip = playerHurtClip else { continue } - playerReaction = Reaction(clipId: clip.clipId, endTick: tick + Self.durationTicks(clip)) + playerReaction = Self.reaction(clip, direction: playerDirection, tick: tick) default: continue } @@ -175,9 +186,20 @@ public struct ReactionClipTracker: Sendable { /// Writes the reactions active at `snapshot.tick` into it. public func apply(to snapshot: inout PresentationSnapshot) { let tick = snapshot.tick + snapshot.playerReactionClipId = nil + snapshot.playerReactionOccurrence = nil for index in snapshot.enemies.indices { + if snapshot.enemies[index].heldClipOccurrence != nil { + snapshot.enemies[index].clipId = snapshot.enemies[index].fallbackClipId + } + snapshot.enemies[index].reactionClipId = nil + snapshot.enemies[index].reactionOccurrence = nil + snapshot.enemies[index].heldClipOccurrence = nil + snapshot.enemies[index].fallbackClipId = nil if let commit = commits[snapshot.enemies[index].id], commit.endTick > tick { + snapshot.enemies[index].fallbackClipId = snapshot.enemies[index].clipId snapshot.enemies[index].clipId = commit.clipId + snapshot.enemies[index].heldClipOccurrence = commit.occurrence } let sprite = snapshot.enemies[index] guard let reaction = reactions[sprite.id], reaction.endTick > tick, @@ -185,6 +207,7 @@ public struct ReactionClipTracker: Sendable { mayInterrupt(sprite.clipId, with: clip) else { continue } snapshot.enemies[index].reactionClipId = reaction.clipId + snapshot.enemies[index].reactionOccurrence = reaction.occurrence } snapshot.defeated = remains.values .filter { $0.endTick > tick } @@ -195,6 +218,7 @@ public struct ReactionClipTracker: Sendable { mayInterrupt(snapshot.playerClipId, with: clip) { snapshot.playerReactionClipId = reaction.clipId + snapshot.playerReactionOccurrence = reaction.occurrence } } diff --git a/Sources/SurveillanceCore/Presentation/UpgradePresentation.swift b/Sources/SurveillanceCore/Presentation/UpgradePresentation.swift index eb4657ab..14e3f7bc 100644 --- a/Sources/SurveillanceCore/Presentation/UpgradePresentation.swift +++ b/Sources/SurveillanceCore/Presentation/UpgradePresentation.swift @@ -5,6 +5,9 @@ public enum UpgradePresentation { public var selectionIndex: UInt8 public var name: String public var role: String + public var effect: String + public var exclusions: String + public var symbolName: String public var numericSummary: String public var voiceOverLabel: String } @@ -27,9 +30,12 @@ public enum UpgradePresentation { selectionIndex: 0, name: "Signal Jammer", role: "Surveillance control", - numericSummary: "Contact delta −1 (min 1); pulses −25%", + effect: "Build Exposure more slowly under surveillance.", + exclusions: "No Tamper or damage reduction.", + symbolName: "antenna.radiowaves.left.and.right.slash", + numericSummary: "Camera gain −1/tick (min 1); Fog/Observation −25%", voiceOverLabel: - "Signal Jammer. Surveillance control. Reduces camera contact gain by one point per tick, minimum one. Reduces fog and boss observation pulses by twenty-five percent." + "Signal Jammer. Surveillance control. Reduces camera contact gain by one point per tick, minimum one. Reduces fog and boss observation pulses by twenty-five percent. No Tamper or damage reduction." ) case .ricochetPulse: Card( @@ -37,9 +43,12 @@ public enum UpgradePresentation { selectionIndex: 1, name: "Ricochet Pulse", role: "Crowd control", + effect: "A hit can continue to one nearby enemy or camera at full damage.", + exclusions: "Requires clear line of sight. No third hit.", + symbolName: "arrow.triangle.branch", numericSummary: "One continuation per hit; 160 unit range", voiceOverLabel: - "Ricochet Pulse. Crowd control. Each civic pulse hit may continue once to a second enemy or camera within one hundred sixty units, excluding the first target." + "Ricochet Pulse. Crowd control. Each civic pulse hit may continue once to a second enemy or camera within one hundred sixty units, excluding the first target, at full damage with clear line of sight. No third hit." ) case .ghostStep: Card( @@ -47,9 +56,12 @@ public enum UpgradePresentation { selectionIndex: 2, name: "Ghost Step", role: "Mobility and surveillance evasion", - numericSummary: "Dodge 540 u/s; 90 tick cooldown; 29 tick camera immunity", + effect: "Dodge faster and briefly disappear from camera detection.", + exclusions: "No damage immunity. Fog, Observation and Tamper still apply.", + symbolName: "figure.run", + numericSummary: "540 u/s for 0.2 s; 1.5 s cooldown; 0.5 s camera concealment; no damage immunity", voiceOverLabel: - "Ghost Step. Mobility and surveillance evasion. Dodge speed five hundred forty units per second, ninety tick cooldown, camera immunity for twenty-nine ticks after dodge start. No damage immunity." + "Ghost Step. Mobility and surveillance evasion. Dodge speed five hundred forty units per second for zero point two seconds, one point five second cooldown, camera concealment for thirty ticks including dodge start, zero point five seconds. No damage immunity. Fog, Observation and Tamper still apply." ) } } diff --git a/Sources/SurveillanceCore/Resources/SPEC_PIN.txt b/Sources/SurveillanceCore/Resources/SPEC_PIN.txt index fae5e8a0..403d8d73 100644 --- a/Sources/SurveillanceCore/Resources/SPEC_PIN.txt +++ b/Sources/SurveillanceCore/Resources/SPEC_PIN.txt @@ -1,5 +1,5 @@ -SS-specs commit 2377b99c6b6d1654e2cb976ee1b7e07b75c77e1a -ruleset ss-rules-007 +SS-specs commit d6027758fa8e46ed2073cbb3b6face8ee19847ef +ruleset ss-rules-008 content civic-seam-content-006 arena civic-seam-arena-004 replaySchema runtime-kernel-001 diff --git a/Sources/SurveillanceCore/Resources/contracts/asset-catalog-001.json b/Sources/SurveillanceCore/Resources/contracts/asset-catalog-001.json index a41df3a6..f93e0d85 100644 --- a/Sources/SurveillanceCore/Resources/contracts/asset-catalog-001.json +++ b/Sources/SurveillanceCore/Resources/contracts/asset-catalog-001.json @@ -2,7 +2,7 @@ "schemaVersion": "asset-catalog-001", "legacyRepository": "scrimshawlife-ctrl/Surveillance-Survivor", "legacyCommit": "3b20d88d6a6e1fe8f07f45f581359d371fa65d98", - "specificationCommit": "2377b99c6b6d1654e2cb976ee1b7e07b75c77e1a", + "specificationCommit": "d6027758fa8e46ed2073cbb3b6face8ee19847ef", "entries": [ { "admissionDecision": "excluded", diff --git a/Sources/SurveillanceCore/Resources/contracts/clip-metadata-002.schema.json b/Sources/SurveillanceCore/Resources/contracts/clip-metadata-002.schema.json new file mode 100644 index 00000000..ea30f271 --- /dev/null +++ b/Sources/SurveillanceCore/Resources/contracts/clip-metadata-002.schema.json @@ -0,0 +1,153 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/Zero-State-LLC/SS-specs/contracts/clip-metadata-002.schema.json", + "title": "Exact-duration clip metadata \u2014 migration target, not active delivery", + "$comment": "Parallel frame count, checked arithmetic and clip semantics require the semantic validator. Active versions.json remains v1 until coordinated runtime migration.", + "type": "object", + "additionalProperties": false, + "required": [ + "schemaVersion", + "animationVersion", + "clips" + ], + "properties": { + "schemaVersion": { + "const": "clip-metadata-002" + }, + "animationVersion": { + "const": "animation-civic-seam-001" + }, + "clips": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "clipId", + "actorRole", + "state", + "authoritativeEventMarker", + "blendOrTransition", + "reducedMotionClip", + "audioCue", + "vfxCue", + "directions", + "frameIds", + "loop", + "anchor", + "cancelWindows", + "timing" + ], + "properties": { + "clipId": { + "type": "string", + "minLength": 1 + }, + "actorRole": { + "type": "string", + "minLength": 1 + }, + "state": { + "type": "string", + "minLength": 1 + }, + "authoritativeEventMarker": { + "type": "string", + "minLength": 1 + }, + "blendOrTransition": { + "type": "string", + "minLength": 1 + }, + "reducedMotionClip": { + "type": "string", + "minLength": 1 + }, + "audioCue": { + "type": "string", + "minLength": 1 + }, + "vfxCue": { + "type": "string", + "minLength": 1 + }, + "directions": { + "type": "array", + "uniqueItems": true, + "items": { + "enum": [ + "n", + "e", + "s", + "w" + ] + } + }, + "frameIds": { + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "minLength": 1 + } + }, + "loop": { + "type": "boolean" + }, + "anchor": { + "type": "object", + "additionalProperties": false, + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "integer", + "minimum": -9223372036854775808, + "maximum": 9223372036854775807 + }, + "y": { + "type": "integer", + "minimum": -9223372036854775808, + "maximum": 9223372036854775807 + } + } + }, + "cancelWindows": { + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "timing": { + "type": "object", + "additionalProperties": false, + "required": [ + "unitsPerSecond", + "frameUnits" + ], + "properties": { + "unitsPerSecond": { + "type": "integer", + "minimum": 1, + "maximum": 9223372036854775807 + }, + "frameUnits": { + "type": "array", + "minItems": 1, + "items": { + "type": "integer", + "minimum": 1, + "maximum": 9223372036854775807 + } + } + } + } + } + } + } + } +} diff --git a/Sources/SurveillanceCore/Resources/contracts/event-catalog-001.json b/Sources/SurveillanceCore/Resources/contracts/event-catalog-001.json index 235bdf05..ab1a11a2 100644 --- a/Sources/SurveillanceCore/Resources/contracts/event-catalog-001.json +++ b/Sources/SurveillanceCore/Resources/contracts/event-catalog-001.json @@ -5,12 +5,12 @@ {"ordinal":20,"type":"upgradeSelected","payload":{"required":["upgradeId","selectionIndex"],"fields":{"upgradeId":"upgradeId","selectionIndex":"int"}}}, {"ordinal":30,"type":"dodgeStarted","payload":{"required":["cooldownReadyTick"],"fields":{"cooldownReadyTick":"uint64"}}}, {"ordinal":40,"type":"weaponFired","payload":{"required":["weaponId","targetEntityId"],"fields":{"weaponId":"weaponId","targetEntityId":"entityId"}}}, - {"ordinal":50,"type":"projectileHit","payload":{"required":["projectileId","targetEntityId","appliedDamage"],"fields":{"projectileId":"entityId","targetEntityId":"entityId","appliedDamage":"int"}}}, + {"ordinal":50,"type":"projectileHit","payload":{"required":["projectileId","targetEntityId","appliedDamage","impactXQ8","impactYQ8","projectileKind"],"fields":{"projectileId":"entityId","targetEntityId":"entityId","appliedDamage":"int","impactXQ8":"int","impactYQ8":"int","projectileKind":"string"}}}, {"ordinal":60,"type":"cameraIntegrityChanged","payload":{"required":["cameraId","before","after"],"fields":{"cameraId":"entityId","before":"int","after":"int"}}}, {"ordinal":70,"type":"cameraDestroyed","payload":{"required":["cameraId","socketId","projectileId","wasDetecting"],"fields":{"cameraId":"entityId","socketId":"socketId","projectileId":"entityId","wasDetecting":"bool"}}}, {"ordinal":80,"type":"entityDamaged","payload":{"required":["entityId","amount","remainingIntegrity"],"fields":{"entityId":"entityId","amount":"int","remainingIntegrity":"int"}}}, {"ordinal":90,"type":"entityDied","payload":{"required":["entityId","archetypeId"],"fields":{"entityId":"entityId","archetypeId":"archetypeId"}}}, - {"ordinal":100,"type":"playerDamaged","payload":{"required":["amount","remainingIntegrity","sourceEntityId"],"fields":{"amount":"int","remainingIntegrity":"int","sourceEntityId":"entityIdOrNull"}}}, + {"ordinal":100,"type":"playerDamaged","payload":{"required":["amount","remainingIntegrity","sourceEntityId","damageKind","ownerEntityId","impactXQ8","impactYQ8","sourceXQ8","sourceYQ8","contributors"],"fields":{"amount":"int","remainingIntegrity":"int","sourceEntityId":"entityIdOrNull","damageKind":"string","ownerEntityId":"entityIdOrNull","impactXQ8":"int","impactYQ8":"int","sourceXQ8":"intOrNull","sourceYQ8":"intOrNull","contributors":"entityIdArray"}}}, {"ordinal":110,"type":"exposureChanged","payload":{"required":["before","after","reason"],"fields":{"before":"int","after":"int","reason":"exposureReason"}}}, {"ordinal":120,"type":"detectionStateChanged","payload":{"required":["before","after"],"fields":{"before":"detectionState","after":"detectionState"}}}, {"ordinal":130,"type":"lockdownEntered","payload":{"required":["reason"],"fields":{"reason":"lockdownReason"}}}, diff --git a/Sources/SurveillanceCore/Resources/contracts/runtime-kernel-001.json b/Sources/SurveillanceCore/Resources/contracts/runtime-kernel-001.json index f5d999e0..cd9f50f2 100644 --- a/Sources/SurveillanceCore/Resources/contracts/runtime-kernel-001.json +++ b/Sources/SurveillanceCore/Resources/contracts/runtime-kernel-001.json @@ -7,7 +7,7 @@ "required": ["schemaVersion", "rulesetVersion", "contentVersion", "arenaVersion", "seed", "commands"], "properties": { "schemaVersion": {"const": "runtime-kernel-001"}, - "rulesetVersion": {"const": "ss-rules-007"}, + "rulesetVersion": {"const": "ss-rules-008"}, "contentVersion": {"const": "civic-seam-content-006"}, "arenaVersion": {"const": "civic-seam-arena-004"}, "seed": {"type": "integer", "minimum": 0}, diff --git a/Sources/SurveillanceCore/Resources/contracts/versions.json b/Sources/SurveillanceCore/Resources/contracts/versions.json index c38d09ae..49009092 100644 --- a/Sources/SurveillanceCore/Resources/contracts/versions.json +++ b/Sources/SurveillanceCore/Resources/contracts/versions.json @@ -1,6 +1,6 @@ { "schemaVersion": "runtime-kernel-001", - "rulesetVersion": "ss-rules-007", + "rulesetVersion": "ss-rules-008", "contentVersion": "civic-seam-content-006", "arenaVersion": "civic-seam-arena-004", "componentContracts": { diff --git a/Sources/SurveillanceCore/Resources/fixtures/complete-run-vectors-001.json b/Sources/SurveillanceCore/Resources/fixtures/complete-run-vectors-001.json index 560b3f36..17bf0612 100644 --- a/Sources/SurveillanceCore/Resources/fixtures/complete-run-vectors-001.json +++ b/Sources/SurveillanceCore/Resources/fixtures/complete-run-vectors-001.json @@ -1,6 +1,6 @@ { "fixtureVersion": "complete-run-vectors-001", - "rulesetVersion": "ss-rules-007", + "rulesetVersion": "ss-rules-008", "vectors": [ { "id": "CR-001", @@ -11,7 +11,7 @@ "camerasDestroyed": 0, "networkBlackout": false, "elapsedTicks": 302, - "terminalDigest": "cdf91bab889f07b651dd1b3cd07368ec5712b0d5940d42502bca69178a1cdf73" + "terminalDigest": "3606fe66eacc3bc93b6219ec67bf8457fd6f03e301c897521327678bf6c555e6" } }, { @@ -23,7 +23,7 @@ "camerasDestroyed": 0, "networkBlackout": false, "elapsedTicks": 302, - "terminalDigest": "9c0bc683b26d32f1d381dade2d7193996e8aa313775c334ef720061a917f332e" + "terminalDigest": "41b081038151a2e8f286c2edb864f42f75ccac40a9ae86bca94e137b889de389" } }, { @@ -35,7 +35,7 @@ "camerasDestroyed": 0, "networkBlackout": false, "elapsedTicks": 302, - "terminalDigest": "3b28326edd7e16d9cd13774d4d2990133151b81c3b4a2450fea5884243be0ea8" + "terminalDigest": "e960e78d2d1d2d35425fb30b169734160fea514735644ff7012a70ebc6e6959c" } } ] diff --git a/Sources/SurveillanceCore/Resources/fixtures/kernel-vectors-001.json b/Sources/SurveillanceCore/Resources/fixtures/kernel-vectors-001.json index c6a342c3..9c98c910 100644 --- a/Sources/SurveillanceCore/Resources/fixtures/kernel-vectors-001.json +++ b/Sources/SurveillanceCore/Resources/fixtures/kernel-vectors-001.json @@ -1,6 +1,6 @@ { "fixtureVersion":"kernel-vectors-001", - "rulesetVersion":"ss-rules-007", + "rulesetVersion":"ss-rules-008", "vectors":[ {"id":"EX-001","initial":{"exposure":0,"state":"hidden","noContactTicks":0},"ticks":100,"contactsPerTick":1,"expected":{"exposure":200,"state":"observed"}}, {"id":"EX-005","initial":{"exposure":300,"state":"observed","noContactTicks":0},"ticks":61,"contactsPerTick":0,"expected":{"exposure":298,"state":"observed","noContactTicks":61}}, diff --git a/Sources/SurveillanceCore/Resources/fixtures/replay-matrix-001.json b/Sources/SurveillanceCore/Resources/fixtures/replay-matrix-001.json index cac7a405..91848272 100644 --- a/Sources/SurveillanceCore/Resources/fixtures/replay-matrix-001.json +++ b/Sources/SurveillanceCore/Resources/fixtures/replay-matrix-001.json @@ -1,11 +1,11 @@ { "fixtureVersion": "replay-matrix-001", - "rulesetVersion": "ss-rules-007", + "rulesetVersion": "ss-rules-008", "entries": [ { "id": "RM-001", "fixture": "replay-smoke-001", - "expectedFinalDigest": "bc9d5d632c4cc73c297b87b51a9e4e390511908287bc17a1ae0d8720d4a8e694", + "expectedFinalDigest": "92a128f7c29afb15504196c1d3ad958b46be9b7657e2513c7fc3e302f78434f5", "tripleRunRequired": true } ] diff --git a/Sources/SurveillanceCore/Resources/fixtures/replay-smoke-001.json b/Sources/SurveillanceCore/Resources/fixtures/replay-smoke-001.json index b6ddf206..520f16c4 100644 --- a/Sources/SurveillanceCore/Resources/fixtures/replay-smoke-001.json +++ b/Sources/SurveillanceCore/Resources/fixtures/replay-smoke-001.json @@ -1,6 +1,6 @@ { "schemaVersion":"runtime-kernel-001", - "rulesetVersion":"ss-rules-007", + "rulesetVersion":"ss-rules-008", "contentVersion":"civic-seam-content-006", "arenaVersion":"civic-seam-arena-004", "seed":1, diff --git a/Sources/SurveillanceCore/World/Simulation.swift b/Sources/SurveillanceCore/World/Simulation.swift index ef8273dc..6f01447a 100644 --- a/Sources/SurveillanceCore/World/Simulation.swift +++ b/Sources/SurveillanceCore/World/Simulation.swift @@ -1,6 +1,7 @@ public struct Simulation: Equatable, Sendable { public private(set) var state: WorldState private var events = EventBuffer() + public private(set) var combatFeedback = CombatFeedbackFrame() /// Trigger centres, patrol routes, and the unaware rules, derived once /// from the arena and content this run was built with (D-090, D-091). private let unawareMovement: UnawareMovement @@ -102,6 +103,7 @@ public struct Simulation: Equatable, Sendable { @discardableResult public mutating func step(command incoming: PlayerCommand?) -> TickResult { + combatFeedback = CombatFeedbackFrame() if isTerminal { return TickResult(tick: state.tick, events: [], digest: state.digest(), outcome: state.outcome) } @@ -176,6 +178,7 @@ public struct Simulation: Equatable, Sendable { applyPlayerDamage(source, amount: amount, tick: tick) } var observationPulses: [Int] = [] + var unmodifiedObservationPulses: [Int] = [] if var runtime = state.bossRuntime, let index = state.enemies.firstIndex(where: { $0.archetype == .algorithmicModerate && $0.alive }) { @@ -202,6 +205,8 @@ public struct Simulation: Equatable, Sendable { state.phasesReached.append(runtime.phase.rawValue) } if let pulse { + unmodifiedObservationPulses.append(BossSystem.observationAmount( + base: pulse, numerator: runtime.observationNumerator, signalJammer: false)) observationPulses.append( BossSystem.observationAmount( base: pulse, @@ -254,6 +259,7 @@ public struct Simulation: Equatable, Sendable { // T410 / camera-destruction-001 §9: surviving contacts, then ordered Tamper, even on the death tick. let tamper = state.destructions.filter { $0.tick == tick }.sorted { $0.cameraId < $1.cameraId }.map { _ in ExposureState.tamperSpike } + var withoutJammer = state.exposure let resolution = state.exposure.resolveTick( survivingContactCount: survivingContacts.count, tamperAmounts: tamper, @@ -266,6 +272,17 @@ public struct Simulation: Equatable, Sendable { fogPulseAmounts: state.outcome == .failure ? [] : fogPulses, observationPulseAmounts: state.outcome == .failure ? [] : observationPulses ) + if state.upgrade.signalJammer { + // Compare the exact same resolved inputs, including clamps, Tamper, + // Lockdown and lethal-tick suppression. This copy cannot affect rules. + let unmodified = withoutJammer.resolveTick( + survivingContactCount: survivingContacts.count, tamperAmounts: tamper, + signalJammer: false, forceLockdown: forceLockdown, + destroyedCameras: state.destructions.count, + fogPulseAmounts: state.outcome == .failure ? [] : fogPulses, + observationPulseAmounts: state.outcome == .failure ? [] : unmodifiedObservationPulses) + combatFeedback.jammerReducedExposure = resolution.after < unmodified.after + } emitExposure(resolution, tick: tick) resolveQuietApproach() @@ -405,6 +422,7 @@ public struct Simulation: Equatable, Sendable { "targetEntityId": .string(target.0.decimalString) ] ) + combatFeedback.shot = .init(projectile: id, origin: state.player.position, velocity: velocity) state.lastPulseTick = tick } @@ -442,8 +460,8 @@ public struct Simulation: Equatable, Sendable { state.cameras.first { $0.entityId == id }?.mountSolidId } for solid in state.liveSolids where solid.id != ownMount { - if Collision.segmentIntersects(projectile.previous, projectile.position, box: solid.box) { - wallT = 0 + if let entry = Collision.segmentEntryTime(projectile.previous, projectile.position, box: solid.box) { + wallT = min(wallT ?? entry, entry) } } if let wallT { @@ -499,7 +517,9 @@ public struct Simulation: Equatable, Sendable { continue } if hit.target == state.player.id { - applyPlayerDamage(hit.projectile, amount: state.projectiles[hit.index].damage, tick: tick) + let projectile = state.projectiles[hit.index] + applyPlayerDamage(hit.projectile, amount: projectile.damage, tick: tick, + kind: "projectile", owner: projectile.ownerId, sourcePosition: projectile.previous) retireProjectile(at: hit.index) consumed.insert(hit.projectile) continue @@ -526,7 +546,10 @@ public struct Simulation: Equatable, Sendable { payload: [ "projectileId": .string(hit.projectile.decimalString), "targetEntityId": .string(hit.target.decimalString), - "appliedDamage": .integer(Int64(amount)) + "appliedDamage": .integer(Int64(amount)), + "impactXQ8": .integer(state.enemies[eIndex].position.x.raw), + "impactYQ8": .integer(state.enemies[eIndex].position.y.raw), + "projectileKind": .string(state.projectiles[hit.index].kind == .ricochet ? "ricochet" : "civicPulse") ] ) events.emit( @@ -582,7 +605,10 @@ public struct Simulation: Equatable, Sendable { payload: [ "projectileId": .string(hit.projectile.decimalString), "targetEntityId": .string(hit.target.decimalString), - "appliedDamage": .integer(1) + "appliedDamage": .integer(1), + "impactXQ8": .integer(state.cameras[cIndex].targetAnchor.x.raw), + "impactYQ8": .integer(state.cameras[cIndex].targetAnchor.y.raw), + "projectileKind": .string(state.projectiles[hit.index].kind == .ricochet ? "ricochet" : "civicPulse") ] ) // camera-destruction.md §7 / upgrades.md: one projectile damages a Camera at most once. @@ -775,7 +801,10 @@ public struct Simulation: Equatable, Sendable { /// by `player.damageTakenPercent` through an exact remainder in /// hundredths, so over a run exactly that percentage lands with no /// rounding drift. A loss that removes no whole point publishes nothing. - private mutating func applyPlayerDamage(_ source: EntityID, amount: Int, tick: UInt64) { + private mutating func applyPlayerDamage( + _ source: EntityID, amount: Int, tick: UInt64, kind: String = "attack", + owner: EntityID? = nil, sourcePosition: VecQ8? = nil, contributors: [EntityID]? = nil + ) { let removed = Self.scaleDamageTaken( amount, percent: state.content.player.damageTakenPercent, @@ -783,6 +812,8 @@ public struct Simulation: Equatable, Sendable { ) guard removed > 0 else { return } let applied = min(removed, state.player.integrity) + guard applied > 0 else { return } + let origin = sourcePosition ?? state.enemies.first(where: { $0.id == source })?.position state.player.integrity -= applied state.player.damageTaken += applied events.emit( @@ -794,7 +825,14 @@ public struct Simulation: Equatable, Sendable { payload: [ "amount": .integer(Int64(applied)), "remainingIntegrity": .integer(Int64(state.player.integrity)), - "sourceEntityId": .string(source.decimalString) + "sourceEntityId": .string(source.decimalString), + "damageKind": .string(kind), + "ownerEntityId": .string((owner ?? source).decimalString), + "impactXQ8": .integer(state.player.position.x.raw), + "impactYQ8": .integer(state.player.position.y.raw), + "sourceXQ8": origin.map { .integer($0.x.raw) } ?? .null, + "sourceYQ8": origin.map { .integer($0.y.raw) } ?? .null, + "contributors": .array((contributors ?? [source]).map { .string($0.decimalString) }) ] ) if state.player.integrity <= 0 { @@ -830,7 +868,8 @@ public struct Simulation: Equatable, Sendable { let points = state.player.contactAccumulator / 60 state.player.contactAccumulator %= 60 if points > 0 { - applyPlayerDamage(applied.first?.id ?? state.player.id, amount: points, tick: tick) + applyPlayerDamage(applied.first?.id ?? state.player.id, amount: points, tick: tick, + kind: "contact", contributors: applied.map(\.id)) } if state.player.integrity <= 0 && state.outcome != .failure && state.outcome != .invalid { fail(.playerDeath, tick: tick) @@ -845,7 +884,8 @@ public struct Simulation: Equatable, Sendable { if mine.armed { let r = Int64(mine.radius) * Q8.scale if state.player.position.distanceSquared(to: mine.position) <= r * r { - applyPlayerDamage(mine.ownerId, amount: mine.damage, tick: tick) + applyPlayerDamage(mine.id, amount: mine.damage, tick: tick, + kind: "mine", owner: mine.ownerId, sourcePosition: mine.position) continue } } @@ -1518,6 +1558,23 @@ public struct Simulation: Equatable, Sendable { ) } + /// D-103: install only preconditions; tests execute the normal tick/damage phase. + mutating func testing_setCollisionSolids(_ boxes: [AABB], preserveCameras: Bool = false) { + state.arena.permanentSolids = boxes.enumerated().map { index, box in + NamedRect(id: "test-wall-\(index)", name: nil, owner: nil, encounterId: nil, + center: box.center, halfSize: box.halfSize, initiallyClosed: nil) + } + state.gates = [] + if !preserveCameras { state.cameras = [] } + } + + mutating func testing_injectMovingPulse(from: VecQ8, velocity: VecQ8) { + testing_injectPulseHitting(position: from) + guard let index = state.projectiles.indices.last else { return } + state.projectiles[index].velocity = velocity + state.civicPool.replace(id: state.projectiles[index].id, with: state.projectiles[index]) + } + mutating func testing_injectPulseHitting(position: VecQ8) { let id = state.allocator.next() let projectile = ProjectileBody( diff --git a/Tests/SurveillanceCoreTests/AwarenessTests.swift b/Tests/SurveillanceCoreTests/AwarenessTests.swift index be8e8692..69f17b61 100644 --- a/Tests/SurveillanceCoreTests/AwarenessTests.swift +++ b/Tests/SurveillanceCoreTests/AwarenessTests.swift @@ -489,13 +489,65 @@ struct AwarenessTests { sim.testing_spawnStandard(.fogAnalyticsCloud, at: VecI(x: 500, y: 192), awareness: .unaware) sim.testing_fillCivicPool(count: Targeting.activeCeiling) _ = sim.step(command: .neutral(tick: 1)) - #expect(hint.project(PresentationSnapshot(sim.state)) == "UNSEEN ENEMIES HOLD • STRIKE FIRST FOR DOUBLE DAMAGE") + #expect(hint.project(PresentationSnapshot(sim.state)) == "UNSEEN ENEMIES HOLD • STRIKE FIRST FOR TRIPLE DAMAGE") for tick in 2...300 { _ = sim.step(command: .neutral(tick: UInt64(tick))) } #expect(hint.project(PresentationSnapshot(sim.state)) != nil, "tick 300 is the 300th tick shown") _ = sim.step(command: .neutral(tick: 301)) #expect(hint.project(PresentationSnapshot(sim.state)) == nil) } + @Test func directHintVisibilityMatchesSnapshotAtViewportAndStateBoundaries() throws { + var sim = try Simulation.withoutPatrol(seed: 1) + sim.testing_spawnStandard(.fogAnalyticsCloud, at: VecI(x: 500, y: 192), awareness: .unaware) + let original = sim.state + var state = original + let prototype = try #require(state.enemies.first) + for player in [VecI(x: 0, y: 0), VecI(x: 1100, y: 700), VecI(x: 2304, y: 1536)] { + for heading in [VecQ8.zero, VecQ8(unitsX: -1, unitsY: 0), VecQ8(unitsX: 1, unitsY: 0)] { + state.player.position = player.asQ8 + state.player.facing = heading + let center = PresentationSnapshot(state).camera.center + for offset in [VecI(x: 352, y: 163), VecI(x: -352, y: -163), + VecI(x: 353, y: 0), VecI(x: -353, y: 0), + VecI(x: 0, y: 164), VecI(x: 0, y: -164), VecI(x: 0, y: 0)] { + for fraction: Int64 in [-128, 0, 128] { + var enemy = prototype + enemy.position = VecQ8(x: Q8(raw: Int64(center.x + offset.x) * 256 + fraction), + y: Q8(raw: Int64(center.y + offset.y) * 256 + fraction)) + for condition in 0..<3 { + enemy.integrity = condition == 2 ? 0 : prototype.integrity + enemy.awareness = condition == 1 ? .aware : .unaware + state.enemies = [enemy] + let before = state + #expect(AwarenessHintProjector.unawareEnemyOnScreen(state) + == AwarenessHintProjector.unawareEnemyOnScreen(PresentationSnapshot(state))) + #expect(state == before) + } + } + } + } + } + #expect(sim.state == original) + } + + @Test func directHintRetainsLatchExpiryRewindAndReset() throws { + var sim = try Simulation.withoutPatrol(seed: 1) + sim.testing_spawnStandard(.fogAnalyticsCloud, at: VecI(x: 500, y: 192), awareness: .unaware) + var state = sim.state + var direct = AwarenessHintProjector(), reference = AwarenessHintProjector() + for tick: UInt64 in [8, 9, 11, 12, 310, 311, 312, 10, 11] { + state.clock = SimulationClock(tick: tick) + state.enemies[0].awareness = tick < 11 ? .aware : .unaware + #expect(direct.project(state) == reference.project(PresentationSnapshot(state))) + #expect(direct == reference) + } + direct.reset(); reference.reset() + state.clock = SimulationClock(tick: 400) + #expect(direct.project(state) == AwarenessHintProjector.copy) + #expect(direct.project(state) == reference.project(PresentationSnapshot(state))) + #expect(direct == reference) + } + // MARK: - Helpers /// Steps once with the Player inside the encounter's trigger. diff --git a/Tests/SurveillanceCoreTests/CameraFollowTests.swift b/Tests/SurveillanceCoreTests/CameraFollowTests.swift new file mode 100644 index 00000000..e94a4882 --- /dev/null +++ b/Tests/SurveillanceCoreTests/CameraFollowTests.swift @@ -0,0 +1,38 @@ +import Testing +@testable import SurveillanceCore + +struct CameraFollowTests { + let bounds = AABB(center: VecI(x: 1200, y: 800), halfSize: VecI(x: 1200, y: 800)) + @Test func turnDoesNotSnapByTheLookAheadDistance() throws { + var camera = CameraFollow() + let player = VecI(x: 1000, y: 800) + for _ in 0..<120 { camera.update(player: player, heading: VecI(x: 1, y: 0).asQ8, bounds: bounds, deltaTime: 1.0 / 60) } + let before = try #require(camera.x) + camera.update(player: player, heading: VecI(x: -1, y: 0).asQ8, bounds: bounds, deltaTime: 1.0 / 60) + let after = try #require(camera.x) + #expect(before - after > 0 && before - after < 15) + } + @Test func motionInsideDeadZoneDoesNotMoveTheAnchor() throws { + var camera = CameraFollow() + camera.update(player: VecI(x: 1000, y: 800), heading: .zero, bounds: bounds, deltaTime: 1.0 / 60) + camera.update(player: VecI(x: 1037, y: 824), heading: .zero, bounds: bounds, deltaTime: 1.0 / 60) + #expect(camera.x == 1000 && camera.y == 800) + camera.update(player: VecI(x: 1040, y: 826), heading: .zero, bounds: bounds, deltaTime: 1.0 / 60) + #expect(try #require(camera.x) > 1000) + #expect(try #require(camera.y) > 800) + } + @Test func verticalHeadingHasNoSpuriousHorizontalLookAhead() { + var camera = CameraFollow() + for _ in 0..<120 { camera.update(player: VecI(x: 1000, y: 800), heading: VecI(x: 0, y: 1).asQ8, bounds: bounds, deltaTime: 1.0 / 60) } + #expect(camera.x == 1000) + #expect((camera.y ?? 0) > 840) + } + @Test func clampsAndResetsAcrossRuns() { + var camera = CameraFollow() + camera.update(player: VecI(x: 0, y: 0), heading: .zero, bounds: bounds, deltaTime: 1) + #expect(camera.x == 352 && camera.y == 163) + camera.reset() + camera.update(player: VecI(x: 1200, y: 900), heading: .zero, bounds: bounds, deltaTime: 0) + #expect(camera.x == 1200 && camera.y == 900) + } +} diff --git a/Tests/SurveillanceCoreTests/ClipMetadataTests.swift b/Tests/SurveillanceCoreTests/ClipMetadataTests.swift index 63359690..5c239b4c 100644 --- a/Tests/SurveillanceCoreTests/ClipMetadataTests.swift +++ b/Tests/SurveillanceCoreTests/ClipMetadataTests.swift @@ -16,7 +16,7 @@ struct ClipMetadataTests { let cameraDirections = catalog.clips.filter { $0.actorRole == "camera" }.map(\.directions) let dodgeFramesLookLikeEvent = dodge.frameIds.contains("dodgeStarted") let camerasHaveNoDirections = cameraDirections.allSatisfy { $0.isEmpty } - let destroyDurationMs = destroy.frameIds.count * 1000 / destroy.framesPerSecond + let destroyDurationMs = destroy.frameIds.count * 1000 / (try #require(destroy.framesPerSecond)) #expect(catalog.schemaVersion == ContractVersions.clipMetadata) #expect(catalog.animationVersion == ContractVersions.animation) #expect(ids == ClipCatalog.requiredClipIds) @@ -104,6 +104,67 @@ struct ClipMetadataTests { } } + @Test func bothLoadersRejectUnsupportedTimingAndMalformedScalars() throws { + let catalog = try AssetCatalog.bundled() + let mutations: [(inout [[String: Any]]) -> Void] = [ + { $0[0]["timing"] = ["unitsPerSecond": 24, "frameUnits": [1, 2]] }, + { $0[0]["framesPerSecond"] = 12.5 }, + { $0[0]["framesPerSecond"] = true }, + { $0[0]["framesPerSecond"] = 1e30 }, + { $0[0]["loop"] = 1 }, + { $0[0]["anchor"] = ["x": 32.5, "y": 56] }, + { $0[0]["anchor"] = ["x": true, "y": false] }, + { $0[0]["anchor"] = ["x": 32, "y": 56, "extra": 1] } + ] + for mutate in mutations { + let data = try mutatedBundled(mutate) + #expect(throws: ClipMetadataError.self) { try ClipCatalogLoader.decode(data) } + #expect(throws: ClipMetadataError.self) { + try ClipFrameLibrary.make(clipJSON: data, catalog: catalog) + } + } + } + + @Test func deliveryPreservesEveryValidatedClip() throws { + let catalog = try ClipCatalog.bundled() + let library = try ClipFrameLibrary.bundled() + #expect(library.clips.count == catalog.clips.count) + for source in catalog.clips { + let delivered = try #require(library.clip(source.clipId)) + #expect(delivered.frameIds == source.frameIds) + #expect(delivered.directions == source.directions) + #expect(delivered.framesPerSecond == source.framesPerSecond) + #expect(delivered.loop == source.loop) + #expect(delivered.anchor == VecI(x: source.anchor.x, y: source.anchor.y)) + #expect(delivered.actorRole == source.actorRole) + for direction in source.directions { + #expect(library.frameIds(clipId: source.clipId, direction: direction) == source.frameIds(forDirection: direction)) + } + } + } + + @Test func deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() throws { + let data = try mutatedBundled { clips in + let ids = clips[0]["frameIds"] as! [String] + let groups = ClipCatalog.fourDirections.map { direction in + ids.filter { $0.contains("_\(direction)_") } + } + clips[0]["frameIds"] = (0.. Void) throws -> Data { var root = try JSONSerialization.jsonObject(with: SpecBundle.contract("clip-metadata-001")) as! [String: Any] var clips = root["clips"] as! [[String: Any]] diff --git a/Tests/SurveillanceCoreTests/ClipMetadataV2Tests.swift b/Tests/SurveillanceCoreTests/ClipMetadataV2Tests.swift new file mode 100644 index 00000000..f01fc687 --- /dev/null +++ b/Tests/SurveillanceCoreTests/ClipMetadataV2Tests.swift @@ -0,0 +1,86 @@ +import Foundation +import Testing +@testable import SurveillanceCore + +struct ClipMetadataV2Tests { + private func converted(_ mutate: (inout [[String: Any]]) -> Void = { _ in }) throws -> Data { + var root = try JSONSerialization.jsonObject(with: SpecBundle.contract("clip-metadata-001")) as! [String: Any] + root["schemaVersion"] = "clip-metadata-002" + var clips = root["clips"] as! [[String: Any]] + for i in clips.indices { + let fps = clips[i].removeValue(forKey: "framesPerSecond") as! Int + let count = (clips[i]["frameIds"] as! [String]).count + clips[i]["timing"] = ["unitsPerSecond": fps, "frameUnits": Array(repeating: 1, count: count)] + } + mutate(&clips); root["clips"] = clips + return try JSONSerialization.data(withJSONObject: root) + } + + @Test func everyV1FacingHasIdenticalV2TimingAndFrames() throws { + let before = try ClipCatalog.bundled() + let data = try converted() + let after = try ClipCatalogLoader.decode(data) + let library = try ClipFrameLibrary.make(clipJSON: data, catalog: AssetCatalog.bundled()) + #expect(after.schemaVersion == "clip-metadata-002") + #expect(after.clips.count == before.clips.count) + for (old, new) in zip(before.clips, after.clips) { + var restored = new + restored.framesPerSecond = old.framesPerSecond + restored.authoredTiming = nil + #expect(restored == old) + #expect(new.framesPerSecond == nil) + #expect(new.frameIds == old.frameIds) + #expect(new.anchor == old.anchor) + #expect(new.loop == old.loop) + #expect(new.authoritativeEventMarker == old.authoritativeEventMarker) + #expect(new.cancelWindows == old.cancelWindows) + for facing in old.directions.isEmpty ? ["none"] : old.directions { + let expected = try old.timing(forDirection: facing) + #expect(try new.timing(forDirection: facing) == expected) + #expect(library.timing(clipId: new.clipId, direction: facing) == expected) + #expect(library.frameIds(clipId: new.clipId, direction: facing) == old.frameIds(forDirection: facing)) + } + } + } + + @Test func interleavedFacingsKeepTheirOwnVariableHolds() throws { + let data = try converted { clips in + let original = clips[0]["frameIds"] as! [String] + let groups = ClipCatalog.fourDirections.map { dir in original.filter { $0.contains("_\(dir)_") } } + clips[0]["frameIds"] = (0.. Void] = [ + { $0[0]["framesPerSecond"] = 12 }, + { $0[0].removeValue(forKey: "timing") }, + { $0[0]["timing"] = ["unitsPerSecond": true, "frameUnits": [1]] }, + { $0[0]["timing"] = ["unitsPerSecond": 0, "frameUnits": Array(repeating: 1, count: 16)] }, + { $0[0]["timing"] = ["unitsPerSecond": 12, "frameUnits": Array(repeating: 1.5, count: 16)] }, + { $0[0]["timing"] = ["unitsPerSecond": 12, "frameUnits": Array(repeating: false, count: 16)] }, + { $0[0]["timing"] = ["unitsPerSecond": 12, "frameUnits": Array(repeating: -1, count: 16)] }, + { $0[0]["timing"] = ["unitsPerSecond": 12, "frameUnits": Array(repeating: Int.max, count: 16)] }, + { $0[0]["timing"] = ["unitsPerSecond": 12, "frameUnits": Array(repeating: Int.max / 16, count: 16)] }, + { $0[0]["timing"] = ["unitsPerSecond": 12, "frameUnits": [1]] }, + { $0[0]["timing"] = ["unitsPerSecond": 12, "frameUnits": Array(repeating: 1, count: 16), "extra": 1] } + ] + for mutate in mutations { + let data = try converted(mutate) + #expect(throws: (any Error).self) { try ClipCatalogLoader.decode(data) } + #expect(throws: (any Error).self) { try ClipFrameLibrary.make(clipJSON: data, catalog: catalog) } + } + } +} diff --git a/Tests/SurveillanceCoreTests/ClipTimingTests.swift b/Tests/SurveillanceCoreTests/ClipTimingTests.swift new file mode 100644 index 00000000..53364db5 --- /dev/null +++ b/Tests/SurveillanceCoreTests/ClipTimingTests.swift @@ -0,0 +1,65 @@ +import Testing +@testable import SurveillanceCore + +struct ClipTimingTests { + @Test func elapsedTicksSelectExactFrameBoundariesWithoutOverflow() throws { + let timing = try ClipTiming(unitsPerSecond: 24, frameUnits: [1, 2, 1, 2]) + for (tick, expected) in [(UInt64(0),0),(2,0),(3,1),(7,1),(8,2),(9,2),(10,3),(15,3),(.max,3)] { + #expect(timing.frameIndex(atTickOffset: tick) == expected) + } + let huge = try ClipTiming(unitsPerSecond: Int.max, frameUnits: [1, Int.max - 1]) + #expect(huge.frameIndex(atTickOffset: 0) == 0) + #expect(huge.frameIndex(atTickOffset: .max) == 1) + } + + @Test func exactMigrationVectors() throws { + let ordinary = try ClipTiming(unitsPerSecond: 32, frameUnits: Array(repeating: 1, count: 16)) + #expect(try ordinary.durationTicks(at: 60) == 30) + let elite = try ClipTiming(unitsPerSecond: 112, frameUnits: Array(repeating: 3, count: 16)) + #expect(elite.totalUnits == 48) + #expect(try elite.durationTicks(at: 60) == 26) + #expect(try elite.durationTicks(at: 112) == 48) + let variable = try ClipTiming(unitsPerSecond: 24, frameUnits: [1, 2, 1, 2]) + #expect(try variable.durationTicks(at: 60) == 15) + let expectedSeconds: [Double] = [1.0/24.0, 2.0/24.0, 1.0/24.0, 2.0/24.0] + #expect(variable.frameSeconds == expectedSeconds) + } + + @Test func selectionKeepsDirectionHoldsAndOrder() throws { + let timing = try ClipTiming(unitsPerSecond: 12, frameUnits: [1, 2, 3, 4]) + #expect(try timing.selecting([0, 2]).frameUnits == [1, 3]) + #expect(try timing.selecting([1, 3]).durationTicks(at: 60) == 30) + #expect(throws: ClipTiming.Failure.index) { try timing.selecting([2, 1]) } + #expect(throws: ClipTiming.Failure.index) { try timing.selecting([1, 1]) } + #expect(throws: ClipTiming.Failure.index) { try timing.selecting([4]) } + } + + @Test func malformedAndOverflowFailClosed() throws { + #expect(throws: ClipTiming.Failure.invalid) { try ClipTiming(unitsPerSecond: 0, frameUnits: [1]) } + #expect(throws: ClipTiming.Failure.invalid) { try ClipTiming(unitsPerSecond: 12, frameUnits: []) } + #expect(throws: ClipTiming.Failure.invalid) { try ClipTiming(unitsPerSecond: 12, frameUnits: [0]) } + #expect(throws: ClipTiming.Failure.invalid) { try ClipTiming(unitsPerSecond: 12, frameUnits: [-1]) } + #expect(throws: ClipTiming.Failure.overflow) { try ClipTiming(unitsPerSecond: 1, frameUnits: [Int.max, 1]) } + let huge = try ClipTiming(unitsPerSecond: Int.max, frameUnits: [Int.max]) + #expect(try huge.durationTicks(at: 1) == 1) + #expect(throws: ClipTiming.Failure.overflow) { try huge.durationTicks(at: 60) } + } + + @Test func allDeliveredV1DirectionsKeepTheirCadence() throws { + let catalog = try ClipCatalog.bundled() + let library = try ClipFrameLibrary.bundled() + for clip in catalog.clips { + let fps = try #require(clip.framesPerSecond) + for direction in clip.directions.isEmpty ? ["none"] : clip.directions { + let timing = try clip.timing(forDirection: direction) + let count = clip.frameIds(forDirection: direction).count + // Independent legacy formula is safe for the bounded bundled records. + let expectedTicks = UInt64((count * 60 + fps - 1) / fps) + #expect(try timing.durationTicks(at: 60) == expectedTicks) + #expect(ReactionClipTracker.durationTicks(clip) == expectedTicks) + #expect(library.timing(clipId: clip.clipId, direction: clip.directions.isEmpty ? nil : direction) == timing) + #expect(timing.frameSeconds == Array(repeating: 1.0 / Double(fps), count: count)) + } + } + } +} diff --git a/Tests/SurveillanceCoreTests/CombatCausalityTests.swift b/Tests/SurveillanceCoreTests/CombatCausalityTests.swift new file mode 100644 index 00000000..1eafaa20 --- /dev/null +++ b/Tests/SurveillanceCoreTests/CombatCausalityTests.swift @@ -0,0 +1,90 @@ +import Testing +@testable import SurveillanceCore + +@Suite(.serialized) +struct CombatCausalityTests { + @Test(arguments: [false, true]) + func actualSweepOrdersTargetAndWall(wallFirst: Bool) throws { + var sim = try Simulation.make(seed: 1) + let p = sim.state.player.position + let x = p.x.unitsTruncated + 100 + let y = p.y.unitsTruncated + let targetX = x + 40 + sim.testing_spawnInformant(at: VecI(x: targetX, y: y), integrity: 100, speed: 0) + let enemy = try #require(sim.state.enemies.last) + let wallX = wallFirst ? x + 5 : x + 70 + sim.testing_setCollisionSolids([AABB(center: VecI(x: wallX + 1, y: y), halfSize: VecI(x: 1, y: 30))]) + sim.testing_injectMovingPulse(from: VecI(x: x, y: y).asQ8, velocity: VecI(x: 90, y: 0).asQ8) + let result = sim.step(command: .neutral(tick: 1)) + let hits = result.events.filter { $0.type == .projectileHit && $0.secondaryEntityId == enemy.id } + #expect(hits.count == (wallFirst ? 0 : 1)) + } + + @Test func realWallEntityTieIsBlocked() throws { + var sim = try Simulation.make(seed: 1) + let x = sim.state.player.position.x.unitsTruncated + 100 + let y = sim.state.player.position.y.unitsTruncated + sim.testing_spawnInformant(at: VecI(x: x + 40, y: y), integrity: 100, speed: 0) + let enemy = try #require(sim.state.enemies.last) + let entry = x + 40 - enemy.radius - Targeting.projectileRadius + sim.testing_setCollisionSolids([AABB(center: VecI(x: entry + 1, y: y), halfSize: VecI(x: 1, y: 30))]) + sim.testing_injectMovingPulse(from: VecI(x: x, y: y).asQ8, velocity: VecI(x: 90, y: 0).asQ8) + let result = sim.step(command: .neutral(tick: 1)) + #expect(!result.events.contains { $0.type == .projectileHit && $0.secondaryEntityId == enemy.id }) + } + + @Test func stationaryAndMissedWallSweepsAreDefined() { + let wall = AABB(center: VecI(x: 10, y: 0), halfSize: VecI(x: 2, y: 2)) + #expect(Collision.segmentEntryTime(VecI(x: 10, y: 0).asQ8, VecI(x: 10, y: 0).asQ8, box: wall) == 0) + #expect(Collision.segmentEntryTime(.zero, .zero, box: wall) == nil) + #expect(Collision.segmentEntryTime(.zero, VecI(x: 20, y: 0).asQ8, box: wall) == 102) + } + + @Test func startInsideCircleHitsAtEntryNotExit() { + #expect(Collision.sweepCircleTime(from: .zero, to: VecI(x: 20, y: 0).asQ8, + radius: 4, target: .zero, targetRadius: 2) == 0) + } + + @Test func mineEvidenceNamesHazardRatherThanOwner() throws { + var sim = try Simulation.make(seed: 1) + let point = VecI(x: sim.state.player.position.x.unitsTruncated + 10, + y: sim.state.player.position.y.unitsTruncated) + sim.testing_insertMine(at: point, armRemaining: 0) + let mine = try #require(sim.state.mines.last) + let result = sim.step(command: .neutral(tick: 1)) + let hit = try #require(result.events.first { $0.type == .playerDamaged }) + #expect(hit.secondaryEntityId == mine.id) + #expect(hit.payload["ownerEntityId"] == .string(mine.ownerId.decimalString)) + #expect(hit.payload["sourceXQ8"] == .integer(mine.position.x.raw)) + #expect(hit.payload["damageKind"] == .string("mine")) + #expect(!sim.state.mines.contains { $0.id == mine.id }) + } + + @Test func contactEvidenceListsAllCurrentContributors() throws { + var sim = try Simulation.make(seed: 1) + let point = VecI(x: sim.state.player.position.x.unitsTruncated, + y: sim.state.player.position.y.unitsTruncated) + for _ in 0..<3 { sim.testing_spawnInformant(at: point, integrity: 100, speed: 0) } + let ids = sim.state.enemies.map(\.id).sorted() + var contact: AuthoritativeEvent? + for tick in 1...20 { + let result = sim.step(command: .neutral(tick: UInt64(tick))) + if let found = result.events.first(where: { $0.type == .playerDamaged && $0.payload["damageKind"] == .string("contact") }) { + contact = found; break + } + } + let hit = try #require(contact) + #expect(hit.payload["contributors"] == .array(ids.map { .string($0.decimalString) })) + } + + @Test func retiredProjectileRetainsIncomingPoint() throws { + var sim = try Simulation.make(seed: 1) + sim.testing_injectHostileBolt() + let shot = try #require(sim.state.projectiles.last) + let result = sim.step(command: .neutral(tick: 1)) + let hit = try #require(result.events.first { $0.type == .playerDamaged }) + #expect(hit.payload["sourceXQ8"] == .integer(shot.previous.x.raw)) + #expect(hit.payload["damageKind"] == .string("projectile")) + #expect(!sim.state.projectiles.contains { $0.id == shot.id && $0.alive }) + } +} diff --git a/Tests/SurveillanceCoreTests/CombatFeedbackTests.swift b/Tests/SurveillanceCoreTests/CombatFeedbackTests.swift new file mode 100644 index 00000000..91517a8f --- /dev/null +++ b/Tests/SurveillanceCoreTests/CombatFeedbackTests.swift @@ -0,0 +1,45 @@ +import Testing +@testable import SurveillanceCore + +@Suite struct CombatFeedbackTests { + private func hit(_ projectile: UInt64, _ target: UInt64, _ kind: String, x: Int64) -> AuthoritativeEvent { + AuthoritativeEvent(tick: 4, phase: 9, type: .projectileHit, primary: EntityID(projectile), + secondary: EntityID(target), payload: ["projectileId": .string(String(projectile)), + "targetEntityId": .string(String(target)), "projectileKind": .string(kind), + "impactXQ8": .integer(x), "impactYQ8": .integer(0)], insertion: 0) + } + @Test func unrelatedHitsNeverMakeAChain() throws { + var projector = VFXProjector() + let projection = projector.project(tick: 4, events: [hit(1, 10, "civicPulse", x: 0), hit(2, 11, "civicPulse", x: 100)], catalog: try .bundled()) + #expect(projection.presentations.allSatisfy { $0.recipeId != "ricochet" }) + } + @Test func independentChainsRetainTheirOwnPoints() throws { + var projector = VFXProjector() + let events = [hit(1, 10, "civicPulse", x: 0), hit(2, 20, "civicPulse", x: 1000), + hit(2, 21, "ricochet", x: 1200), hit(1, 11, "ricochet", x: 200)] + let chains = projector.project(tick: 4, events: events, catalog: try .bundled()).presentations.filter { $0.recipeId == "ricochet" } + #expect(chains.count == 2) + #expect(chains.map { $0.impactPoints.map { $0.x.raw } } == [[0, 200], [1000, 1200]]) + } + @Test func incompleteOrDuplicateTargetChainDoesNotDraw() throws { + var projector = VFXProjector() + let events = [hit(1, 10, "ricochet", x: 0), hit(2, 20, "civicPulse", x: 0), hit(2, 20, "ricochet", x: 1)] + #expect(projector.project(tick: 4, events: events, catalog: try .bundled()).presentations.allSatisfy { $0.recipeId != "ricochet" }) + } + @Test func distinctDamageSourcesAreNotCoalescedTogether() throws { + var projector = VFXProjector() + let events = ["10", "11"].map { id in + AuthoritativeEvent(tick: 1, phase: 12, type: .playerDamaged, primary: EntityID(1), + payload: ["sourceEntityId": .string(id)], insertion: 0) + } + let effects = projector.project(tick: 1, events: events, catalog: try .bundled()).presentations + #expect(effects.filter { $0.recipeId == "playerHit" }.count == 2) + } + @Test func copyStatesCorrectImmunityAndAmbush() { + let card = UpgradePresentation.card(for: .ghostStep) + #expect(card.numericSummary.contains("0.5 s")) + #expect(card.numericSummary.contains("no damage immunity")) + #expect(card.voiceOverLabel.contains("thirty ticks")) + #expect(AwarenessHintProjector.copy.contains("TRIPLE DAMAGE")) + } +} diff --git a/Tests/SurveillanceCoreTests/CommitClipTests.swift b/Tests/SurveillanceCoreTests/CommitClipTests.swift index c9540f9e..eaf6a184 100644 --- a/Tests/SurveillanceCoreTests/CommitClipTests.swift +++ b/Tests/SurveillanceCoreTests/CommitClipTests.swift @@ -15,6 +15,21 @@ struct CommitClipTests { return body } + @Test func reusedSnapshotRestoresMissingBaseWhenCommitExpires() throws { + var tracker = try ReactionClipTracker.bundled() + let role = ArchetypeID.fogAnalyticsCloud + tracker.ingest(R.result(200, []), + previousEnemies: [Self.enemy(3, role, .telegraph)], + currentEnemies: [Self.enemy(3, role, .cooldown)]) + var snap = try R.snapshot(tick: 200, enemies: [R.sprite(3, role, clip: nil)]) + tracker.apply(to: &snap) + #expect(snap.enemies[0].clipId == "fogAnalyticsCloud_commit") + snap.tick = 210 + tracker.apply(to: &snap) + #expect(snap.enemies[0].clipId == nil) + #expect(snap.enemies[0].heldClipOccurrence == nil) + } + static func presented(_ tracker: ReactionClipTracker, tick: UInt64, id: UInt64, _ archetype: ArchetypeID, base: String) throws -> String? { var snap = try R.snapshot(tick: tick, enemies: [R.sprite(id, archetype, clip: base)]) tracker.apply(to: &snap) diff --git a/Tests/SurveillanceCoreTests/CompleteRunVectorTests.swift b/Tests/SurveillanceCoreTests/CompleteRunVectorTests.swift index 971c998e..bd4f696d 100644 --- a/Tests/SurveillanceCoreTests/CompleteRunVectorTests.swift +++ b/Tests/SurveillanceCoreTests/CompleteRunVectorTests.swift @@ -11,15 +11,15 @@ struct CompleteRunVectorTests { private static let expectedVectors: [UpgradeID: ExpectedVector] = [ .signalJammer: ExpectedVector( elapsedTicks: 302, - terminalDigest: "cdf91bab889f07b651dd1b3cd07368ec5712b0d5940d42502bca69178a1cdf73" + terminalDigest: "3606fe66eacc3bc93b6219ec67bf8457fd6f03e301c897521327678bf6c555e6" ), .ricochetPulse: ExpectedVector( elapsedTicks: 302, - terminalDigest: "9c0bc683b26d32f1d381dade2d7193996e8aa313775c334ef720061a917f332e" + terminalDigest: "41b081038151a2e8f286c2edb864f42f75ccac40a9ae86bca94e137b889de389" ), .ghostStep: ExpectedVector( elapsedTicks: 302, - terminalDigest: "3b28326edd7e16d9cd13774d4d2990133151b81c3b4a2450fea5884243be0ea8" + terminalDigest: "e960e78d2d1d2d35425fb30b169734160fea514735644ff7012a70ebc6e6959c" ) ] diff --git a/Tests/SurveillanceCoreTests/DaemonClipTests.swift b/Tests/SurveillanceCoreTests/DaemonClipTests.swift index 1328a505..fe932592 100644 --- a/Tests/SurveillanceCoreTests/DaemonClipTests.swift +++ b/Tests/SurveillanceCoreTests/DaemonClipTests.swift @@ -33,7 +33,7 @@ struct DaemonClipTests { let clip = try #require(library.clip(clipId), "\(clipId)") let expectedMilliseconds = ticks * 1000 / 60 let actualMilliseconds = - clip.framesPerDirection * 1000 / clip.framesPerSecond + clip.framesPerDirection * 1000 / (try #require(clip.framesPerSecond)) #expect( actualMilliseconds == expectedMilliseconds, "\(clipId): \(actualMilliseconds)ms for a \(ticks)-tick state (\(expectedMilliseconds)ms)" @@ -133,7 +133,7 @@ struct CaptainClipTests { let library = try ClipFrameLibrary.bundled() for (clipId, ticks) in Self.telegraphTicks { let clip = try #require(library.clip(clipId), "\(clipId)") - let actual = clip.framesPerDirection * 1000 / clip.framesPerSecond + let actual = clip.framesPerDirection * 1000 / (try #require(clip.framesPerSecond)) #expect( actual == ticks * 1000 / 60, "\(clipId): \(actual)ms for a \(ticks)-tick window" diff --git a/Tests/SurveillanceCoreTests/FeelProjectionParityTests.swift b/Tests/SurveillanceCoreTests/FeelProjectionParityTests.swift new file mode 100644 index 00000000..f1ed3229 --- /dev/null +++ b/Tests/SurveillanceCoreTests/FeelProjectionParityTests.swift @@ -0,0 +1,145 @@ +import Foundation +import Testing +@testable import SurveillanceCore + +struct FeelProjectionParityTests { + /// Frozen pre-optimization copy path, kept independent of the direct query. + struct Legacy { + var labels = EncounterLabelGate() + var queue = TutorialLineQueue() + var objective: String? + var line: String? + var nearMiss: [EntityID] = [] + mutating func observe(_ state: WorldState) { + let snap = PresentationSnapshot(state) + nearMiss = PatrolNearMiss.members(state) + objective = labels.project(snap, state: state) + var hints: [String] = [] + if PatrolTutorial.coneOnScreen(snap) { hints.append(PatrolTutorial.copy) } + if FeelPassPresenter.unawareNonPatrolOnScreen(snap) { hints.append(AwarenessHintProjector.copy) } + let card = snap.tutorialCopyIsSafetyMessage ? nil : snap.tutorialCopy + let blocked = snap.upgradePending || snap.tutorialCopyIsSafetyMessage + || labels.isFresh(snap.objectiveNode, tick: snap.tick) + line = queue.update(card: card, hints: hints, blocked: blocked) + } + } + + static func compare(_ state: WorldState, _ direct: inout FeelPassPresenter, _ legacy: inout Legacy) { + direct.observe(state) + legacy.observe(state) + #expect(direct.nearMiss == legacy.nearMiss) + #expect(direct.objectiveCopy == legacy.objective) + #expect(direct.tutorialLine == legacy.line) + #expect(direct.tutorial == legacy.queue) + #expect(direct.encounterLabels == legacy.labels) + } + + @Test func viewportPatrolMembershipAndCopyPriorityMatchSnapshot() throws { + var sim = try Simulation.make(seed: 1) + sim.step(command: .neutral(tick: 1)) + let member = try #require(sim.state.enemies.first { $0.patrol != nil }) + for position in [VecI(x: 0, y: 0), VecI(x: 1100, y: 700), VecI(x: 2304, y: 1536)] { + for offset in [VecI(x: 352, y: 163), VecI(x: 353, y: 164), VecI(x: -352, y: -163), VecI(x: -353, y: -164)] { + for condition in 0..<6 { + for mode in 0..<5 { + var state = sim.state + state.player.position = position.asQ8 + let center = PresentationCamera.follow(player: position, heading: state.player.facing, bounds: state.arena.boundsUnits).center + var enemy = member + enemy.position = VecI(x: center.x + offset.x, y: center.y + offset.y).asQ8 + if condition == 1 { enemy.patrol = nil } + if condition == 2 { enemy.patrol?.facing = .zero } + if condition == 3 { enemy.awareness = .aware } + if condition == 4 { enemy.integrity = 0 } + if condition == 5 { enemy.awareness = .struck } + state.enemies = [enemy] + state.tutorial.phase = mode == 0 ? .complete : .move + state.tutorial.lockdownPreempts = mode == 2 + state.tutorial.extractionPreempts = mode == 3 ? .lockedContact : nil + state.upgrade.pending = mode == 4 + var direct = FeelPassPresenter() + var legacy = Legacy() + Self.compare(state, &direct, &legacy) + } + } + } + } + } + + @Test func lifecycleEncounterTransitionsExpiryRewindAndResetMatchSnapshot() throws { + var sim = try Simulation.make(seed: 1) + sim.step(command: .neutral(tick: 1)) + var state = sim.state + var direct = FeelPassPresenter() + var legacy = Legacy() + for tick in 1...760 { + state.clock = SimulationClock(tick: UInt64(tick)) + if tick == 2 { state.encounters["M-A"]?.activated = true } + if tick == 160 { state.encounters["M-A"]?.completed = true; state.encounters["M-B"]?.activated = true } + if tick == 320 { state.encounters["M-B"]?.completed = true; state.encounters["M-C"]?.activated = true } + if tick == 480 { state.encounters["M-C"]?.completed = true } + if tick == 500 { state.eliteDefeated = true } + if tick == 520 { state.bossDefeated = true } + if tick == 540 { state.extraction.armed = true } + state.tutorial.phase = tick < 180 ? .move : .complete + state.upgrade.pending = (200..<220).contains(tick) + state.tutorial.lockdownPreempts = (230..<260).contains(tick) + Self.compare(state, &direct, &legacy) + } + state.clock = SimulationClock(tick: 1) + Self.compare(state, &direct, &legacy) + direct.reset(); legacy = Legacy() + Self.compare(state, &direct, &legacy) + } + @Test func mixedHintsKeepPatrolBeforeGeneralAwareness() throws { + var sim = try Simulation.make(seed: 1) + sim.step(command: .neutral(tick: 1)) + var state = sim.state + var patrol = try #require(state.enemies.first { $0.patrol != nil }) + patrol.position = state.player.position + var other = patrol + other.id = EntityID(99_999) + other.patrol = nil + state.enemies = [other, patrol] + state.tutorial.phase = .complete + var direct = FeelPassPresenter() + var legacy = Legacy() + Self.compare(state, &direct, &legacy) + #expect(direct.tutorial.pending == [PatrolTutorial.copy, AwarenessHintProjector.copy]) + } + + /// Diagnostic only: identical state, both ordering directions, no timing + /// threshold. This measures CPU projection cost, not display or device FPS. + @Test func isolatedObservationTiming() throws { + var sim = try Simulation.make(seed: 1) + sim.step(command: .neutral(tick: 1)) + let state = sim.state + var direct = FeelPassPresenter() + var legacy = Legacy() + for _ in 0..<10 { Self.compare(state, &direct, &legacy) } + for directFirst in [false, true] { + var directTimes: [Double] = [] + var legacyTimes: [Double] = [] + for _ in 0..<100 { + func sampleDirect() { + let start = DispatchTime.now().uptimeNanoseconds + direct.observe(state) + directTimes.append(Double(DispatchTime.now().uptimeNanoseconds - start) / 1_000_000) + } + func sampleLegacy() { + let start = DispatchTime.now().uptimeNanoseconds + legacy.observe(state) + legacyTimes.append(Double(DispatchTime.now().uptimeNanoseconds - start) / 1_000_000) + } + if directFirst { sampleDirect(); sampleLegacy() } else { sampleLegacy(); sampleDirect() } + #expect(direct.tutorial == legacy.queue) + #expect(direct.encounterLabels == legacy.labels) + #expect(direct.nearMiss == legacy.nearMiss) + } + let record: [String: Any] = ["directFirst": directFirst, "directMs": directTimes, "legacyMs": legacyTimes] + let data = try JSONSerialization.data(withJSONObject: record, options: [.sortedKeys]) + print("FEEL_PROJECTION_TIMING " + String(decoding: data, as: UTF8.self)) + } + } + +} diff --git a/Tests/SurveillanceCoreTests/ProceduralVFXTests.swift b/Tests/SurveillanceCoreTests/ProceduralVFXTests.swift index 72885a91..c7e3ff01 100644 --- a/Tests/SurveillanceCoreTests/ProceduralVFXTests.swift +++ b/Tests/SurveillanceCoreTests/ProceduralVFXTests.swift @@ -142,9 +142,11 @@ struct ProceduralVFXTests { tick: 4, phase: 9, type: .projectileHit, - primary: EntityID(UInt64(index + 2)), + primary: EntityID(1), payload: [ "projectileId": .string("1"), + "projectileKind": .string(index == 0 ? "civicPulse" : "ricochet"), + "impactXQ8": .integer(Int64(index * 256)), "impactYQ8": .integer(0), "targetEntityId": .string("\(index + 2)"), "appliedDamage": .integer(1) ], diff --git a/Tests/SurveillanceCoreTests/ReactionClipTrackerTests.swift b/Tests/SurveillanceCoreTests/ReactionClipTrackerTests.swift index 74e5e90d..24c6b44d 100644 --- a/Tests/SurveillanceCoreTests/ReactionClipTrackerTests.swift +++ b/Tests/SurveillanceCoreTests/ReactionClipTrackerTests.swift @@ -41,6 +41,40 @@ struct ReactionClipTrackerTests { ) } + @Test func eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() throws { + var clips = try ClipCatalog.bundled().clips + let index = try #require(clips.firstIndex { $0.clipId == "player_hurt" }) + clips[index].framesPerSecond = nil + clips[index].authoredTiming = try ClipTiming(unitsPerSecond: 60, + frameUnits: clips[index].frameIds.map { id in + id.contains("_n_") ? 1 : id.contains("_e_") ? 2 : id.contains("_s_") ? 3 : 4 + }) + for (direction, duration) in [("n",3),("e",6),("s",9),("w",12)] { + var tracker = ReactionClipTracker(clips: clips) + tracker.ingest(Self.result(100, [Self.event(.playerDamaged, 1, tick: 100)]), + previousEnemies: [], currentEnemies: [], playerDirection: direction) + #expect(tracker.playerReaction?.endTick == UInt64(100 + duration)) + var suppressed = try Self.snapshot(tick: 101, playerClip: "player_dodge") + tracker.apply(to: &suppressed) + #expect(suppressed.playerReactionClipId == nil) + var late = try Self.snapshot(tick: UInt64(99 + duration)) + late.playerDirection = "e" + tracker.apply(to: &late) + #expect(late.playerDirection == "e") + #expect(late.playerReactionOccurrence == ClipOccurrence(direction: direction, startTick: 100)) + var expired = late + expired.tick = UInt64(100 + duration) + tracker.apply(to: &expired) + #expect(expired.playerReactionClipId == nil) + tracker.ingest(Self.result(102, [Self.event(.playerDamaged, 1, tick: 102)]), + previousEnemies: [], currentEnemies: [], playerDirection: direction) + #expect(tracker.playerReaction?.occurrence.startTick == 102) + #expect(tracker.playerReaction?.endTick == UInt64(102 + duration)) + tracker.reset() + #expect(tracker.playerReaction == nil) + } + } + @Test func durationIsFramesOverFpsInTicks() throws { let clips = try ClipCatalog.bundled().clipsById // 3 frames at 20 fps = 0.15 s = 9 ticks. diff --git a/Tests/SurveillanceCoreTests/ReplayTests.swift b/Tests/SurveillanceCoreTests/ReplayTests.swift index b99dc815..eb6e5ebf 100644 --- a/Tests/SurveillanceCoreTests/ReplayTests.swift +++ b/Tests/SurveillanceCoreTests/ReplayTests.swift @@ -17,7 +17,7 @@ struct ReplayTests { @Test func duplicateCommandTickIsRejected() throws { let json = """ - {"schemaVersion":"runtime-kernel-001","rulesetVersion":"ss-rules-007","contentVersion":"civic-seam-content-006","arenaVersion":"civic-seam-arena-004","seed":1,"commands":[{"tick":1,"moveX":0,"moveY":0,"dodgePressed":false},{"tick":1,"moveX":0,"moveY":0,"dodgePressed":false}]} + {"schemaVersion":"runtime-kernel-001","rulesetVersion":"ss-rules-008","contentVersion":"civic-seam-content-006","arenaVersion":"civic-seam-arena-004","seed":1,"commands":[{"tick":1,"moveX":0,"moveY":0,"dodgePressed":false},{"tick":1,"moveX":0,"moveY":0,"dodgePressed":false}]} """.data(using: .utf8)! let result = ReplayEnvelope.load(json: json) guard case .failure(.duplicateCommandTick(1)) = result else { @@ -49,11 +49,11 @@ struct ReplayTests { #expect(sim.state.digest() == initial) #expect(sim.state.cameras.allSatisfy { $0.integrity == 3 }) } - @Test func previousRulesetFailsClosedBeforeExecution() throws { + @Test(arguments: ["ss-rules-006", "ss-rules-007"]) func previousRulesetFailsClosedBeforeExecution(previous: String) throws { let json = String(decoding: SpecBundle.fixture("replay-smoke-001"), as: UTF8.self) - .replacingOccurrences(of: ContractVersions.ruleset, with: "ss-rules-006") + .replacingOccurrences(of: ContractVersions.ruleset, with: previous) guard case .failure(.incompatibleIdentity) = ReplayEnvelope.load(json: Data(json.utf8)) else { - Issue.record("D-102 must reject a ruleset-006 replay before execution") + Issue.record("D-103 must reject previous rulesets before execution") return } } diff --git a/Tests/SurveillanceCoreTests/StandardEnemyClipProjectionTests.swift b/Tests/SurveillanceCoreTests/StandardEnemyClipProjectionTests.swift index d0b154c3..69bd1342 100644 --- a/Tests/SurveillanceCoreTests/StandardEnemyClipProjectionTests.swift +++ b/Tests/SurveillanceCoreTests/StandardEnemyClipProjectionTests.swift @@ -33,7 +33,7 @@ import Testing @Test func correlatorRecoverPresentsItsRecoverClip() throws { #expect(ActorClipProjection.standardClipId(role: .cableCarCorrelator, state: .recover, velocity: .zero) == "cableCarCorrelator_recover") let clip = try #require(ClipCatalog.bundled().clipsById["cableCarCorrelator_recover"]) - #expect(ReactionClipTrackerDuration.ticks(clip) == 45) + #expect(try ReactionClipTrackerDuration.ticks(clip) == 45) } /// Attack states still win over locomotion. @@ -63,8 +63,9 @@ import Testing /// Frames ÷ fps in 60 Hz ticks, the same rule `ReactionClipTracker` uses. enum ReactionClipTrackerDuration { - static func ticks(_ clip: ClipRecord) -> Int { + static func ticks(_ clip: ClipRecord) throws -> Int { + let fps = try #require(clip.framesPerSecond) let perDirection = clip.directions.isEmpty ? clip.frameIds.count : clip.frameIds.count / clip.directions.count - return (perDirection * 60 + clip.framesPerSecond - 1) / clip.framesPerSecond + return (perDirection * 60 + fps - 1) / fps } } diff --git a/Tests/SurveillanceCoreTests/WeaponUpgradeFeedbackTests.swift b/Tests/SurveillanceCoreTests/WeaponUpgradeFeedbackTests.swift new file mode 100644 index 00000000..7f3207c4 --- /dev/null +++ b/Tests/SurveillanceCoreTests/WeaponUpgradeFeedbackTests.swift @@ -0,0 +1,118 @@ +import Testing +@testable import SurveillanceCore + +@Suite struct WeaponUpgradeFeedbackTests { + @Test func shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() throws { + var sim = try Simulation.make(seed: 1) + sim.testing_keepCameras([], integrity: 3) + sim.testing_setCollisionSolids([]) + for _ in 0..<29 { sim.step(command: nil) } + #expect(sim.combatFeedback.shot == nil) + let p = sim.state.player.position + sim.testing_spawnInformant(at: VecI(x: p.x.unitsTruncated - 10, y: p.y.unitsTruncated), integrity: 100, speed: 0) + let result = sim.step(command: .init(tick: 30, moveX: 32767, moveY: 0, dodgePressed: false)) + let shot = try #require(sim.combatFeedback.shot) + #expect(shot.velocity.x.raw < 0) + #expect(sim.state.player.facing.x.raw > 0) + #expect(shot.origin == sim.state.player.position) + #expect(result.events.contains { $0.type == .weaponFired && $0.primaryEntityId == shot.projectile }) + #expect(!sim.state.projectiles.contains { $0.id == shot.projectile && $0.alive }) + sim.step(command: nil) + #expect(sim.combatFeedback.shot == nil) + sim.restart() + #expect(sim.combatFeedback == CombatFeedbackFrame()) + } + + @Test func noTargetProducesNoShotEvidence() throws { + var sim = try Simulation.make(seed: 1) + sim.testing_keepCameras([], integrity: 3) + for _ in 0..<60 { + let result = sim.step(command: nil) + #expect(sim.combatFeedback.shot == nil) + #expect(!result.events.contains { $0.type == .weaponFired }) + } + } + + @Test(arguments: [false, true]) + func concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost: Bool) throws { + var sim = try Simulation.make(seed: 1) + if ghost { sim.testing_selectUpgrade(.ghostStep) } + sim.step(command: .init(tick: 1, moveX: 32767, moveY: 0, dodgePressed: true)) + for tick in 1...31 { + #expect(PresentationSnapshot(sim.state).ghostConcealmentActive == (ghost && tick <= 30)) + if tick < 31 { sim.step(command: nil) } + } + sim.restart() + #expect(!PresentationSnapshot(sim.state).ghostConcealmentActive) + } + + @Test(arguments: [0, 999, 1000]) + func jammerContourRequiresActualUnclampedFogReduction(exposure: Int) throws { + var sim = try Simulation.make(seed: 1) + sim.testing_keepCameras([], integrity: 3) + sim.testing_selectUpgrade(.signalJammer) + sim.testing_setExposure(exposure) + sim.testing_insertEnemy(EnemyBody(id: EntityID(999_999), archetype: .fogAnalyticsCloud, + position: sim.state.player.position, velocity: .zero, integrity: 10_000, radius: 16, + speedUnitsPerSecond: 0, contactDps: 0, state: .telegraph, stateTicks: 1, + spawnTick: 0, nextSpecialTick: 0, encounterId: "feedback-fog")) + sim.step(command: nil) + #expect(sim.combatFeedback.jammerReducedExposure == (exposure == 0)) + sim.step(command: nil) + #expect(!sim.combatFeedback.jammerReducedExposure) + } + + @Test func jammerDoesNotClaimTamperOrIdleReduction() throws { + var sim = try Simulation.make(seed: 1) + sim.testing_selectUpgrade(.signalJammer) + sim.step(command: nil) + #expect(!sim.combatFeedback.jammerReducedExposure) + sim.testing_keepOnlyCamera(at: 0, integrity: 1) + sim.testing_injectPulseHitting(camera: sim.state.cameras[0]) + let result = sim.step(command: nil) + #expect(result.events.contains { $0.type == .cameraDestroyed }) + #expect(!sim.combatFeedback.jammerReducedExposure) + } + + @Test func jammerTracksRealCameraContactThenClearsOutsideField() throws { + var sim = try Simulation.make(seed: 1) + sim.testing_selectUpgrade(.signalJammer) + sim.testing_keepOnlyCamera(at: 0, integrity: 3) + sim.testing_setCollisionSolids([], preserveCameras: true) + sim.testing_relocateCamera(at: 0, position: .init(x: 200, y: 200), headingMilli: 0) + sim.testing_setPlayerPosition(.init(x: 300, y: 200)) + sim.step(command: nil) + #expect(sim.state.cameras[0].wasDetecting) + #expect(sim.state.exposure.exposure == 1) + #expect(sim.combatFeedback.jammerReducedExposure) + sim.testing_setPlayerPosition(.init(x: 100, y: 200)) + sim.step(command: nil) + #expect(!sim.combatFeedback.jammerReducedExposure) + } + + @Test func jammerTracksActualBossObservationPulse() throws { + var sim = try Simulation.make(seed: 1) + sim.testing_selectUpgrade(.signalJammer) + sim.testing_keepCameras([], integrity: 3) + sim.testing_setCollisionSolids([]) + sim.testing_installBoss() + sim.testing_activateBossField(remaining: 181) + let emitter = try #require(sim.state.bossRuntime?.activeEmitter) + let heading = Cordic.headingUnit(milliDegrees: emitter.headingMilliDegrees) + sim.testing_setPlayerPosition(.init(x: emitter.position.x + Int(heading.x) * 50 / Int(Cordic.q15), + y: emitter.position.y + Int(heading.y) * 50 / Int(Cordic.q15))) + let result = sim.step(command: nil) + #expect(result.events.contains { $0.payload["reason"] == .string("observationPulse") }) + #expect(sim.combatFeedback.jammerReducedExposure) + } + + @Test func cardsExplainExclusionsAndExposeDistinctNonColourIcons() { + let cards = UpgradePresentation.selectionCards() + #expect(cards.map(\.selectionIndex) == [0, 1, 2]) + #expect(Set(cards.map(\.symbolName)).count == 3) + #expect(cards.allSatisfy { !$0.effect.isEmpty && !$0.exclusions.isEmpty }) + #expect(cards[0].voiceOverLabel.contains("No Tamper or damage reduction")) + #expect(cards[1].voiceOverLabel.contains("clear line of sight")) + #expect(cards[2].voiceOverLabel.contains("Fog, Observation and Tamper still apply")) + } +} diff --git a/docs/review/D103.md b/docs/review/D103.md new file mode 100644 index 00000000..478cdd4b --- /dev/null +++ b/docs/review/D103.md @@ -0,0 +1,14 @@ +# D-103 fixture review + +The corrected simulation was executed first under ruleset-007. Its four full canonical JSON states match the saved ruleset-007 evidence byte-for-byte in meaning; the three complete-run fixtures still succeed at tick 302 and the smoke run is at tick 5. New expected hashes were computed independently by replacing only rulesetVersion in these reviewed canonical states, serializing sorted compact JSON and hashing SHA-256. The full suite must verify actual ruleset-008 execution against these values. No failing expectation was copied to create them. + +| Vector | ruleset-007 | ruleset-008 | +|---|---|---| +| ghostStep | `3b28326edd7e16d9cd13774d4d2990133151b81c3b4a2450fea5884243be0ea8` | `e960e78d2d1d2d35425fb30b169734160fea514735644ff7012a70ebc6e6959c` | +| ricochetPulse | `9c0bc683b26d32f1d381dade2d7193996e8aa313775c334ef720061a917f332e` | `41b081038151a2e8f286c2edb864f42f75ccac40a9ae86bca94e137b889de389` | +| signalJammer | `cdf91bab889f07b651dd1b3cd07368ec5712b0d5940d42502bca69178a1cdf73` | `3606fe66eacc3bc93b6219ec67bf8457fd6f03e301c897521327678bf6c555e6` | +| smoke | `bc9d5d632c4cc73c297b87b51a9e4e390511908287bc17a1ae0d8720d4a8e694` | `92a128f7c29afb15504196c1d3ad958b46be9b7657e2513c7fc3e302f78434f5` | + +This does not mean the repair is inert for all inputs: the new target-before-wall and start-inside regressions deliberately change hits. Enriched damage events also change event evidence; they are separated by the new ruleset identity. Content, arena, schema envelope, damage amounts, targeting and kernel numeric expectations remain unchanged. Older rulesets fail closed. + +Before repair, CombatCausalityTests produced eight failed assertions across four tests: later-wall masking, inside-circle exit-time, mine owner attribution, and absent projectile source evidence. No existing assertion was weakened. The positive VFX fixtures were corrected to use one consistent projectile ID and the new impact/kind fields, and negative unrelated-hit/malformed-pair cases were added. diff --git a/docs/review/D104.md b/docs/review/D104.md new file mode 100644 index 00000000..8c7c1768 --- /dev/null +++ b/docs/review/D104.md @@ -0,0 +1,79 @@ +# D-104 benchmark reconciliation + +Spec candidate: `790676242b0761e6d4c9a3f78af6768fc0a41693` (SS-specs #62). Runtime starting point: `61ce8e936b0a6e3fc1ccbf02666422b466df1393`. Scope: BP-001–BP-006 / T1042–T1046, following the selected street-corner benchmark. + +## Current status — 2026-10-15 + +This update supersedes the historical starting-state table below. Production pin remains d602775. User prefers the narrow-stance / alternating-arm source (718b392). [Detail inspection](player-motion-inspection/README.md), [registration preflight](player-registration/README.md) and [live capture](player-live-capture/README.md) record progress and limits. Latest recorded core result: 773 tests / 109 suites; simulator: 107 executions, zero failures. Only two distinct moving frames were captured before boundary stop; full gait/contact is unproven. + +Municipal candidate clips and complete-device fixture integration now exist; shared building/ground/outline/occlusion/field comparisons exist. They are not accepted production art. T1042–T1046 remain open. Next: polish knee/calf/boot/arm/coat detail, collect an unobstructed measured cycle without synchronous image capture, then restore the complete shared scene and visibility matrix before facing/cast completion and family migration. Physical QA remains after visual review. + +Planning authority and detailed dependencies are in SS-specs `docs/review/benchmark-status-2026-10-15.md` and `docs/kanban.md`. This tracking update does not repin runtime or alter gameplay, metadata or accepted art. + +## Adopted specification + +The runtime pin, Swift contract identity, bundled pin, catalog adoption field and CI pin checks move together. The specification changes are Markdown production requirements, including correction of a stale +100 Tamper example to the already accepted D-086 +150. Contract and fixture JSON are unchanged from the prior pin apart from the documented runtime catalog pin field. No gameplay version or golden digest changes are needed. + +## Current evidence and remaining work + +| Requirement | Observed runtime state | Required work / evidence | +|---|---|---| +| BP-001 shared playable sample | `GameScene.didMove` uses 704×326 aspect-fit; no benchmark art sample yet | Controlled art in real renderer, HUD, quiet/dense encounter, native/50%/grayscale and geometry views | +| BP-002 source/facing registration | `SpriteLibrary` uses declared anchors and nearest filtering; current art is prior delivery | Editable sources, four-facing rotation, independent texture/world/display measurements, pose and loop review | +| BP-003 16-frame movement | Six named movement loops have six frames per facing; integer fps | Produce and review source motion, preserve exact cycles, migrate timing representation where necessary; Informant pursuit decision remains open | +| BP-004 one complete Camera | `WorldRenderer.renderCameras` draws a housing plus legacy head | Accepted complete-device clips, remove duplicate composition, persistent Integrity/interrupt/reduced-motion proof and Captain distinction | +| BP-005 environment truth | Existing environment art and authoritative geometry are separate | Per-ID 46-image disposition, source/base/anchor mapping and front/rear/corner/projectile traversal captures | +| BP-006 adoption and evidence | D-104 pin adoption begins here | Byte parity and core tests, then exact asset/runtime evidence with honest unproduced/failed/reviewed states; physical budgets remain pending | + +No concept image is installed as gameplay art. Pin alignment is implementation authority, not closure of T1042–T1046. The next production step is the controlled four-facing Player/source sample and representative street corner, followed by complete Camera clip integration after the shared scene review. + +## Validation of the adoption slice + +- `GIT_TERMINAL_PROMPT=0 bash scripts/spec_parity.sh`: PASS against `790676242b0761e6d4c9a3f78af6768fc0a41693`; all bundled contracts/fixtures match under the existing D-065 catalog exception. +- `swift test --disable-sandbox --cache-path ../swift-cache --config-path ../swift-config --security-path ../swift-security`: 760 tests in 107 suites PASS. The initial plain `swift test` could not compile the package manifest because nested `sandbox-exec` was denied; the workspace-cache invocation ran the complete suite without test exclusions. +- `git diff --check`: PASS. +- These results prove pin/resource/core compatibility only. They do not prove the new art, Camera renderer change, physical-device performance or visual acceptance. + +### BP-004 playback reconciliation (2026-10-14) + +Camera playback now keys its lifetime to authoritative Integrity and Reduced Motion, +rather than the one-tick event clip. A critical hit selects critical-entry immediately; +a later dormant snapshot no longer cancels the destruction sequence. Newer Integrity +cancels the old sequence, which settles on the appropriate terminal frame. Reduced +Motion cancels running actions and shows that terminal texture immediately. Field +visibility still reads the authoritative projection, independently of animation. + +Four AppTests exercise the real renderer: critical selection despite a transient hit +clip, destruction persistence and immediate field removal, Reduced Motion terminal +textures for all integrity values, and interruption/node reuse across 3→2→1→0. +Local core suite: 760 tests / 107 suites passed (camera-playback-core.log in the task +workspace). Local iOS build-for-testing did not reach compilation: package manifest +cache access was denied; CoreSimulatorService was also inaccessible. App tests require +CI evidence before this change is considered validated. + +This closes only playback wiring. Legacy head/housing composition and old art remain +pending the complete-device sheet admission. A terminal texture from historical art +is not proof of the required damaged/critical drawing, non-color markers or benchmark +fidelity. No art/catalog/metadata/gameplay identity changed. + +Local iOS follow-up: Xcode UI successfully built and ran the current suite on +an iPhone 17 Pro iOS 26.5 simulator. Initial run exposed an exact-precision test +defect (#119): SpriteKit round-trips the anchor at Float precision. The expectation +now checks that exact representation of (32,88), without a tolerance. Re-run: +82 tests / 13 suites passed in 30.087 seconds. This verifies the new camera tests; +it does not verify new art or physical-device performance. + +BP-005 source inspection: `benchmark-environment/audit.md` records all 46 images, +with source/delivery identity and contact sheets. 12 reuse candidates, 22 repairs, +8 replacements, 4 alternate camera visuals excluded from first-release rendering. +Runtime footprint/anchor mapping and traversal evidence remain explicitly pending. + +### BP-007 resolution and registration adoption (2026-10-14) + +Spec candidate `6cd3fdc03b1234b3780e8cdc0061b2aa8eb8de83` now governs the resolution/framing comparison and ground registration. All four runtime pin sources move together. Exact local Git-object parity compares all 21 contract/fixture JSON files in both directions, allowing only the documented D-065 catalog specificationCommit exception: PASS. This is local commit parity, not the remote-fetch CI guard. + +The revised composition in `revised-benchmark/review.md` supersedes the table's initial “no benchmark art sample yet” observation: quiet composition, native/half/grayscale and collision overlay are CAPTURED. The building footprint mismatch is FAILED; closer framing, source-detail comparison, legal attack/dense encounters and animation evidence are NOT_PRODUCED. One complete camera appears only in the DEBUG review fixture; shipping complete-device art admission remains open. Existing 760-core/82-iOS results apply to the preceding fixture revision, not a new full run after this pin change. + +The new spec adds no gameplay rules, JSON contract changes, animation metadata or version migration. Renderer changes must next compare framing and correctly register the visible ground base, with the same world transform used by all geometry. No physical-device test is authorized by this adoption record. + +BP-007 pin validation: targeted ContractVersionsTests and AssetCatalogTests passed (4 tests / 2 suites); build succeeded. `git diff --check` passed. Full gameplay suite was not repeated for this identity-only adoption. diff --git a/docs/review/animation-timing-foundation.md b/docs/review/animation-timing-foundation.md new file mode 100644 index 00000000..6be5152c --- /dev/null +++ b/docs/review/animation-timing-foundation.md @@ -0,0 +1,15 @@ +# BP-003 exact timing foundation + +Spec: c07ea6d3a9e2f3916fc69b73bf38bc8176911c3f. Runtime changes in the commit containing this record. + +ClipTiming stores positive integer holds and timebase, validates selection order and checked arithmetic, and converts a selected cycle into ceiling-rounded 60 Hz lifetime. The existing v1 frame-rate delivery adapts into this model. SpriteLibrary consumes those holds at the SpriteKit seconds boundary; ReactionClipTracker uses the same duration model. The renderer has a variable-hold sequence construction path, tested independently from asset loading. + +This is the shared timing foundation, not the v2 metadata migration or 16-frame art delivery. ClipRecord and ClipFrameLibrary still expose and decode v1 framesPerSecond; production files remain clip-metadata-001. The proposed v2 strict decoder, exporter round-trip, catalog owner migration and direction-specific reaction lifetime changes remain pending. Variable holds are not reachable from current production metadata. No duplicated source frames have been added. + +The spec pin changes in all four identity sources. All 21 bundled contracts/fixtures match the exact local spec Git commit, with only the documented D-065 catalog pin exception. Ruleset/content/arena and all non-pin JSON remain unchanged. Remote-fetch CI parity is not claimed. + +New tests cover 16-frame half-second and 3/7-second vectors, variable holds, directional selection, malformed values, sum/product overflow, and every existing clip/facing's equality to the independent legacy cadence. A direct SpriteKit action test verifies the elite 3/7-second and variable 1/4-second action durations and rejects mismatched texture/hold counts. These action-duration checks do not prove pose fidelity or every texture's visible residence under device load. + +Validation (2026-10-14): full core suite passed, 764 tests / 108 suites in 475.309 seconds (workspace clip-timing-core.log). Xcode iPhone 17 Pro iOS 26.5 simulator passed 82 Swift Testing tests / 13 suites in 35.403 seconds plus three XCTest checks (two benchmark captures and the timing action construction check). Remote `scripts/spec_parity.sh` passed at c07ea6d. `git diff --check` passed. + +The new test initially assumed Double precision for SKAction duration and failed. Defect [#120](https://github.com/Zero-State-LLC/SS-runtime/issues/120) records the observed exact Float representation. The corrected assertion requires Double(Float(3/7)) exactly; no widened tolerance or changed core rational expectation. Variable-quarter-second duration remains an exact 0.25 assertion. diff --git a/docs/review/awareness-optimization/README.md b/docs/review/awareness-optimization/README.md new file mode 100644 index 00000000..ab68ecd2 --- /dev/null +++ b/docs/review/awareness-optimization/README.md @@ -0,0 +1,9 @@ +# Awareness-hint snapshot optimization + +GameSession now passes WorldState directly to AwarenessHintProjector instead of constructing the full PresentationSnapshot every tick. The read-only overload uses the same PresentationCamera.follow, Q8 truncation, alive/unaware filter and inclusive viewport containment. Both APIs share the unchanged once-per-run/300-tick lifecycle. Visibility work is lazy once the hint has latched. + +The new parity vectors cover 567 visibility combinations (camera positions/headings, inclusive/outside edges, fractional coordinates and enemy condition), plus lifecycle expiry, rewind and reset. Existing awareness and readability tests also pass: 26 AwarenessTests + 21 ReadabilityFinishTests, both commands exit 0 using `swift test --disable-sandbox --filter …`. App suite: 117 named tests / 119 executions passed, zero failures. The opt-in timing test preserves every tick's state digest and events plus command logs. + +Same-scenario Debug simulator measurement, 240 steps across both control/measured orders: the historical `awarenessSnapshotAndHint` stage label is retained for comparison, but now measures the direct query. Median fell from 1.235 to 0.00596 ms and from 1.2095 to 0.00501 ms (about 99.5%). These stage measurements include diagnostic overhead and do not establish end-to-end frame rate, GPU cost or physical-device performance. + +No simulation rules, animation duration, route length, coverage gate or production art admission changed. The earlier recorded distance-phase miss remains open. The next measured candidate is the full snapshot still constructed in FeelPassPresenter.observe; it needs its own semantic parity and measurement before adoption. Then repeat recording-load coverage and the required Release/device profiling. diff --git a/docs/review/awareness-optimization/app-summary.json b/docs/review/awareness-optimization/app-summary.json new file mode 100644 index 00000000..b2ab9f80 --- /dev/null +++ b/docs/review/awareness-optimization/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 119, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792119958.074, + "passedTests" : 117, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792119604.484, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "41% of duration", + "text" : "2 longest test runs with outlier durations exceeding 30.79s (three standard deviations)" + } + ], + "totalTestCount" : 117 +} diff --git a/docs/review/awareness-optimization/revision.json b/docs/review/awareness-optimization/revision.json new file mode 100644 index 00000000..15d1ef47 --- /dev/null +++ b/docs/review/awareness-optimization/revision.json @@ -0,0 +1,8 @@ +{ + "result": "Test-SSRuntime-2026.10.15_20-00-04--0700.xcresult", + "sourceSHA256": { + "Sources/SurveillanceCore/Presentation/AwarenessHint.swift": "bd099fe34e84661b8d8d6aca7b52adf92fa39057c1f3687910b0a794d020979c", + "App/GameScene.swift": "6c6dd49fd1fe0bf9ea4ce3e3c3599872d0f173dbdf478b9aee55d8279ee51bdb", + "Tests/SurveillanceCoreTests/AwarenessTests.swift": "4216b1658c937af003fc37766122b7b69d38ad5dba6a468b8550939adf6ab955" + } +} diff --git a/docs/review/awareness-optimization/stage-comparison.json b/docs/review/awareness-optimization/stage-comparison.json new file mode 100644 index 00000000..fdde9581 --- /dev/null +++ b/docs/review/awareness-optimization/stage-comparison.json @@ -0,0 +1,114 @@ +[ + { + "stage": "audioAndCaptionBoard", + "measuredFirst": false, + "beforeMedianMS": 0.019073486328125, + "afterMedianMS": 0.06103515625, + "changePercent": 220.00000000000003 + }, + { + "stage": "awarenessSnapshotAndHint", + "measuredFirst": false, + "beforeMedianMS": 1.2350082397460938, + "afterMedianMS": 0.0059604644775390625, + "changePercent": -99.5173745173745 + }, + { + "stage": "commandAndFeelBefore", + "measuredFirst": false, + "beforeMedianMS": 0.0050067901611328125, + "afterMedianMS": 0.010013580322265625, + "changePercent": 100.0 + }, + { + "stage": "diagnosticsAndCommandLog", + "measuredFirst": false, + "beforeMedianMS": 0.0050067901611328125, + "afterMedianMS": 0.02491474151611328, + "changePercent": 397.61904761904765 + }, + { + "stage": "hudCaptionsQuietFeel", + "measuredFirst": false, + "beforeMedianMS": 1.3489723205566406, + "afterMedianMS": 1.7404556274414062, + "changePercent": 29.02085542594557 + }, + { + "stage": "reactions", + "measuredFirst": false, + "beforeMedianMS": 0.0059604644775390625, + "afterMedianMS": 0.024497509002685547, + "changePercent": 311.00000000000006 + }, + { + "stage": "simulation", + "measuredFirst": false, + "beforeMedianMS": 1.8720030784606934, + "afterMedianMS": 2.4974942207336426, + "changePercent": 33.41293342248544 + }, + { + "stage": "terminalReceipt", + "measuredFirst": false, + "beforeMedianMS": 0.0020265579223632812, + "afterMedianMS": 0.0029802322387695312, + "changePercent": 47.058823529411775 + }, + { + "stage": "audioAndCaptionBoard", + "measuredFirst": true, + "beforeMedianMS": 0.018477439880371094, + "afterMedianMS": 0.05900859832763672, + "changePercent": 219.3548387096774 + }, + { + "stage": "awarenessSnapshotAndHint", + "measuredFirst": true, + "beforeMedianMS": 1.2094974517822266, + "afterMedianMS": 0.0050067901611328125, + "changePercent": -99.58604376108812 + }, + { + "stage": "commandAndFeelBefore", + "measuredFirst": true, + "beforeMedianMS": 0.0050067901611328125, + "afterMedianMS": 0.014066696166992188, + "changePercent": 180.95238095238093 + }, + { + "stage": "diagnosticsAndCommandLog", + "measuredFirst": true, + "beforeMedianMS": 0.0050067901611328125, + "afterMedianMS": 0.025033950805664062, + "changePercent": 400.0 + }, + { + "stage": "hudCaptionsQuietFeel", + "measuredFirst": true, + "beforeMedianMS": 1.3060569763183594, + "afterMedianMS": 1.7630457878112793, + "changePercent": 34.98995983935742 + }, + { + "stage": "reactions", + "measuredFirst": true, + "beforeMedianMS": 0.0059604644775390625, + "afterMedianMS": 0.025033950805664062, + "changePercent": 320.0 + }, + { + "stage": "simulation", + "measuredFirst": true, + "beforeMedianMS": 1.8564462661743164, + "afterMedianMS": 2.5194883346557617, + "changePercent": 35.71566172221152 + }, + { + "stage": "terminalReceipt", + "measuredFirst": true, + "beforeMedianMS": 0.0020265579223632812, + "afterMedianMS": 0.0029802322387695312, + "changePercent": 47.058823529411775 + } +] diff --git a/docs/review/benchmark-baseline/baseline-704.png b/docs/review/benchmark-baseline/baseline-704.png new file mode 100644 index 00000000..b22d0b27 Binary files /dev/null and b/docs/review/benchmark-baseline/baseline-704.png differ diff --git a/docs/review/benchmark-baseline/review.md b/docs/review/benchmark-baseline/review.md new file mode 100644 index 00000000..c8d03772 --- /dev/null +++ b/docs/review/benchmark-baseline/review.md @@ -0,0 +1,28 @@ +# Current runtime baseline — BP-001 / BP-006 + +Status: CAPTURED. Visual benchmark: FAILED. This is the current shipping-art baseline, not the revised shared sample. + +Capture code runs the real GameScene, WorldRenderer and HUD. It skips the intro using the existing scene method, advances the simulation once, and renders the camera's 704×326 scene-coordinate viewport. A second attachment adds magenta outlines directly from the snapshot's authoritative solid AABBs. It does not infer collision from image bounds. SpriteKit actions are paused: these images cannot demonstrate animation fidelity. + +Runtime base: ffa1132a6085430e129c6aea8cea8619e66b9a33 plus the new AppTests/BenchmarkCaptureTests.swift capture harness. Specification pin: 790676242b0761e6d4c9a3f78af6768fc0a41693. Xcode result: Test-SSRuntime-2026.10.14_08-41-20--0700.xcresult. Simulator: iPhone 17 Pro, iOS 26.5, device ID in manifest.json. Reproduce by running BenchmarkCaptureTests/testCaptureCurrentRuntimeBaseline in the SSRuntime scheme. + +Local validation: capture XCTest passed; all 82 Swift Testing tests in 13 suites also passed. The previous runtime commit's CI passed all four jobs. These checks establish capture execution and regression coverage, not visual acceptance. + +## Observed defects + +- Player appears as a narrow side profile, inconsistent with the elevated environment and selected hooded benchmark. +- Ground utility-cover/stripe details visibly repeat in a grid. +- Haze reads as horizontal bands of repeated source forms. +- The camera silhouette is disproportionately large and reads as layered pieces near the top-right. The magenta mount box is much smaller than its artwork; these represent different things and must not be collapsed into one measurement. +- Ground rails change direction/overlap abruptly in the visible composition. +- The opening tutorial card occupies substantial lower-screen area; any benchmark composition must include this actual HUD rather than hide it for an attractive still. + +## Export measurements + +Logical crop: 704×326. SKView reports contentScaleFactor 1.0, but SpriteKit produced 2112×978 image pixels (3× each axis). Both observations are retained; no assumption that these values are interchangeable. Files suffixed 704 and 352 are explicit display-size derivatives. Grayscale derivatives use luminance conversion. Original attachments are unchanged and hashes are recorded. + +## Next evidence + +The accepted benchmark requires revised player, complete municipal camera, representative building and prop using one projection and apparent scale. This opening baseline does not satisfy that asset set. Candidate-source injection into the real renderer, quiet and dense encounter comparison, full animation capture, traversal/hit evidence and physical-device profiling remain outstanding. + +Capture API basis: https://developer.apple.com/documentation/spritekit/skview/texture(from:crop:). Apple's API renders the requested node tree within a crop in that node's coordinate system. The harness converts camera viewport corners into scene coordinates before capture. diff --git a/docs/review/benchmark-baseline/solid-overlay-704.png b/docs/review/benchmark-baseline/solid-overlay-704.png new file mode 100644 index 00000000..24322028 Binary files /dev/null and b/docs/review/benchmark-baseline/solid-overlay-704.png differ diff --git a/docs/review/benchmark-environment/audit.md b/docs/review/benchmark-environment/audit.md new file mode 100644 index 00000000..a4dc043e --- /dev/null +++ b/docs/review/benchmark-environment/audit.md @@ -0,0 +1,64 @@ +# Environment disposition audit — BP-005 + +Status: source inspection complete; runtime geometry and visual acceptance pending. + +All 46 delivered file hashes match the current catalog. This establishes identity, not quality. Contact sheets preserve source aspect ratio but fit each image into a review cell; they are not world-scale comparisons. + +The dispositions below are proposed production actions based on visible source defects and the adopted benchmark contract. “Retain” means reuse candidate, not benchmark acceptance. “Exclude” applies to visible first-release art only; logical camera families remain intact. No shipping files are removed by this report. + +| # | Asset | Disposition | Observation / required work | +|---|---|---|---| +| 1 | `env_ground_asphalt` | retain | Coherent asphalt surface; verify tile seams and contrast beneath combat. | +| 2 | `env_ground_sidewalk` | repair | Utility covers and curb-like vertical stripe are baked into repeating ground; isolate landmark detail or prove repeat looks natural. | +| 3 | `env_ground_plaza` | retain | Coherent plaza paving; verify tiling and shared scale. | +| 4 | `env_ground_service` | repair | Large circular/grate landmark is baked into a ground tile; compare repeat against the shared street sample. | +| 5 | `env_ground_steps` | repair | Frontal stair bands need a deliberate top-down stair placement and height reading. | +| 6 | `env_solid_01_residential_west` | repair | Small building occupies little of a tall 128x512 canvas; recalculate visible ground anchor and mapping without deriving collision from alpha. | +| 7 | `env_solid_02_residential_north` | repair | Detached building fragment at left edge; remove fragment and register main building base. | +| 8 | `env_solid_03_transit_kiosk` | repair | Detached fragment at right edge of kiosk; clean and register the complete kiosk. | +| 9 | `env_solid_04_civic_west` | repair | Building occupies only part of tall canvas; establish common scale and ground anchor. | +| 10 | `env_solid_05_civic_dais` | repair | Detached triangular fragment above dais; clean and register base. | +| 11 | `env_solid_06_service_yard_a` | repair | Tall canvas surrounds a smaller building; compare visible base with authoritative footprint. | +| 12 | `env_solid_07_service_yard_b` | retain | Complete service building silhouette; retain as a candidate pending shared projection and traversal checks. | +| 13 | `env_solid_08_service_divider` | repair | Detached fragments above and left of divider; remove and register continuous wall base. | +| 14 | `env_solid_09_grid_island_a` | repair | Detached fleck below utility island; clean and verify boundary. | +| 15 | `env_solid_10_grid_island_b` | retain | Complete utility island; verify common scale and authoritative base placement. | +| 16 | `env_solid_11_court_column_a` | repair | Column very small in tall canvas; register visible base and verify apparent scale. | +| 17 | `env_solid_12_court_column_b` | repair | Column very small in tall canvas; register visible base and verify apparent scale. | +| 18 | `env_solid_13_phoenix_west` | repair | Short wall inside tall narrow canvas; register base rather than scaling from canvas dimensions. | +| 19 | `env_solid_14_phoenix_east` | repair | Short wall inside tall narrow canvas; register base rather than scaling from canvas dimensions. | +| 20 | `env_camera_municipal_dome` | replace | Retain municipal construction as reference; replace static image with complete-device six-clip delivery under BP-004. | +| 21 | `env_camera_storefront` | exclude | Alternate visible family excluded from first-release camera rendering by BP-004; preserve logical family placement data. | +| 22 | `env_camera_traffic_reader` | exclude | Alternate visible family excluded from first-release camera rendering by BP-004; preserve logical family placement data. | +| 23 | `env_camera_ornamental_civic` | exclude | Alternate visible family excluded from first-release camera rendering by BP-004; preserve logical family placement data. | +| 24 | `env_camera_temporary_mast` | exclude | Alternate visible family excluded from first-release camera rendering by BP-004; preserve logical family placement data. | +| 25 | `env_prop_newsbox` | repair | Two boxes plus disconnected shapes above; isolate a coherent newsbox object and clean fragments. | +| 26 | `env_prop_hydrant_meters` | repair | Hydrant/meter group has detached strip above; clean and register intended group. | +| 27 | `env_prop_utility_covers` | repair | Four separate utility covers in one texture; decide explicit authored group versus separately registered ground details in sample. | +| 28 | `env_prop_vent_grate` | retain | Single readable grate; verify ground projection and scale. | +| 29 | `env_prop_street_tree` | retain | Tree and planter form a coherent unit; verify occlusion and visible base in traversal. | +| 30 | `env_motif_repair` | replace | Large frontal wall illustration conflicts with elevated shared viewpoint; preserve repair motif in a correctly projected wall/decal. | +| 31 | `env_motif_counter_signal` | replace | Frontal wall/window vignette conflicts with shared viewpoint; preserve counter-signal motif on the scene architecture. | +| 32 | `env_motif_broadcast_glyph` | replace | Freestanding dimensional emblem reads as an object, not a grounded broadcast marking; rebuild within accepted motif usage after scene comparison. | +| 33 | `env_ground_railbed` | retain | Ground cobble surface can support rail setting; verify tile seams and pairing with rail strip. | +| 34 | `env_prop_trolley_pole` | repair | Pole occupies a small part of tall canvas; register base and compare height with municipal camera. | +| 35 | `env_prop_signal_mast` | retain | Complete traffic signal silhouette; verify height, scale and depth handling. | +| 36 | `env_prop_bus_shelter` | retain | Complete shelter with visible roof; verify shared viewpoint and foreground occlusion. | +| 37 | `env_prop_parklet` | retain | Complete parklet; verify shared scale and authoritative placement semantics. | +| 38 | `env_prop_bike_rack` | retain | Readable rack group; verify ground contact and scale. | +| 39 | `env_prop_barricade` | repair | Barricade reads mostly frontally; match elevated ground plane and base before adoption. | +| 40 | `env_prop_seismic_brace` | retain | Complete brace; verify mounting context and base alignment. | +| 41 | `env_motif_phoenix` | repair | Circular emblem reads face-on; project it consistently if used on ground, preserving motif. | +| 42 | `env_fog_low` | replace | Two separated cloud-like groups on transparent canvas; not a continuous haze tile. Produce a continuous bounded fog layer and verify seams in runtime. | +| 43 | `env_fog_high` | replace | Repeated small cloud-like groups in a row; visible source layout risks repeated strip pattern. Produce a continuous bounded haze tile. | +| 44 | `env_camera_captain_idle` | replace | Separate ornate camera family; rebuild using shared municipal materials with persistent boss-owned non-color distinction. | +| 45 | `env_camera_captain_active` | replace | Active ornate camera family; pair with rebuilt Captain source and retain non-color identity across states. | +| 46 | `env_prop_rail_strip` | repair | Rail strip is horizontally presented; map to actual street plane and verify continuity at joins. | + +## Evidence still required + +Each solid/upright prop needs its visible ground base, render anchor and intended world draw size recorded separately from the authoritative AABB. The inventory records current image hashes and alpha bounds; alpha bounds are not a collision boundary. Front/rear/corner traversal and projectile contact remain NOT_PRODUCED for this audit. + +Source identities, hashes, dimensions and alpha bounds: inventory.json. Visual inspection: contact-1.png and contact-2.png. Runtime source commit: 981dbb48a6ccf7071715a877bfdf89c0ebf0e78f. + +Method follows SS-specs benchmark-production.md BP-001/BP-002/BP-005 and its existing researched design basis. Exact repair mappings and any new design choices require the shared runtime sample; this report does not invent them. diff --git a/docs/review/benchmark-environment/contact-1.png b/docs/review/benchmark-environment/contact-1.png new file mode 100644 index 00000000..d564d452 Binary files /dev/null and b/docs/review/benchmark-environment/contact-1.png differ diff --git a/docs/review/benchmark-environment/contact-2.png b/docs/review/benchmark-environment/contact-2.png new file mode 100644 index 00000000..591bd7ec Binary files /dev/null and b/docs/review/benchmark-environment/contact-2.png differ diff --git a/docs/review/benchmark-environment/inventory.json b/docs/review/benchmark-environment/inventory.json new file mode 100644 index 00000000..e44fb8a2 --- /dev/null +++ b/docs/review/benchmark-environment/inventory.json @@ -0,0 +1,1477 @@ +{ + "runtimeCommit": "981dbb48a6ccf7071715a877bfdf89c0ebf0e78f", + "records": [ + { + "schemaVersion": "asset-record-001", + "assetId": "env_ground_asphalt", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_ground_asphalt.png", + "runtimePath": "env_ground_asphalt@1x.png", + "sha256": "96774980c0b90535f0edfa263b1f5c4841be0be9778be48feaec27e2fd7c1676", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "96774980c0b90535f0edfa263b1f5c4841be0be9778be48feaec27e2fd7c1676", + "alphaBounds": [ + 0, + 0, + 128, + 128 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Coherent asphalt surface; verify tile seams and contrast beneath combat.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_ground_sidewalk", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_ground_sidewalk.png", + "runtimePath": "env_ground_sidewalk@1x.png", + "sha256": "33a590754f7730d8526af161493f748d99336e23accf6c6514de62341126ff03", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "33a590754f7730d8526af161493f748d99336e23accf6c6514de62341126ff03", + "alphaBounds": [ + 0, + 0, + 128, + 128 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Utility covers and curb-like vertical stripe are baked into repeating ground; isolate landmark detail or prove repeat looks natural.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_ground_plaza", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_ground_plaza.png", + "runtimePath": "env_ground_plaza@1x.png", + "sha256": "098bc9dadddd45259cdf76bec9ba0c43835a1cbad14e689440c02780d2711484", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "098bc9dadddd45259cdf76bec9ba0c43835a1cbad14e689440c02780d2711484", + "alphaBounds": [ + 0, + 0, + 128, + 128 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Coherent plaza paving; verify tiling and shared scale.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_ground_service", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_ground_service.png", + "runtimePath": "env_ground_service@1x.png", + "sha256": "eb2bd7750d064716dbf35acbdfad92e800fd52c3de66fffc4c235fa469bad5ef", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "eb2bd7750d064716dbf35acbdfad92e800fd52c3de66fffc4c235fa469bad5ef", + "alphaBounds": [ + 0, + 0, + 128, + 128 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Large circular/grate landmark is baked into a ground tile; compare repeat against the shared street sample.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_ground_steps", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_ground_steps.png", + "runtimePath": "env_ground_steps@1x.png", + "sha256": "738b1a9c6bc8f25861395d07d6661765716c991868b245f8993b5f3daecff6d6", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "738b1a9c6bc8f25861395d07d6661765716c991868b245f8993b5f3daecff6d6", + "alphaBounds": [ + 0, + 0, + 128, + 128 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Frontal stair bands need a deliberate top-down stair placement and height reading.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_01_residential_west", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_01_residential_west.png", + "runtimePath": "env_solid_01_residential_west@1x.png", + "sha256": "1171bd8f9ff905b96e54cb33aac6ea98779b712f4119d2fa76593a2c693bdf6e", + "dimensions": { + "width": 128, + "height": 512 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "1171bd8f9ff905b96e54cb33aac6ea98779b712f4119d2fa76593a2c693bdf6e", + "alphaBounds": [ + 4, + 181, + 124, + 330 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Small building occupies little of a tall 128x512 canvas; recalculate visible ground anchor and mapping without deriving collision from alpha.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_02_residential_north", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_02_residential_north.png", + "runtimePath": "env_solid_02_residential_north@1x.png", + "sha256": "6c19e10ce277fe32c7085ab263ef7bbcb8f4c121509dd1053400bca097a5e154", + "dimensions": { + "width": 384, + "height": 192 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "6c19e10ce277fe32c7085ab263ef7bbcb8f4c121509dd1053400bca097a5e154", + "alphaBounds": [ + 110, + 21, + 274, + 184 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Detached building fragment at left edge; remove fragment and register main building base.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_03_transit_kiosk", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_03_transit_kiosk.png", + "runtimePath": "env_solid_03_transit_kiosk@1x.png", + "sha256": "28f423190924b15bc04bf8dea2eab54c695f5eed6ec78d7a79eeaad38ec639e2", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "28f423190924b15bc04bf8dea2eab54c695f5eed6ec78d7a79eeaad38ec639e2", + "alphaBounds": [ + 17, + 14, + 111, + 124 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Detached fragment at right edge of kiosk; clean and register the complete kiosk.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_04_civic_west", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_04_civic_west.png", + "runtimePath": "env_solid_04_civic_west@1x.png", + "sha256": "b1d9002bd547eb482190fa28e4c53557220a37eabbdceb54297186a04a7edb0b", + "dimensions": { + "width": 192, + "height": 384 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "b1d9002bd547eb482190fa28e4c53557220a37eabbdceb54297186a04a7edb0b", + "alphaBounds": [ + 4, + 73, + 188, + 313 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Building occupies only part of tall canvas; establish common scale and ground anchor.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_05_civic_dais", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_05_civic_dais.png", + "runtimePath": "env_solid_05_civic_dais@1x.png", + "sha256": "04a5ee7285c65271c67e3ad7649f9234413b38a05fa14483f1397f16f9bd4cb6", + "dimensions": { + "width": 160, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "04a5ee7285c65271c67e3ad7649f9234413b38a05fa14483f1397f16f9bd4cb6", + "alphaBounds": [ + 42, + 4, + 117, + 91 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Detached triangular fragment above dais; clean and register base.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_06_service_yard_a", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_06_service_yard_a.png", + "runtimePath": "env_solid_06_service_yard_a@1x.png", + "sha256": "1ab4163fc697f478659dbe1117823474614bf899a048ecfe3702ca0d5cbcd0ab", + "dimensions": { + "width": 192, + "height": 320 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "1ab4163fc697f478659dbe1117823474614bf899a048ecfe3702ca0d5cbcd0ab", + "alphaBounds": [ + 4, + 53, + 188, + 267 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Tall canvas surrounds a smaller building; compare visible base with authoritative footprint.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_07_service_yard_b", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_07_service_yard_b.png", + "runtimePath": "env_solid_07_service_yard_b@1x.png", + "sha256": "ce95b12fc9f3b3bde1c15d50f3f224d58bc53dffba4dfdcc4f7a3e4c41056616", + "dimensions": { + "width": 256, + "height": 192 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "ce95b12fc9f3b3bde1c15d50f3f224d58bc53dffba4dfdcc4f7a3e4c41056616", + "alphaBounds": [ + 55, + 13, + 201, + 176 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Complete service building silhouette; retain as a candidate pending shared projection and traversal checks.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_08_service_divider", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_08_service_divider.png", + "runtimePath": "env_solid_08_service_divider@1x.png", + "sha256": "4dcf193a7fe2b1ef6e8b9f87e3a5ec5eaefb0f96b3ad416a68aa81bf1b1d77ba", + "dimensions": { + "width": 96, + "height": 224 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "4dcf193a7fe2b1ef6e8b9f87e3a5ec5eaefb0f96b3ad416a68aa81bf1b1d77ba", + "alphaBounds": [ + 4, + 59, + 92, + 165 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Detached fragments above and left of divider; remove and register continuous wall base.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_09_grid_island_a", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_09_grid_island_a.png", + "runtimePath": "env_solid_09_grid_island_a@1x.png", + "sha256": "a82bc7fa044f2a10e949be7acd1d15c7cc19d77a95f43bb021652f7a16fa5aaa", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "a82bc7fa044f2a10e949be7acd1d15c7cc19d77a95f43bb021652f7a16fa5aaa", + "alphaBounds": [ + 14, + 5, + 122, + 123 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Detached fleck below utility island; clean and verify boundary.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_10_grid_island_b", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_10_grid_island_b.png", + "runtimePath": "env_solid_10_grid_island_b@1x.png", + "sha256": "5e30a3bb7e6e2956d586a7c0fcb76eb3f7dce29a1de478260915b1ea11afcaa2", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "5e30a3bb7e6e2956d586a7c0fcb76eb3f7dce29a1de478260915b1ea11afcaa2", + "alphaBounds": [ + 5, + 7, + 122, + 118 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Complete utility island; verify common scale and authoritative base placement.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_11_court_column_a", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_11_court_column_a.png", + "runtimePath": "env_solid_11_court_column_a@1x.png", + "sha256": "dc9e40e5db5ffc8889db3fb3019ba968d9f38306934304e33090266d50cd0782", + "dimensions": { + "width": 64, + "height": 144 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "dc9e40e5db5ffc8889db3fb3019ba968d9f38306934304e33090266d50cd0782", + "alphaBounds": [ + 13, + 44, + 48, + 100 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Column very small in tall canvas; register visible base and verify apparent scale.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_12_court_column_b", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_12_court_column_b.png", + "runtimePath": "env_solid_12_court_column_b@1x.png", + "sha256": "263ae419fe140746d282aa05519e1468e425a6b1b831dcdd0fde10de445228c0", + "dimensions": { + "width": 64, + "height": 144 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "263ae419fe140746d282aa05519e1468e425a6b1b831dcdd0fde10de445228c0", + "alphaBounds": [ + 16, + 44, + 50, + 100 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Column very small in tall canvas; register visible base and verify apparent scale.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_13_phoenix_west", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_13_phoenix_west.png", + "runtimePath": "env_solid_13_phoenix_west@1x.png", + "sha256": "7c53e2d05db5fd65af539183908dd7c8651e5d256b170dc9ed2db5c10e6d559a", + "dimensions": { + "width": 64, + "height": 256 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "7c53e2d05db5fd65af539183908dd7c8651e5d256b170dc9ed2db5c10e6d559a", + "alphaBounds": [ + 5, + 102, + 59, + 153 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Short wall inside tall narrow canvas; register base rather than scaling from canvas dimensions.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_solid_14_phoenix_east", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_solid_14_phoenix_east.png", + "runtimePath": "env_solid_14_phoenix_east@1x.png", + "sha256": "14b3bfcb7ae6bb9bb7347eebfa2844ef55d9c85a2ece6c6cb35d5a25d6c8ba5c", + "dimensions": { + "width": 64, + "height": 256 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "14b3bfcb7ae6bb9bb7347eebfa2844ef55d9c85a2ece6c6cb35d5a25d6c8ba5c", + "alphaBounds": [ + 4, + 98, + 57, + 157 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Short wall inside tall narrow canvas; register base rather than scaling from canvas dimensions.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_camera_municipal_dome", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_camera_municipal_dome.png", + "runtimePath": "env_camera_municipal_dome@1x.png", + "sha256": "98145d19642da2f03f1aa8bf0dfece0260b199a37e37584c495b0542684c1719", + "dimensions": { + "width": 64, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "98145d19642da2f03f1aa8bf0dfece0260b199a37e37584c495b0542684c1719", + "alphaBounds": [ + 13, + 4, + 51, + 89 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "replace", + "inspectionReason": "Retain municipal construction as reference; replace static image with complete-device six-clip delivery under BP-004.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_camera_storefront", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_camera_storefront.png", + "runtimePath": "env_camera_storefront@1x.png", + "sha256": "f76c5e1bb53ef8d8898df6ae028a3f88350fcff1b347aecd0889696d0666bcc1", + "dimensions": { + "width": 64, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "f76c5e1bb53ef8d8898df6ae028a3f88350fcff1b347aecd0889696d0666bcc1", + "alphaBounds": [ + 13, + 8, + 50, + 78 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "exclude", + "inspectionReason": "Alternate visible family excluded from first-release camera rendering by BP-004; preserve logical family placement data.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_camera_traffic_reader", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_camera_traffic_reader.png", + "runtimePath": "env_camera_traffic_reader@1x.png", + "sha256": "eed3177293c813f44045723955c6c7ff7e226f46355abb2ccee290f5236aebed", + "dimensions": { + "width": 64, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "eed3177293c813f44045723955c6c7ff7e226f46355abb2ccee290f5236aebed", + "alphaBounds": [ + 8, + 4, + 55, + 76 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "exclude", + "inspectionReason": "Alternate visible family excluded from first-release camera rendering by BP-004; preserve logical family placement data.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_camera_ornamental_civic", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_camera_ornamental_civic.png", + "runtimePath": "env_camera_ornamental_civic@1x.png", + "sha256": "025727dd9ef318a6e4cbb4a4cda3f707eb6d064265bcbea04983e5a7165409b8", + "dimensions": { + "width": 64, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "025727dd9ef318a6e4cbb4a4cda3f707eb6d064265bcbea04983e5a7165409b8", + "alphaBounds": [ + 12, + 4, + 52, + 92 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "exclude", + "inspectionReason": "Alternate visible family excluded from first-release camera rendering by BP-004; preserve logical family placement data.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_camera_temporary_mast", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_camera_temporary_mast.png", + "runtimePath": "env_camera_temporary_mast@1x.png", + "sha256": "b9e3d159ab8ba08640f6e88b6d3d4451a0ba980c295925de1f8eee8f1c095b58", + "dimensions": { + "width": 64, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "b9e3d159ab8ba08640f6e88b6d3d4451a0ba980c295925de1f8eee8f1c095b58", + "alphaBounds": [ + 13, + 4, + 50, + 91 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "exclude", + "inspectionReason": "Alternate visible family excluded from first-release camera rendering by BP-004; preserve logical family placement data.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_newsbox", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_newsbox.png", + "runtimePath": "env_prop_newsbox@1x.png", + "sha256": "4017f1726af55b3b55a81529d2e57a5005b26caf04b1454be928b8950e6b8791", + "dimensions": { + "width": 48, + "height": 64 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "4017f1726af55b3b55a81529d2e57a5005b26caf04b1454be928b8950e6b8791", + "alphaBounds": [ + 4, + 10, + 44, + 52 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Two boxes plus disconnected shapes above; isolate a coherent newsbox object and clean fragments.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_hydrant_meters", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_hydrant_meters.png", + "runtimePath": "env_prop_hydrant_meters@1x.png", + "sha256": "ad1cfd8f6142481185c2d31e1a35a6923f9567ce28ea7c3f0f95f7624e6236a7", + "dimensions": { + "width": 64, + "height": 64 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "ad1cfd8f6142481185c2d31e1a35a6923f9567ce28ea7c3f0f95f7624e6236a7", + "alphaBounds": [ + 5, + 4, + 59, + 60 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Hydrant/meter group has detached strip above; clean and register intended group.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_utility_covers", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_utility_covers.png", + "runtimePath": "env_prop_utility_covers@1x.png", + "sha256": "71ee6ecb7611862abdf185d84c5cada694ceae987f29d902b4942ff82e2a462c", + "dimensions": { + "width": 64, + "height": 64 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "71ee6ecb7611862abdf185d84c5cada694ceae987f29d902b4942ff82e2a462c", + "alphaBounds": [ + 4, + 14, + 59, + 57 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Four separate utility covers in one texture; decide explicit authored group versus separately registered ground details in sample.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_vent_grate", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_vent_grate.png", + "runtimePath": "env_prop_vent_grate@1x.png", + "sha256": "8675d6b09328bb6102f34231a3ad5147dec05374bdbaec333c64ebbd7458a92f", + "dimensions": { + "width": 96, + "height": 64 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "8675d6b09328bb6102f34231a3ad5147dec05374bdbaec333c64ebbd7458a92f", + "alphaBounds": [ + 17, + 5, + 81, + 60 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Single readable grate; verify ground projection and scale.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_street_tree", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_street_tree.png", + "runtimePath": "env_prop_street_tree@1x.png", + "sha256": "b75552314acfa9358703e3a29a046421270dbfca23c454e2fc6971fef5d6a915", + "dimensions": { + "width": 96, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "b75552314acfa9358703e3a29a046421270dbfca23c454e2fc6971fef5d6a915", + "alphaBounds": [ + 8, + 21, + 92, + 107 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Tree and planter form a coherent unit; verify occlusion and visible base in traversal.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_motif_repair", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_motif_repair.png", + "runtimePath": "env_motif_repair@1x.png", + "sha256": "3ea59425896705822aaab310234e462ae9d228174fbd3ef54988fd0f472489f1", + "dimensions": { + "width": 1024, + "height": 1024 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "3ea59425896705822aaab310234e462ae9d228174fbd3ef54988fd0f472489f1", + "alphaBounds": [ + 32, + 197, + 992, + 826 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "replace", + "inspectionReason": "Large frontal wall illustration conflicts with elevated shared viewpoint; preserve repair motif in a correctly projected wall/decal.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_motif_counter_signal", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_motif_counter_signal.png", + "runtimePath": "env_motif_counter_signal@1x.png", + "sha256": "dd0756a98a26f5ca654354b6efca982e9a9f6eb75789c5b7b500c02aecf40052", + "dimensions": { + "width": 1024, + "height": 1024 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "dd0756a98a26f5ca654354b6efca982e9a9f6eb75789c5b7b500c02aecf40052", + "alphaBounds": [ + 65, + 32, + 959, + 992 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "replace", + "inspectionReason": "Frontal wall/window vignette conflicts with shared viewpoint; preserve counter-signal motif on the scene architecture.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_motif_broadcast_glyph", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_motif_broadcast_glyph.png", + "runtimePath": "env_motif_broadcast_glyph@1x.png", + "sha256": "3603244843e9f6b61d1e37c792d753f24f8498c55f2dcde7ca6fc48f5fb2fda8", + "dimensions": { + "width": 1024, + "height": 1024 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "3603244843e9f6b61d1e37c792d753f24f8498c55f2dcde7ca6fc48f5fb2fda8", + "alphaBounds": [ + 189, + 32, + 835, + 992 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "replace", + "inspectionReason": "Freestanding dimensional emblem reads as an object, not a grounded broadcast marking; rebuild within accepted motif usage after scene comparison.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_ground_railbed", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_ground_railbed.png", + "runtimePath": "env_ground_railbed@1x.png", + "sha256": "9b71398b45621cc12d24d963d0be583e487dbba101eda6e5c4a0da4eabbb4c15", + "dimensions": { + "width": 128, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "9b71398b45621cc12d24d963d0be583e487dbba101eda6e5c4a0da4eabbb4c15", + "alphaBounds": [ + 0, + 0, + 128, + 128 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Ground cobble surface can support rail setting; verify tile seams and pairing with rail strip.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_trolley_pole", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_trolley_pole.png", + "runtimePath": "env_prop_trolley_pole@1x.png", + "sha256": "59528d523a71b8054fc41a09ba0d414fffe395b51a379a3e562b0c1ee96161b1", + "dimensions": { + "width": 32, + "height": 160 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "59528d523a71b8054fc41a09ba0d414fffe395b51a379a3e562b0c1ee96161b1", + "alphaBounds": [ + 2, + 52, + 30, + 107 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Pole occupies a small part of tall canvas; register base and compare height with municipal camera.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_signal_mast", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_signal_mast.png", + "runtimePath": "env_prop_signal_mast@1x.png", + "sha256": "1a3045c0580d7beb57f3597b553e602a44edd18acfd10c7bf6222ce2930645ec", + "dimensions": { + "width": 48, + "height": 144 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "1a3045c0580d7beb57f3597b553e602a44edd18acfd10c7bf6222ce2930645ec", + "alphaBounds": [ + 2, + 6, + 46, + 138 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Complete traffic signal silhouette; verify height, scale and depth handling.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_bus_shelter", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_bus_shelter.png", + "runtimePath": "env_prop_bus_shelter@1x.png", + "sha256": "5d3319716842214a4ada7739f30efec05969f5dbe993ba1840aee66c8f50c536", + "dimensions": { + "width": 160, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "5d3319716842214a4ada7739f30efec05969f5dbe993ba1840aee66c8f50c536", + "alphaBounds": [ + 4, + 2, + 156, + 94 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Complete shelter with visible roof; verify shared viewpoint and foreground occlusion.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_parklet", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_parklet.png", + "runtimePath": "env_prop_parklet@1x.png", + "sha256": "0bb6807826f59be3afb0d37d30e2388685b1aeeeb382f203918a7ac0f46848c6", + "dimensions": { + "width": 192, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "0bb6807826f59be3afb0d37d30e2388685b1aeeeb382f203918a7ac0f46848c6", + "alphaBounds": [ + 5, + 2, + 187, + 94 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Complete parklet; verify shared scale and authoritative placement semantics.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_bike_rack", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_bike_rack.png", + "runtimePath": "env_prop_bike_rack@1x.png", + "sha256": "578f9a6f1a4d6976a9e929273326c2f5599557b5e93403bfb30dee74202e5def", + "dimensions": { + "width": 96, + "height": 48 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "578f9a6f1a4d6976a9e929273326c2f5599557b5e93403bfb30dee74202e5def", + "alphaBounds": [ + 4, + 2, + 92, + 46 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Readable rack group; verify ground contact and scale.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_barricade", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_barricade.png", + "runtimePath": "env_prop_barricade@1x.png", + "sha256": "3c09d384d101935d1af7f93d11ed896dc019c17326e99bd78ac6c6c6b8be9c33", + "dimensions": { + "width": 128, + "height": 48 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "3c09d384d101935d1af7f93d11ed896dc019c17326e99bd78ac6c6c6b8be9c33", + "alphaBounds": [ + 5, + 2, + 122, + 46 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Barricade reads mostly frontally; match elevated ground plane and base before adoption.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_seismic_brace", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_seismic_brace.png", + "runtimePath": "env_prop_seismic_brace@1x.png", + "sha256": "4b33ecf6b6bcf77ee9ceb2e784deb9d4a5a8ba4fd8a2afb031d106dbc3f27059", + "dimensions": { + "width": 64, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "4b33ecf6b6bcf77ee9ceb2e784deb9d4a5a8ba4fd8a2afb031d106dbc3f27059", + "alphaBounds": [ + 2, + 4, + 62, + 124 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "retain", + "inspectionReason": "Complete brace; verify mounting context and base alignment.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_motif_phoenix", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_motif_phoenix.png", + "runtimePath": "env_motif_phoenix@1x.png", + "sha256": "a5a4fe20dcfc6733c18fd48477c0d498847700cd15777bce2a447be6a41565a2", + "dimensions": { + "width": 512, + "height": 512 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "a5a4fe20dcfc6733c18fd48477c0d498847700cd15777bce2a447be6a41565a2", + "alphaBounds": [ + 2, + 2, + 510, + 510 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Circular emblem reads face-on; project it consistently if used on ground, preserving motif.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_fog_low", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_fog_low.png", + "runtimePath": "env_fog_low@1x.png", + "sha256": "f772c650585cfea23972afabb8234fb57de78c17845b8304a41377ee3665856d", + "dimensions": { + "width": 512, + "height": 512 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "f772c650585cfea23972afabb8234fb57de78c17845b8304a41377ee3665856d", + "alphaBounds": [ + 5, + 110, + 508, + 419 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "replace", + "inspectionReason": "Two separated cloud-like groups on transparent canvas; not a continuous haze tile. Produce a continuous bounded fog layer and verify seams in runtime.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_fog_high", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_fog_high.png", + "runtimePath": "env_fog_high@1x.png", + "sha256": "17c6ce2595f75fad393c9fd19d50696e989879c7ffc8eecc27acfbef0ccf611c", + "dimensions": { + "width": 512, + "height": 512 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "17c6ce2595f75fad393c9fd19d50696e989879c7ffc8eecc27acfbef0ccf611c", + "alphaBounds": [ + 0, + 147, + 512, + 382 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "replace", + "inspectionReason": "Repeated small cloud-like groups in a row; visible source layout risks repeated strip pattern. Produce a continuous bounded haze tile.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_camera_captain_idle", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_camera_captain_idle.png", + "runtimePath": "env_camera_captain_idle@1x.png", + "sha256": "e6b0e11b0ba1a447585e027a0720de7a11ea7e04b8e882fcf1423b72597ba15c", + "dimensions": { + "width": 64, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "e6b0e11b0ba1a447585e027a0720de7a11ea7e04b8e882fcf1423b72597ba15c", + "alphaBounds": [ + 3, + 3, + 60, + 91 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "replace", + "inspectionReason": "Separate ornate camera family; rebuild using shared municipal materials with persistent boss-owned non-color distinction.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_camera_captain_active", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_camera_captain_active.png", + "runtimePath": "env_camera_captain_active@1x.png", + "sha256": "4ceb2e9d7b6ed3669f929c62789fec5e0fe9f5b924ae6030d67c66e82c7596e1", + "dimensions": { + "width": 64, + "height": 96 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "4ceb2e9d7b6ed3669f929c62789fec5e0fe9f5b924ae6030d67c66e82c7596e1", + "alphaBounds": [ + 4, + 3, + 60, + 91 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "replace", + "inspectionReason": "Active ornate camera family; pair with rebuilt Captain source and retain non-color identity across states.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + }, + { + "schemaVersion": "asset-record-001", + "assetId": "env_prop_rail_strip", + "kind": "sprite", + "productionStatus": "accepted", + "runtimeRequired": true, + "provenance": "projectOriginal", + "license": "Original production for Surveillance Survivor, owner account", + "source": "original://Surveillance-Survivor-Art/env_prop_rail_strip.png", + "runtimePath": "env_prop_rail_strip@1x.png", + "sha256": "ec777b1efeef80119d9eede73a17b4413c92f40e4afa7e29e2a42c0570b73d2f", + "dimensions": { + "width": 512, + "height": 128 + }, + "colorSpace": "sRGB", + "alpha": "straight", + "ownerContract": "presentation-assets-003", + "notes": "Original environment art. Solid sizes are verified against civic-seam-arena-001 rather than resampled: art that does not match its collision box is refused, because stretching a building to fit is how a player is blocked by something that looks passable.", + "observedSha256": "ec777b1efeef80119d9eede73a17b4413c92f40e4afa7e29e2a42c0570b73d2f", + "alphaBounds": [ + 0, + 0, + 512, + 125 + ], + "hashMatchesCatalog": true, + "benchmarkDisposition": "repair", + "inspectionReason": "Rail strip is horizontally presented; map to actual street plane and verify continuity at joins.", + "runtimeGeometryEvidence": "NOT_PRODUCED", + "replacementDelivery": null + } + ] +} diff --git a/docs/review/boot-cycle/README.md b/docs/review/boot-cycle/README.md new file mode 100644 index 00000000..645612aa --- /dev/null +++ b/docs/review/boot-cycle/README.md @@ -0,0 +1,13 @@ +# Boot volume and lace ownership through the revised source cycle + +Status: source-volume range diagnostic, not final art or runtime animation. + +This applies the existing owned tongue/instep/shaft surfaces to both legs at all sixteen revised source poses. The exact source scripts and parameters are retained under source/. render_cycle.py executes their geometry construction and depth-buffered renderer without their one-key export side effects. It archives 32 editable OBJ meshes and fixed-canvas transparent source images. No independent generated boot image or planar texture was rotated onto the heel. + +Magenta in surface-cycle.gif marks only lace geometry. Front and back panels use the same mesh and depth test. The contact diagnostic and four phase samples were visually inspected. A pixel-color count over all GIF frames found zero magenta pixels in each of 32 rear-view samples; front visibility varies and reaches zero at some phases. These observations concern this specific source, camera and sampled poses only. They do not prove all-angle correctness, anatomically valid gait, production topology or final sprite fidelity. The ankle/shaft transition and crude silhouette still require refinement. + +No body, thigh, cloth or arm motion is included. The two legs occupy separated lateral regions; the combined PNG is not evidence of general inter-limb occlusion. Flat proxy colors are not the retained costume materials. Slow GIF playback uses 125ms/frame for inspection; source duration remains 0.5 seconds. Runtime sampled-frame travel and foot sliding remain open. + +Authority: SS-specs d602775 controlled-character-source.md/BP-002/BP-008. Source-only work; no gameplay, active art, renderer or metadata changed. Prior clean core result remains 773 tests in 109 suites. Source export completed with exit 0; all 32 meshes passed the existing lace-group ownership assertions. No new simulator/device test claim. + +Reproduce with Python 3 + NumPy + Pillow: render_cycle.py. Source meshes, transparent frames, source samples, recipe, render record and visibility observations are in source.zip. Next is material/shape refinement and full-character depth/cloth review before any runtime admission. diff --git a/docs/review/boot-cycle/hashes.json b/docs/review/boot-cycle/hashes.json new file mode 100644 index 00000000..3b658c15 --- /dev/null +++ b/docs/review/boot-cycle/hashes.json @@ -0,0 +1,95 @@ +{ + "render_cycle.py": "79f1e49a49b6a4feea1fc4911888d315968934208ee5404c9c5c655a38679b32", + "samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "surface-cycle.gif": "0643194ebfd1eca626d7f5989b281cfe5f69b48cbd7f47062d772996226bdc37", + "phase-review.png": "5d38dab2706267793271fd1bec29afaa469a851abfb7e90987204db93dbdcbdb", + "README.md": "d8ec1a35f99292a904c15ca85fa6dbfcbd128e0594c390ccff56597e94ccc06e", + "render-record.json": "1deb2f9e60726231f955b5a252dbaa3cab19c0793670ef49249dfd8941af4d49", + "surface-contact.png": "206b860670ad141d987396c216431bfdda082c1026438f291af43325443688b1", + "lace-visibility.json": "206c22326f72343779f888e87d56d093dbad0f38b3281d8906cf53a970e6341d", + "source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "source/parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "source/orientation.py": "090e7c0861de3c08840ebb8827ea444a9893b9b2461c552be2db3b179e852033", + "source/boot_geometry.py": "5906e901969edd9d21b85b16be28b993d9b44c6a3ecea32f0e88ad5183d17823", + "source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "frames/15-both.png": "f0a1215397ff54c1abb1e090350de1e5265b9643c3efceef14f3b8b70bbf7fd0", + "frames/14-both.png": "5947e4ac0a024cb69a566a74bad335516eb871fb9683d57deda5fd368cd2f1f6", + "frames/08-right.png": "5d2341c787a459876be5aef87645e8b089a8ac27a127cf4d33d10836f1d83cda", + "frames/09-left.obj": "8ffad8d353d65114c45883ecaff33c62963e7dc42989f1c1818a1283c1a8a049", + "frames/08-left.obj": "d67aa1ba0df0b2ea31c657aaa057d9a7a860be94353be3ab3182e1cf4b990246", + "frames/05-left.png": "c3b3764ab16a4236a5d0e266ad8ffd8d928e296f5aa9796d3d0364b277376e24", + "frames/04-left.png": "deaa767f774a5a8a14aece1808b3d036b62e08d02e1d22b11f7be9476d13a918", + "frames/03-left.obj": "35aff99aaafaa3349173f5b7fd6e14dc2b46d1f00138d4fbda339ec3117bea2b", + "frames/02-left.obj": "01b2e4ba2a92ab393cfe64824070a07eef543ebc137c9422c3dfb3ed79a61081", + "frames/11-right.png": "374b1a92e3a84b7d6889cc80f1fc09ea40c0595f6a8829d2f5bc411d5bc19a87", + "frames/05-right.png": "fc1f7a417be30ad467e18b8228446c952104b0d989bfc8a5c1090deb9e045b22", + "frames/02-right.obj": "3d694ad8e91944746abdf9b7e4a31108e93c8ef365c2ae63c2294e1ae0892e47", + "frames/02-both.png": "04755c22617a9f1ad60f99f76b863f259120224d2aab218a536cd5eca4353f87", + "frames/03-both.png": "cf2f8d3cb010336f73374d466ca21cea2075648d0450c24c04a6224674ad38dd", + "frames/09-right.obj": "c08dc4afe98d4d2fb1844b57d46e1046e49aaefab301671a69032fcee05421d4", + "frames/12-left.png": "4a2696f669e57f06d3033f03dd2660bdb907a12153b6746558091da0fc07be5b", + "frames/13-left.png": "3b176633d570b85ea2a577f5cce5876468758d3caff87cec6d806b60d978009f", + "frames/10-right.obj": "b1e45c2aa2f1b5fd079bbcf189c3a1b5605346ed4f7d9daba668c1d75b41eb79", + "frames/04-right.obj": "b6bdf8ff06629bc7f145fbb69d42246549214766adc0009244735bbe3ce21941", + "frames/08-both.png": "3d580b1269fe965a8ccdd8076bfec17c94273464ac42f8f3d6d975b78d74d38c", + "frames/09-both.png": "611542e77f2f386f668751de1f83ac23f9ba212a0a2eec5b87e3eb8b834006c6", + "frames/03-right.png": "10741799c2c4109efb926652913537e8bc88610a946fa47ebcf181a4e432712c", + "frames/14-left.obj": "f9d21bc2fec209fd84f15814a67b33d44d358d6b6d45fc0327df428e57236feb", + "frames/15-left.obj": "8deb2ed892970f6756c73a1bc51ea7323aa3e13f1f80cb7c3366f57b9c50163f", + "frames/05-both.png": "a33ea3c9fcda5837b88cd0907277f141dd081a8c01ee4f3ce8da99b0f3fdf97d", + "frames/04-both.png": "63c20a81ca54bdc9d7c6f183824f9ce42cec23e3185cdd1376649c071222a106", + "frames/09-right.png": "429623aafb50472f9b3d4eca6b014a1262463e8cf8fbf3c0054ce89fe394fc88", + "frames/15-left.png": "66879e58405f4fdf14c4f28bbee0314a1c7507a9aa4fcf14c1ecf4b3d8afb38f", + "frames/14-left.png": "9d6d722aeb2e86dd048ec2d4857e34c4fdb54da6f19b26955ce5af11b49ee509", + "frames/04-right.png": "e275cfa54d3287e97b82d1ef33be862ae486bd6c4b1dc5e68e2a4699a951cb53", + "frames/03-right.obj": "fe4d99be6112c835d2b2c616914b6353a445406e1013625385b4df41b3b30db0", + "frames/13-left.obj": "19584743be60e31a3803455f6810e372c7e168b0b073242c291e5e5e657442f9", + "frames/12-left.obj": "5a320ca1444f8ea70e15c521fcae9a4d0acb8200571cd04ff4f9b7fcb9351def", + "frames/10-right.png": "96e6f967d43a9b60254e3505d19cef98db806d0a2b2e1be51453f135d2186c85", + "frames/08-right.obj": "afad366cc93eccd2e757c1ad155431dddf657aafe4f3b933e182f2cbff4907c7", + "frames/08-left.png": "8ac2f81a9c8fdfc4a00a5bc68baa6d6db6d71328956cdd68e3382426692a5110", + "frames/09-left.png": "0862696c3f10a637c53c34f67f1a06b86b96f4d8baa0ba3cd1c3b968406da283", + "frames/12-both.png": "16c3f743819bfac6abdd2c120f2ae3f2ee1dbce47d358394a4fd0373046a01da", + "frames/13-both.png": "da7a51346100ea1198bbe2d1d6d2272d8094f1557e83ae55c9bcd297846459e4", + "frames/05-right.obj": "6cb86c88e818adf34ab4218f0be2b8035e386c4f674dbf2720e5302cf54f3be5", + "frames/02-right.png": "d210706ac0957c9aa65dc1dbff845e4965dde97f21ebc8d32b178e4619dbb695", + "frames/02-left.png": "cac8124e3b77b33dcda52adac9e1b76f73a2c5300364d5de44d577ccbb81a009", + "frames/03-left.png": "7a6eb0bcb86ea6066f6f5b6a18aba87622a00bc5f2bd92846cb25131ded14c6d", + "frames/11-right.obj": "39b09dbe75fa6483f0263a9a01696a2333f76ae15af3e0143be9db135341bb3d", + "frames/04-left.obj": "6fc22a70d5babad5231b996c89f05ca8bcfb801960f41485e264bdf4e758a9f2", + "frames/05-left.obj": "061c5a6aac0ee20794f9a78e2f4f3f4081535157e816f0b04bd8ae480bf69e1c", + "frames/11-left.png": "52ddda604b40808d9ceccc8c740f53fcd87bbbc2761bbab51ba6a27775118635", + "frames/10-left.png": "e222fd3832e8cf00b135a57234086b487f64cf8986d4bb9fd4fe517e916d474f", + "frames/14-right.obj": "e98f4e72c6600009181841f122dfcd032c6dbc5013941e612e0d2022b01594a0", + "frames/01-both.png": "c3c281016f4cb4808826f00b710f92f65b29c42e5372de1d98ae69deb1230587", + "frames/13-right.png": "b2b21b5cde0cd82a04260973e86eb205fde59bf5f802279afbc3c1ccb0de5bc0", + "frames/00-both.png": "066ea50db64679b68dd1619c1520c2d932c38e91e27371dfcd2d8ae31d7a6caa", + "frames/07-right.png": "9ff2374774fd96a75d62caf339a4064026ae3f399247de9fb06ad5e58fb7e551", + "frames/00-right.obj": "ffc9cf4533da7f1f3c372409ab0ec6b7b1b35a226f6ecaf34aa208b1d369cfee", + "frames/06-left.png": "ba3296bc5b7d151f43d692750c29a80ef99e40f4bb54a53d8a68a9f9fc2c7b10", + "frames/07-left.png": "6f0e88852d676f02a0e3cc173b24f2f8cea1050e6f9a789ee4b7218af6e45a9e", + "frames/00-left.obj": "d34c79c392ea3c83eb8e94a05ef36d3786351f7ea5fca58880748017b3af530c", + "frames/01-left.obj": "cf9953429b7e7c46bc7f602ce26a49e1b38ebf9f14db8f7d8d1a60f3f43a0687", + "frames/15-right.png": "0ecec3bdeb15a1481856749ed0b7b03ae778ab6d9148904190534368c2592180", + "frames/12-right.obj": "e15ec006e8992efed5e4c41ca328ab159f6113ed5d3fff5a307770853f5fa30e", + "frames/06-right.obj": "c7b322125af6e366104ad7fbeddb4a0c485c1e9fa51597c92782950b3045f861", + "frames/01-right.png": "e1257f76530d6ebf68716043d191291889644c23db731ac82dde278262c70d63", + "frames/01-left.png": "0c69e2b84946604e408b525f12b2b3a5e670bd2c5580b17c7c7f222723af942e", + "frames/00-left.png": "ba70fc75148b008fadf89782b614dbb82ed9642be598eab7ffd7e18104368dd1", + "frames/07-left.obj": "1180f4f43207fc729db9c5562c9f52b41ccdfdb324fe0913f2e724e28e105cab", + "frames/06-left.obj": "05d54e9b398eb216d047eefdbd775b2d109ac2523b4bd9c65296aba10611bae4", + "frames/06-right.png": "774d2a1d9afa0acf603b9d51f4073291046b1c7fb1516eb9fd58f59728443782", + "frames/01-right.obj": "0e7014fd204b2bb136920c1d0637624dab45f14748dda8e8ca67fe7438e57ebb", + "frames/15-right.obj": "6fe892284b574fc050303847f295e686ae8eb34fcc655f774e8db5182ea16331", + "frames/11-both.png": "e44636dd34180068f1dc5a74db71bfb31aff2acb7e0ecb3aa4f772d0f9cecd9d", + "frames/12-right.png": "6be7fc5f2adce283961b0dc7499d6f7ff7414db28a591d3d1f43fcf7cffb2203", + "frames/10-both.png": "e600a4592fc95adff573d000c645017c85700d88a07030f03151988f8143823b", + "frames/10-left.obj": "49e49fcf47fc0a4d563b0347b02271d6a93e228b5efc5812e5d58f1a4db9bdef", + "frames/11-left.obj": "edcc9651d722eafe36252322a0562c3cdaf223b6b0c2ab5cbc601646b72cc210", + "frames/06-both.png": "01b3aea8bd891802a743e40f6f4d5c07dfd9467795616cbe0fe158c4fd7a9274", + "frames/07-both.png": "c7fd51c3cf4848ec7fd66227bab4f01942d2a2e0b705c71e7e0a1f7d8103a723", + "frames/07-right.obj": "7d902aa5e88a1857d078407812cf3bb752a4ddc0623456e64a733bfed689d4e9", + "frames/00-right.png": "63216ec810bb6ea299f88511fe414f841771f8f855982ca51b6e790d6e9e7021", + "frames/14-right.png": "211f52410c81375bd1d027a988f488c64ed6b8f3d379d16633029046b5e2456e", + "frames/13-right.obj": "cdd350f7e6037595be687f16cbfc313819f15200220bbd900c56e0c4029189c4" +} diff --git a/docs/review/boot-cycle/lace-visibility.json b/docs/review/boot-cycle/lace-visibility.json new file mode 100644 index 00000000..3f65a2fd --- /dev/null +++ b/docs/review/boot-cycle/lace-visibility.json @@ -0,0 +1,114 @@ +[ + { + "frame": 0, + "rightFrontLacePixels": 143, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 16, + "leftBackLacePixels": 0 + }, + { + "frame": 1, + "rightFrontLacePixels": 80, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 108, + "leftBackLacePixels": 0 + }, + { + "frame": 2, + "rightFrontLacePixels": 19, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 129, + "leftBackLacePixels": 0 + }, + { + "frame": 3, + "rightFrontLacePixels": 11, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 130, + "leftBackLacePixels": 0 + }, + { + "frame": 4, + "rightFrontLacePixels": 8, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 132, + "leftBackLacePixels": 0 + }, + { + "frame": 5, + "rightFrontLacePixels": 1, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 144, + "leftBackLacePixels": 0 + }, + { + "frame": 6, + "rightFrontLacePixels": 0, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 155, + "leftBackLacePixels": 0 + }, + { + "frame": 7, + "rightFrontLacePixels": 0, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 156, + "leftBackLacePixels": 0 + }, + { + "frame": 8, + "rightFrontLacePixels": 16, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 143, + "leftBackLacePixels": 0 + }, + { + "frame": 9, + "rightFrontLacePixels": 108, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 80, + "leftBackLacePixels": 0 + }, + { + "frame": 10, + "rightFrontLacePixels": 129, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 19, + "leftBackLacePixels": 0 + }, + { + "frame": 11, + "rightFrontLacePixels": 130, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 11, + "leftBackLacePixels": 0 + }, + { + "frame": 12, + "rightFrontLacePixels": 132, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 8, + "leftBackLacePixels": 0 + }, + { + "frame": 13, + "rightFrontLacePixels": 144, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 1, + "leftBackLacePixels": 0 + }, + { + "frame": 14, + "rightFrontLacePixels": 155, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 0, + "leftBackLacePixels": 0 + }, + { + "frame": 15, + "rightFrontLacePixels": 156, + "rightBackLacePixels": 0, + "leftFrontLacePixels": 0, + "leftBackLacePixels": 0 + } +] diff --git a/docs/review/boot-cycle/phase-review.png b/docs/review/boot-cycle/phase-review.png new file mode 100644 index 00000000..79662f56 Binary files /dev/null and b/docs/review/boot-cycle/phase-review.png differ diff --git a/docs/review/boot-cycle/render-record.json b/docs/review/boot-cycle/render-record.json new file mode 100644 index 00000000..85da17e1 --- /dev/null +++ b/docs/review/boot-cycle/render-record.json @@ -0,0 +1,368 @@ +{ + "status": "OWNED_BOOT_SOURCE_RANGE_DIAGNOSTIC", + "frames": [ + { + "frame": 0, + "side": "right", + "time": 0.0, + "mesh": "00-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 0, + "side": "left", + "time": 0.0, + "mesh": "00-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 1, + "side": "right", + "time": 0.03125, + "mesh": "01-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 1, + "side": "left", + "time": 0.03125, + "mesh": "01-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 2, + "side": "right", + "time": 0.0625, + "mesh": "02-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 2, + "side": "left", + "time": 0.0625, + "mesh": "02-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 3, + "side": "right", + "time": 0.09375, + "mesh": "03-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 3, + "side": "left", + "time": 0.09375, + "mesh": "03-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 4, + "side": "right", + "time": 0.125, + "mesh": "04-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 4, + "side": "left", + "time": 0.125, + "mesh": "04-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 5, + "side": "right", + "time": 0.15625, + "mesh": "05-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 5, + "side": "left", + "time": 0.15625, + "mesh": "05-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 6, + "side": "right", + "time": 0.1875, + "mesh": "06-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 6, + "side": "left", + "time": 0.1875, + "mesh": "06-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 7, + "side": "right", + "time": 0.21875, + "mesh": "07-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 7, + "side": "left", + "time": 0.21875, + "mesh": "07-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 8, + "side": "right", + "time": 0.25, + "mesh": "08-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 8, + "side": "left", + "time": 0.25, + "mesh": "08-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 9, + "side": "right", + "time": 0.28125, + "mesh": "09-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 9, + "side": "left", + "time": 0.28125, + "mesh": "09-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 10, + "side": "right", + "time": 0.3125, + "mesh": "10-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 10, + "side": "left", + "time": 0.3125, + "mesh": "10-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 11, + "side": "right", + "time": 0.34375, + "mesh": "11-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 11, + "side": "left", + "time": 0.34375, + "mesh": "11-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 12, + "side": "right", + "time": 0.375, + "mesh": "12-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 12, + "side": "left", + "time": 0.375, + "mesh": "12-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 13, + "side": "right", + "time": 0.40625, + "mesh": "13-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 13, + "side": "left", + "time": 0.40625, + "mesh": "13-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 14, + "side": "right", + "time": 0.4375, + "mesh": "14-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 14, + "side": "left", + "time": 0.4375, + "mesh": "14-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 15, + "side": "right", + "time": 0.46875, + "mesh": "15-right.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + }, + { + "frame": 15, + "side": "left", + "time": 0.46875, + "mesh": "15-left.obj", + "laceFaces": 12, + "laceGroups": [ + "laces_instep", + "laces_shaft_front" + ] + } + ], + "durationSeconds": 0.5, + "previewFrameMilliseconds": 125, + "productionArt": false, + "materials": "flat authored proxy colors; magenta diagnostic marks only lace surfaces", + "renderer": "orthographic depth buffer; same source mesh for front/back", + "limitations": [ + "No thigh, torso or cloth animation", + "No costume-material fidelity claim", + "No whole-character inter-limb occlusion validation", + "No runtime travel test" + ] +} diff --git a/docs/review/boot-cycle/source.zip b/docs/review/boot-cycle/source.zip new file mode 100644 index 00000000..230e662b Binary files /dev/null and b/docs/review/boot-cycle/source.zip differ diff --git a/docs/review/boot-cycle/surface-contact.png b/docs/review/boot-cycle/surface-contact.png new file mode 100644 index 00000000..f19110c8 Binary files /dev/null and b/docs/review/boot-cycle/surface-contact.png differ diff --git a/docs/review/boot-cycle/surface-cycle.gif b/docs/review/boot-cycle/surface-cycle.gif new file mode 100644 index 00000000..143db022 Binary files /dev/null and b/docs/review/boot-cycle/surface-cycle.gif differ diff --git a/docs/review/boot-detail/README.md b/docs/review/boot-detail/README.md new file mode 100644 index 00000000..63dbd100 --- /dev/null +++ b/docs/review/boot-detail/README.md @@ -0,0 +1,13 @@ +# Retained toe detail in the whole-character source + +Status: source material refinement, not final art admission. + +The high-resolution retained lead-boot image now supplies toe leather and the visible front sole edge in addition to the forward tongue lace patch. Mapping uses foot-local coordinates, so the paint follows the authored boot through all sixteen poses rather than being pasted in screen space. + +The first broad upper-surface mapping included rear upper faces and sampled lace pixels there. boot/rejected-rear-paint-leak.png records the rejected result. The corrected mapping requires a source face center forward of local Y=-3.5 and an upward/forward normal, then constrains the registered source image vertical sample to rows 350–374 (toe region). The existing lace patch remains exclusive to the forward shaft tongue. The rear contact views and full-character material comparison were inspected after this correction; the rejected rear lace fragments are absent in those inspected views. This is not a claim of exhaustive all-angle textured-surface acceptance. + +The toe is closer to the retained painting than the previous flat proxy. Shaft/heel detail, transitions between sampled and authored material, repeated calf cloth, proportions and whole-character motion quality still need work. Raw lighting is baked into the retained toe image, and the rear is still authored plain leather. The benchmark has not been met and no source frame is admitted to runtime. + +Authority: SS-specs d602775 controlled-character-source.md/BP-002/BP-008. No new gameplay, active renderer/art/metadata or spec pin changes. boot/material.py and assemble.py completed exit 0, producing 32 boot renders/depth arrays and sixteen distinct whole-character poses. Latest clean core validation remains 773 tests / 109 suites; unchanged runtime was not retested for this material-only study. + +Reproduce with Python + NumPy + Pillow: boot/material.py, then assemble.py. The archive retains the exact source art, registration, geometry/material recipes, layered body, poses, outputs and rejected comparison. Next is remaining boot construction/material refinement and full-source motion review before the existing facing and renderer gates. diff --git a/docs/review/boot-detail/assembly-record.json b/docs/review/boot-detail/assembly-record.json new file mode 100644 index 00000000..25f04bb8 --- /dev/null +++ b/docs/review/boot-detail/assembly-record.json @@ -0,0 +1,214 @@ +{ + "status": "WHOLE_CHARACTER_SOURCE_CANDIDATE_NOT_ADMITTED", + "cycleSeconds": 0.5, + "previewFrameMilliseconds": 125, + "controls": { + "shoulderDegrees": 6, + "elbowDegrees": 4, + "coatHemPixels": 4, + "bodyBob": "derived from authored pelvis height" + }, + "controlAuthority": "Authored candidate values, not research-derived acceptance criteria", + "depthPolicy": "shared per-pixel source depth for both boots/calves/thighs; coat and torso retain front-layer policy", + "limits": [ + "Thigh plus authored anterior knee-cover surface; rear cloth is provisional", + "Torso/coat are still layered rather than part of the lower-body depth buffer", + "Boot proxy materials remain below benchmark", + "One facing only", + "No real-renderer world-travel test" + ], + "frames": [ + { + "frame": 0, + "time": 0.0, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 61, + "finiteDepthPixels": 7192, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "0eab3b89c7e782cb7011b89d5d4093784224196b0c2df5c40a6f9c09972e97e0" + }, + { + "frame": 1, + "time": 0.03125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 176, + "finiteDepthPixels": 6462, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "bfbcbb29a6bbd1427dda9c8e86ffdbd9dec919751fab4b7f89e480854e8b07f6" + }, + { + "frame": 2, + "time": 0.0625, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 333, + "finiteDepthPixels": 6336, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "d8ece5d6d639591af39d0677e0f3dedb0145e4dffc9d5cf852b5b48983bdaeef" + }, + { + "frame": 3, + "time": 0.09375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 35, + "finiteDepthPixels": 6368, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "95351c8ed1bfbfc5d31ce3d0070d595992ec8bf95611b73199f073cd920cb780" + }, + { + "frame": 4, + "time": 0.125, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 37, + "finiteDepthPixels": 6618, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "c7c15f5e9879a3e5a702df6b773520c3522f029847b50e87885d80bbcbdca540" + }, + { + "frame": 5, + "time": 0.15625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 52, + "finiteDepthPixels": 7288, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "c91f03cc78922e8fc24d585cd9ffd6bc17a58331234bee1bf8984a94bba0b043" + }, + { + "frame": 6, + "time": 0.1875, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 98, + "finiteDepthPixels": 7742, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "e72ba0f92601f31ebce5aa183a52acb2b8ee5bdf8325ca8bdee28d68c0249fcd" + }, + { + "frame": 7, + "time": 0.21875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 173, + "finiteDepthPixels": 7780, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "893b4051afc08354263f88cf588eb34881e64fb5112ca836961ffbfc2eb9ce01" + }, + { + "frame": 8, + "time": 0.25, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 64, + "finiteDepthPixels": 7192, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "ed4fc4140680ffb8464a3720db89a7e7a9d85a1787920b1f7663a426df890146" + }, + { + "frame": 9, + "time": 0.28125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 178, + "finiteDepthPixels": 6462, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "7fdeed259f8206735ba17b466572ceabbb0af3fcc26040e61984dc301b394e9a" + }, + { + "frame": 10, + "time": 0.3125, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 338, + "finiteDepthPixels": 6336, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "08147e9b1fa4b094fd8ca108fbbae99d3975104afda4b2b38e0911c11d49156a" + }, + { + "frame": 11, + "time": 0.34375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 36, + "finiteDepthPixels": 6368, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "1d6034e069388f945e0eeac1f45562c61741178edb6edacca776ede9bd3db762" + }, + { + "frame": 12, + "time": 0.375, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 37, + "finiteDepthPixels": 6618, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "317bacbcc4c6a4eac8231b6f6612a46c073a9b7883a419ede82298fb36f200a0" + }, + { + "frame": 13, + "time": 0.40625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 53, + "finiteDepthPixels": 7288, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "1f712a1ec0bbd1b878e5505191dd4e4d77a8ca14b2d2503ad44bf6cee2268fee" + }, + { + "frame": 14, + "time": 0.4375, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 103, + "finiteDepthPixels": 7742, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "3b17bad12dc4308bd7f18b568dc4bc7d9693bd0536390031b778468d86d37adf" + }, + { + "frame": 15, + "time": 0.46875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 182, + "finiteDepthPixels": 7780, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "ea6186493040120fe5538eb98cbe9a1392284b10f7bad14b808c5a97a5d10f5b" + } + ] +} diff --git a/docs/review/boot-detail/hashes.json b/docs/review/boot-detail/hashes.json new file mode 100644 index 00000000..69b9c075 --- /dev/null +++ b/docs/review/boot-detail/hashes.json @@ -0,0 +1,148 @@ +{ + "material-comparison.png": "9d9d96fe5e09b53211e4204f3ae6f9d2d0a8c712d79412c0131659507810f8e2", + "thigh.py": "21e3bc693b6efc0cef9975337a5c892e2d52defac83a51315eec2d486f540e4a", + "assembly-record.json": "382f5d258aeef55c9a38b5350b25f791ca5b81a9e3c282dee8eed945021a20e4", + "sixteen-character-poses.png": "50df9be2c4c0dc77bab20b1e72cbb90be93ac148856eccd14a8970db6809c1a8", + "assemble.py": "f9571e78ed1f703fc3a8ec23682a5c628af4aa8f92db51fcae662dd35e09303b", + "README.md": "50d61d6087acdb95ee57ea0dcec25d48114aa9479140d86dd1f071a1eb06c32c", + "slow-character-cycle.gif": "4de936388d5df4eee5c7260a4f6e59f6e2f08dfb8aaabd053c034ed64be74738", + "check_joints.py": "48c56b165a9c7fe993945c0b62a6b5288e913dad464b2f16e7d1dc1461391a4b", + "boot/material.py": "15a52aa263fb8d8871a4b77016cfa4d72c1be3f2842c9404fee56ff232157df1", + "boot/rejected-rear-paint-leak.png": "acc1565a740c9d6a5816f2a74b17663e585cfc5e7ae2b40b0f5bf11620e4ff78", + "boot/assembled-key.png": "b11f5e5922bb91aaa429aedefd7aef935284d05c3dcd10b4ba595b815d6d9650", + "boot/samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "boot/material-surfaces.png": "6468333fb354781875f2c6138f3abad59125de622b97c5dc3c23aeb85b75f0de", + "boot/registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "boot/retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "boot/material-record.json": "dc83bd2082c9234fe9ffe84be58d0c22739fe80f3ac07e8247639a18c99a9586", + "boot/source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "boot/material-cycle.gif": "4f06009f1b7fb9137a780a5a68807fd03f972dcf2ccabb3e1ead2d686bd1f796", + "source/samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "source/body-rig.json": "c1d53f25495c4e17bd3f1f4df1b0e0e87bd047872420625642a88b8cdc26530b", + "frames/14.png": "d10f64494f7b0150afcbfe7f53844f6592c27946b353089e6a91a9b577847c1c", + "frames/00.png": "c368cfa6e03ec280d614119635308231a101aee2203d08fd2903232f0845580f", + "frames/01.png": "d1557ab9ce52945b133551b47b689368118378d30186d0f0aef0d14f780e2f46", + "frames/15.png": "2a90a79658dfd13516d155dc7b24fa95a8ac5caad7f4653aa8b3835ea463e62b", + "frames/03.png": "3aa10232bad562989815a1446b4b5d352fecc65d6829684d784a69adaf24f1d3", + "frames/02.png": "40bbfcb10fe2405a14d201752a194c42f7d2e9be50bcb3fa97df1fc1333d056f", + "frames/06.png": "f6e42e53fc32ac64a5e0ce60919c7502d42ce0307c63051c3ee85426749f12f6", + "frames/12.png": "0bdd867ffb7dd0981c29a564de819b65e3d352585399776ec5251ac3a0b88316", + "frames/13.png": "1b9c72f07951a93dda6040367c2f8211f90ec45084bcfbc5e2f451ec3edcc388", + "frames/07.png": "6936f3fce06ec16409601230ab2afed42514df4f2deea195c15ef93343a17870", + "frames/11.png": "0088c79fda2db9270d638e115da0aa9cc76f5d2df94e386b60092ef50af4a007", + "frames/05.png": "636ff096b566b7a1c1486e3fe12ef3b5887e62483d8b4606965fc627d9dfd02d", + "frames/04.png": "cbad6c16e387bad88ced62b28b51f5cf022f3b7ae2a33737619a4cd74d8f3162", + "frames/10.png": "f048471accac7e8a17c171deaee8a6ec79daf2f7ad08f40c0afdd8f629d9728b", + "frames/09.png": "ad2cf36f5ca0d03d9ef64fa1617bb844bab99cba2d55c587d1197eebcc7fd5ef", + "frames/08.png": "96f33dc03c040470e310d33cb1abce949d9e0fbc735638a3154f04ceee29f105", + "source/body-source/left_boot_hidden.png": "703a1b66afb35559cafd60231df1ba6439550fd4ef0da7e33e491b10004d56da", + "source/body-source/left_shin_boot.png": "58eb39c047ebb4f20aaae08ec63a6052624d54f5ea82bb2b7ca60f4847843593", + "source/body-source/right_thigh.png": "92bb25e717a8704dd6147e3d42d61a039a16e0a3fd8953b6b4838b8171599085", + "source/body-source/left_thigh.png": "d56129dd205b54dcf6a8a55a65f2eba79bd6ed062fb03db85cea4a8a2aefc4bb", + "source/body-source/left_knee_hidden.png": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29", + "source/body-source/left_elbow_hidden.png": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac", + "source/body-source/left_shoulder_hidden.png": "635f66fb1d4198ea9b3d8ac719e1df8aacedd1cdc2b9e44c4c3c219b653fc1e5", + "source/body-source/right_upper_arm.png": "c033da2620b7cf8fab8d06c34a344005bfed86f8967004a5be0a33306c0c8690", + "source/body-source/left_coat_tail.png": "932a93161bd638df053f33b58d82a57e722eaa60cbadc95a71274f8a42d948f4", + "source/body-source/right_forearm_hand.png": "64eeb0b1ce4c40176b84b4c9153e42f2bc2d341b4aa480fc879f9e1ebb6cffbe", + "source/body-source/right_boot_hidden.png": "e5f9d6d93d2baac11c0d3b72ecfb32ce36e921b084317a05687c25a4a3a63a52", + "source/body-source/right_shin_boot.png": "4105dea24e6add878d02a7b4afa77de277c48780ac7ea37c058d1802c49243c5", + "source/body-source/left_forearm_hand.png": "168ac896495617d0d076c40c0d297affd8bbf6e2c645b18b28d3362d37bd51a4", + "source/body-source/hood.png": "061546675424a684d3470974a611d886bdde8192b41d09c5eaf6604cd4bfd183", + "source/body-source/left_boot.png": "162f9554e7b38a3d33dd58683c4021a4da91a79ff0aaf1c4c2639b1de6b0f232", + "source/body-source/right_boot.png": "60ecc1a390005e0ce07a622fac7e88da8d074b603e363549fd33eb35656e3559", + "source/body-source/right_elbow_hidden.png": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4", + "source/body-source/right_coat_tail.png": "585f21888a103ec52d494d1de1c992cba654936215f097a7ae7ddc95e870339b", + "source/body-source/right_knee_hidden.png": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288", + "source/body-source/torso_coat_equipment.png": "6fc702c5b5c4f1ad123d3862da795d539190dad9d609d49923f2bf3c9d952baf", + "source/body-source/right_hip_hidden.png": "5d541656fd4817ba5536f4fab469fecb42cde3ae2487a8e18ec6262da0afade1", + "source/body-source/left_upper_arm.png": "47fd20562122a6358a1b0528fc12818a53c4868499d684cf6e7fdfe7b6680d24", + "source/body-source/right_shoulder_hidden.png": "bc570fe28204d21d1924c8f416a5a2b5f058db9d3ac14ae452d59a27c170da7a", + "source/body-source/left_hip_hidden.png": "78648454e0f8abba6b1c4deb7880ed589a1baf35732e015733c851632812b49a", + "boot/source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "boot/source/parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "boot/source/orientation.py": "03f31bc77c824d8cd4ad2a40f806e2181e6f952b40567974314185d55b566879", + "boot/source/smooth.py": "2563ff9a6e234c4bcec250e69b8e79f2261a9efaa04937f27312c440b76d0c5c", + "boot/source/boot_geometry.py": "53f60cca21881c09cfa9a43db672ce4dc81c214f682428e73946ebe6e99143b1", + "boot/source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "boot/frames/15-both.png": "b51161f11bd3c4f88e46615ae4dd4875d173c248e76155a90e658c62c5139a0a", + "boot/frames/14-both.png": "87dcbabeca27ce6ab96718fa054d497b155b9768f4ba293dbb4dce15a3a4aa0d", + "boot/frames/07-left-depth.npy": "18c8bc8c7c08d19b179217651115c411c494f0c79b1a6991c5e1b8e0a555285e", + "boot/frames/12-left-depth.npy": "0515e6833b353a4581448f6df6ac45a2f36bf24a3aee2b5fe2bc9d1503f9bca8", + "boot/frames/08-right.png": "8db2805f70d9478f46e8ee1978a5c48dd46fba1527c1724bdd881d60bbf19de1", + "boot/frames/01-right-depth.npy": "892a279449190b82dd3c720cf21e8434b206441e82f00e38b436fc8d62330df1", + "boot/frames/08-left-depth.npy": "e03e61ea4bc3bdfc0e1a79743d916a59873efd789bdb44602d68095e4122751c", + "boot/frames/05-left.png": "1d121ebc6ff480f3eedfc47f58a8179d233c8b899b1618ce7255df2004a0eb02", + "boot/frames/04-left.png": "982cda044df20a70063a23fb392683e94f91995500be4643f71a8dbb66a3c969", + "boot/frames/11-right.png": "fa43ed3ebaa73417718696aa7fcd926ba09ca3c35de2b0cd8b5c907b75fb2109", + "boot/frames/15-left-depth.npy": "6988ebd45d559ea1068fe5103f998fbf83a77d48303a04c263557f15b9b3af46", + "boot/frames/00-left-depth.npy": "a310d282d9811619ad830c036fe48f767a528a34a4c6ebcc2a80f13fa00bfa0a", + "boot/frames/05-right.png": "1c9af9b24b9175b3f4f0620796ca63f3fa6c96c1707b7c9b2b7d08e0aa73b907", + "boot/frames/01-left-depth.npy": "af6398dd4e5920ffb6b071376c36562abb26325b647dbe040f06d38b9c26aa35", + "boot/frames/14-left-depth.npy": "ecaef02ee3fbbd6fae4abd6fbf135e810c074cc0eda501d309ca6b23d19fc4c4", + "boot/frames/02-both.png": "21d9d37bd7bf92c4460cf3e946180c15eaf7d9689bd8a1857ac4fa554d20194a", + "boot/frames/03-both.png": "7c4e1e9b40a8bbbd04ef8bcdc19430826d282477302df15cae9dda1c0499e1ca", + "boot/frames/10-right-depth.npy": "1552bc5db67aba59efc13d479181e6549b4bf1e23b5d966f070cec1c865323bf", + "boot/frames/09-right-depth.npy": "dd23ae0ad70ce2669332e1704825521b8cd3c568cafb3f6e5131375d93811f7e", + "boot/frames/09-left-depth.npy": "2b2312148d09a895b237023cec0278364384e1330ff00b40b7390b1e507b804e", + "boot/frames/12-left.png": "206e0f3531d7dc37ebe1390d1cde11cac94cac3cd80e4f7421d2f8e5aeaec5da", + "boot/frames/13-left.png": "81f002b6b1d60efb79e6043cf6539441d1b200934993d2a6db1446e60c1ff0b1", + "boot/frames/06-right-depth.npy": "2d5a859520f001ff8ed9d0bd6c9010058c77c26b6d9bb4b48dce8405bd95e2d5", + "boot/frames/13-left-depth.npy": "2cf373b6507f2dea471c1844534343f26f322c8fd8e6f87ba242d0e920a8976d", + "boot/frames/06-left-depth.npy": "cd4c4113eeb1d8a4a5c18ffc82153f2d2a63b617072a933e242e0f32cba1bec1", + "boot/frames/08-both.png": "aaa59537f53f6f5e881c32c97d9f0474c26613ac3fe3554c66297eb67cddd68a", + "boot/frames/09-both.png": "7e1e4f991d20de443fc5755bf648f08b392b7e8aaf19f7d3c508f5c492f9be20", + "boot/frames/03-right.png": "6ce0937336bc114fa906d1ed21ebcb4a3247cc4a01511efe1c35036335f76f3e", + "boot/frames/05-both.png": "20876488976b9b111c1821990ecbcca18cf25fa57ca4d0b3cb64132c37588cff", + "boot/frames/11-right-depth.npy": "7c797e41b5d5e2ee2405f0b2b73506ead5d3cdb11a407c9ad37f844e63924f9e", + "boot/frames/04-both.png": "ac4d1ec90a6d7194259df8e2a05884d5627a850bb4a74fcddb1ff996fd2d1621", + "boot/frames/11-left-depth.npy": "982bf177af3674e0653077f906b1d95faa7508e4bc4ee94988ee15328a7b5016", + "boot/frames/04-left-depth.npy": "05652ce0548e9bf95ad671c66d2eeef9dc5e3be166c46bda29d92c2d069fc207", + "boot/frames/09-right.png": "7b6991490e44ab9660f947e6256d97b1e6f0fed3170d6776a05d6037d40ccdcd", + "boot/frames/08-right-depth.npy": "984f488f393f62e02aafed0b61d92177a1e53088ed28430ec4c6e97f78f31672", + "boot/frames/15-left.png": "bd755714ca97d1138f2fa5e026ef8be7f1a2420f91e769bfb07b97f0bfd36c90", + "boot/frames/14-left.png": "82ea085f0096769a17860bb0ecf4359d18b682449e93581d1b350069e020a5f4", + "boot/frames/07-right-depth.npy": "875a41ce82406df39b7394a59476f66bb20036e0e4924e2324f916e91fa9aafd", + "boot/frames/03-left-depth.npy": "2e687fea63cf8bba126b7e470fb698d616c2c83c2a1c73590f47d99b6e1b8733", + "boot/frames/04-right.png": "182a57f0bef4d3aa67388b57f1c51997e41c766aaf862b8d0ec0cab483baec51", + "boot/frames/10-right.png": "e81cde5275c8f13c33ab43e556582f51e95432e279803b73e5c89dea74481ad2", + "boot/frames/08-left.png": "4eab955529b7fde24f62034af044faa1ae3255d84682185c8c1e8196c9590ffd", + "boot/frames/09-left.png": "3c743e921ff34ce35cf69d9ec296113fb3d93fc139ec2131076521f0782e966b", + "boot/frames/12-both.png": "fe4e99ebd44389d1e8e8f626fa5490f28bd1d57c2ea340a9dfa60451b806d1b9", + "boot/frames/13-both.png": "5a8d3c4144fdaf0395b91f8091325d16751fa72bd20b6d683296749ffe65a59c", + "boot/frames/00-right-depth.npy": "97fb41519222e497bbb9d60937062ee48d46e92ec78d8b676ddafcae2520278f", + "boot/frames/02-left-depth.npy": "aedb32ba85b3771c6bb033a3338dec1566d637a0a535e0241803fd477092a007", + "boot/frames/02-right.png": "373f867bb9f03cf1387eb82fdf26b7ac068a744ed24d661f7f36176e2ed830d9", + "boot/frames/02-left.png": "28b7d590d53dee514402ba5c9015c2c6a9c92ab98f830cf7626ce919e0103a72", + "boot/frames/03-left.png": "a197cac1093138fce3fcb1981036ffa7726813280b8675d42f9447d2bc0eb72b", + "boot/frames/05-left-depth.npy": "e0b1df9ddcbb2cb7cacac79a14ed7b4246885f0f0eec183fde14035fc54ba8eb", + "boot/frames/10-left-depth.npy": "9abcf9370f2e3a6b984b1231ae478520120bd4a6e2de092c385084b458afa42e", + "boot/frames/11-left.png": "c93f8a17f18624fe4ca7f086ad6799844979714876dd38c6c39d1df34654aa8e", + "boot/frames/10-left.png": "ed4fb82eeb163cb7e93bac9b3f13602bcbf492183a859bd0a822bdb658f1bce2", + "boot/frames/13-right-depth.npy": "39b84b669df7cf9ad58589a926a268562ee39c9a8d0edd82e8ecc70fa7f3d599", + "boot/frames/01-both.png": "451dac567312b52d50d04045eb44bd17c6afdb9f8efb12c2e173a07932ab031b", + "boot/frames/13-right.png": "a7643aaff737b428a0a83afa49c65fdf05873f9301318c3369d105909bff0850", + "boot/frames/00-both.png": "792c04a614a03abd6b1b985d393dc2b08384b635981634cc5bf6d3bb68a976e2", + "boot/frames/07-right.png": "4e331372bb6bf9dd675a8c0924944cfcc69532705bb4bfd72ad100bf8baa5833", + "boot/frames/05-right-depth.npy": "38d9d9e6df5c3c4244f04d758ee0f16f3310bf18c054615285f68a3a00c6a815", + "boot/frames/02-right-depth.npy": "621721aacf40c8d14c86b64b91a62ddbd44feb6a4ec06f459b5f527d49ef7f26", + "boot/frames/06-left.png": "6e5d849545a89147771edc89102f6b8bd396aab6874bb0c3b237c6f870923e5b", + "boot/frames/07-left.png": "6438dd51feeb6e1d9b3bca321f761e8836796b582ea6d64b8b9c29b71467eb30", + "boot/frames/14-right-depth.npy": "2611d42d3ecf0a2720954af9713bd786655dfaf5df7e7fe38e51d582bd4e5c36", + "boot/frames/15-right.png": "e832fee9790e3ec1727307e00d665625d3cd978e13ad468e09cfd0106b4f2243", + "boot/frames/01-right.png": "4fdfeff4d4ce3eefe6f8a91913a2fe15e0116a71bb4341f29f142f1ded5f90a4", + "boot/frames/01-left.png": "6e7205dbbf7d80f01594f72396844ee6669837a18082b028a2f9215a354a61a1", + "boot/frames/00-left.png": "90977273eec27a906b4509057e1c6c22ef3e7cf7646783b3664fbbd14b71dc9a", + "boot/frames/03-right-depth.npy": "df9fec4007e10b3f594876757ccad16e6bcb958ccda8b3d7289d60bc04552544", + "boot/frames/06-right.png": "e73ed0104ac60f0768a97a595674704528c90b3d436c8a33013697e28cea3e5a", + "boot/frames/15-right-depth.npy": "d095357a7f84c5f59647dbc7c59a42df57fbbca2290ac7964ff08d7ab9005140", + "boot/frames/11-both.png": "08fae345935ecd97d8827c78532ff39ed9fe7db47d66fa3c6aa1bbeb32dd8dcf", + "boot/frames/12-right.png": "c986510ff68f4fc2a34ec3e6267516866f6d9e66e6db70a111211cdb5c8df903", + "boot/frames/10-both.png": "31cb328e7d2827e51f1f19c2ef9473ffca43898c0247eb1cede43a26e858089b", + "boot/frames/12-right-depth.npy": "dec468035f15808f0b05191dbd73fa8f922324656b10c665818407f1ebb5acb9", + "boot/frames/06-both.png": "17cd05098b5b2499491e1fccfb102ed5e0fada15d13e4d2d487c7527699042f1", + "boot/frames/07-both.png": "9fbeb5c44a0bde04927ff95ad082d7016aff1f88bf50dafd2346d024944cc0c3", + "boot/frames/04-right-depth.npy": "bffdd4fc15a955b0271e8c2fbe972b650cb504bdbc5ac32e5a018f2938160168", + "boot/frames/00-right.png": "f50c4347ed4494a40378e490a835eec6e32372652d1f0ecc93e167b85b2f7fbb", + "boot/frames/14-right.png": "772096da6bfc313724dc4fe9299796ac3e24a2d836750866d80cff540de94e11" +} diff --git a/docs/review/boot-detail/material-comparison.png b/docs/review/boot-detail/material-comparison.png new file mode 100644 index 00000000..0c19c514 Binary files /dev/null and b/docs/review/boot-detail/material-comparison.png differ diff --git a/docs/review/boot-detail/slow-character-cycle.gif b/docs/review/boot-detail/slow-character-cycle.gif new file mode 100644 index 00000000..43ab793e Binary files /dev/null and b/docs/review/boot-detail/slow-character-cycle.gif differ diff --git a/docs/review/boot-detail/source.zip b/docs/review/boot-detail/source.zip new file mode 100644 index 00000000..8440600f Binary files /dev/null and b/docs/review/boot-detail/source.zip differ diff --git a/docs/review/boot-material/README.md b/docs/review/boot-material/README.md new file mode 100644 index 00000000..ca10b1a0 --- /dev/null +++ b/docs/review/boot-material/README.md @@ -0,0 +1,13 @@ +# Retained boot material transfer — source candidate + +Status: source-material experiment, below benchmark art quality; not admitted. + +The high-resolution lead-leg source and its existing uniform registration supply the laced tongue patch. material.py maps it exclusively onto the forward shaft tongue, removing the procedural lace ribbons so the two are not doubled. The heel, sides and outsole do not receive that patch. All 32 boot poses use the same source zones and ownership recipe. + +The first render repeated a small swatch per face, producing stripes and excessive baked highlights. rejected-repeated-swatches.png preserves that failed result. The revised mapping derives coordinates from shared source vertices so adjacent faces share coordinates, then normalizes non-tongue swatches to explicitly authored palette values with 18% residual color variation. Those colors and normalization are source-experiment choices, not recovered hidden-surface detail or a new art-direction decision. The original raw source is retained unchanged. + +The revised surface sheet and assembled contact comparison were inspected. They avoid the conspicuous repeated stripes, but the faceted boot shape, simple shaft and weak material depth do not meet the approved benchmark. The rear material is authored from a generic swatch, not the original unseen heel. This is not finished paint, and it must not be presented as a complete character animation. Further work needs a continuous sculpted boot/ankle shape, meaningful seams/sole construction, and full-body costume/depth review. + +Authority: existing SS-specs d602775 controlled-character-source.md/BP-002/BP-008, which permits authored hidden surfaces but does not accept proxy geometry as final art. No active renderer, runtime resource, gameplay or spec pin changes. + +Reproduce: Python 3 + NumPy + Pillow, run material.py. Exact source image, registration, retained contact, inherited scripts, 16 pose samples, 32 rendered boots and material ownership records are archived. Script completed exit 0 and verified exactly one laced-source face per boot. This checks assignment, not all-angle final-art quality. Latest core validation remains 773 tests / 109 suites; no repeat runtime/device test for this source-only experiment. diff --git a/docs/review/boot-material/assembled-key.png b/docs/review/boot-material/assembled-key.png new file mode 100644 index 00000000..a9984cea Binary files /dev/null and b/docs/review/boot-material/assembled-key.png differ diff --git a/docs/review/boot-material/hashes.json b/docs/review/boot-material/hashes.json new file mode 100644 index 00000000..a258a883 --- /dev/null +++ b/docs/review/boot-material/hashes.json @@ -0,0 +1,67 @@ +{ + "material.py": "541074de900059d83e83a98e1ca20de0cf4ce849ba86edc8bf97571abbd14c8c", + "assembled-key.png": "ae9463e23dbb9b4116b188fa1dbf26b105bd7683f1bec740b9821c394bb5ce4d", + "render_cycle.py": "79f1e49a49b6a4feea1fc4911888d315968934208ee5404c9c5c655a38679b32", + "samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "rejected-repeated-swatches.png": "bc2811fb036d8427b75dc14f8bd325c7bf95a7d6c1f65d922773ba82306eed05", + "material-surfaces.png": "b304878d0b616dfc8fd9f11bffecb54789ffe984b6d19be4d06b204efc6eb046", + "registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "README.md": "356bad840d141f2cf46bc4cb959b4827ca80e2093e311f6e24724323b5a0815b", + "material-record.json": "fea02475420d704239a704d11d70d649fd98ca5edd058bbe58a74e057150e610", + "source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "material-cycle.gif": "bcd48920c4194c8b3165a08b10968be37f90855af791064b1734089488e7dd1b", + "source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "source/parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "source/orientation.py": "090e7c0861de3c08840ebb8827ea444a9893b9b2461c552be2db3b179e852033", + "source/boot_geometry.py": "5906e901969edd9d21b85b16be28b993d9b44c6a3ecea32f0e88ad5183d17823", + "source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "frames/15-both.png": "9c7c824f81cdafd825caacf6b8321bba134326680ff76b4306234ea28bc3acc0", + "frames/14-both.png": "618818dfc46fae1bd594c46d7de041887944db4069326c34215321c12b77845d", + "frames/08-right.png": "2debb346e131a35a633ef054bc25657e150b5c134a8d1f69b7a0b269959df3db", + "frames/05-left.png": "7934a9d67ed12ef7db8c140d75306de3b7b91e3a5c225a5c8d30ed80ef3b5754", + "frames/04-left.png": "33c2a6c7c6857582fb7c42a12beba73acead551d77c7ee05882aaff9e946e665", + "frames/11-right.png": "44c2e80cb297b2846d3b687ea6f7b74c6ec47eff6cbbb7093c571e27c5ed8e20", + "frames/05-right.png": "35a521eb1ca88eed17bfcfab5234c2d316ee04ad928f813119e5b646cb4ee5c6", + "frames/02-both.png": "7f10f5f05a830c41fa4fd611cd26d64fedb8ebe1f1b555c5ebeca16c370b480d", + "frames/03-both.png": "40d383e247d68868030f5a7c9709f47cb4f98766a656b8cba10ff95d54a2c0aa", + "frames/12-left.png": "878e6ffcbf33d7167e5b70605762047a6727c2b6280ed5f069aeb3df7c13a36f", + "frames/13-left.png": "d112ba1bb0a7d4d52d1b7cfba8f7ba868f48c8bb0bfa0e4a45268cd019437781", + "frames/08-both.png": "e66266c103693cb42100abae178bc2094c84e1cc6e50a42da14e4b1912cf512c", + "frames/09-both.png": "6ffb10efff7ec23c17f1954458afe30db0b1e56a8a92d817f1f4ece7450d3858", + "frames/03-right.png": "9ac96be3c57730b413fc68be02986a7b948a38aff70e3bb08866be458cbcb129", + "frames/05-both.png": "eab9cc02a46f931f56f6c6ef95af19af4b21f577172b2761758a4a9a8ba3a433", + "frames/04-both.png": "89b6c772d867c36b8694b422d82e6497f95e9e5727232099b148adf965e62a51", + "frames/09-right.png": "10ec2bd6b3947f9c320fb48c60dcc35aa53ffff2c7b7a38664eadf2293d4df6e", + "frames/15-left.png": "75325cfa82182ec6885334f859ea5e1bc30fb9409f9de2efbf246fef17c0dc4a", + "frames/14-left.png": "c4c97eebdbdfd6e9e6904a579f2896029fb0d479a2e5932ee27ea58fdd0ecd80", + "frames/04-right.png": "d03389821697b2b7a862e832d77fd0284b6a11495ecf92cb034f2e57bd88defd", + "frames/10-right.png": "670222b7cf958795ae157a0272a7ecea60a19cd267212531d350412123aea93c", + "frames/08-left.png": "d77e22bfe667bea769207f5b35200eefb79c1960225793f209f046271b55b1da", + "frames/09-left.png": "c5b25ad7fbffa37d8df44be67d8cdb10fed0d2f3aedb31a57dce6dcaff0d91b7", + "frames/12-both.png": "93543e5c156ee7de3191ad6f469d250da61e2f70a7a7c10d9e19ea3f3f81f809", + "frames/13-both.png": "dd54dd74b393af782c1e627489994a70b76afed4f9fc568052b06cf9367685b7", + "frames/02-right.png": "4991e52474b2f58079fe36741f54f796a8dc5159b3db7106fc1ed433ee29fa03", + "frames/02-left.png": "4e1025f9583ae9b68393354f0837f06a4d4d218ea8a5b4d8d21a956d3bb6e3cb", + "frames/03-left.png": "769554c7f5c9511013e8cf10fd2f1594ea949d71edcf3edbd92ffc5b67441ab1", + "frames/11-left.png": "f83cc884d57dbc265074146588bd6a7d84e3c34eb4f296f7e9c3346e22e0d3cd", + "frames/10-left.png": "f0ff941b4644e0450d1be33c906b7d58088971a3363f02b6dadeceee76d8e2f1", + "frames/01-both.png": "40eed0918f1a145d8eda92f35a05d7f058e4300005067f28e8ac709e6ab62626", + "frames/13-right.png": "4f175ec8881941e937e3e186f56f6ed5c2b6b98c0aa650add3ac07d14137e40d", + "frames/00-both.png": "0e05a4408604ce69d7c33a5a3de9209a2e5722c0dd681bb8570cab247f826d01", + "frames/07-right.png": "9a4b4537c87bbfce298dd744b4e10c485cbeb034d670118ef97df7d066073292", + "frames/06-left.png": "851a6ef375524988559552aa8e6f8fdcc1fd5703f67648a619ae25ef52b341de", + "frames/07-left.png": "2aa86ab659303eb72612fe4fcb9bee7fd50a3e439e2db21963f38c139220bf62", + "frames/15-right.png": "b57bca9bc0fb005353f6a44fd58ba28ea551a84e613d623f10d04a5773483704", + "frames/01-right.png": "c57517e4c6bb57d98184f4b1fb586682c7475cd737704aee5977c81ef1c8b354", + "frames/01-left.png": "c1a2660e02c05564e4c03307953783a78a5e7e325785b28506323e93e2ed8aeb", + "frames/00-left.png": "0f84b981848d354bd1d33f967098009ec8eebb1dcff7e6d2ae0e9ec8968c772d", + "frames/06-right.png": "372700a4387098c2db7aa6c74d0b02b00a426b52d3f8053222fd104aa9d498ec", + "frames/11-both.png": "d96a0beb9b9e1814e6ce4c7c5331659daa48dd976b7e25f6df5a73e30e00adb0", + "frames/12-right.png": "4530087590620ed6d57923e1e7d7a3d7d2e113b731cd11c46e85730fe497882e", + "frames/10-both.png": "b7e4a44f462c38a54ba99658ff19e010e382bb481b7bf0fd9d3be7ea56262692", + "frames/06-both.png": "530357e5aaa6753240be7cf9fd410f838bd32c6ccf7ef86865ce50b1a853c652", + "frames/07-both.png": "c38beab3fbf2da35fbb7d3eb8cd0eb7fffdf7e123ea17b3e9599601c1b2a4314", + "frames/00-right.png": "a84e053036f15feda04db7985480697707a037c16eed6e90474e068a940c3dc2", + "frames/14-right.png": "eacbdb75bc312c336c8e93713b352398061c43463e8d178c94ee0bc55d96abaa" +} diff --git a/docs/review/boot-material/material-cycle.gif b/docs/review/boot-material/material-cycle.gif new file mode 100644 index 00000000..9e901789 Binary files /dev/null and b/docs/review/boot-material/material-cycle.gif differ diff --git a/docs/review/boot-material/material-record.json b/docs/review/boot-material/material-record.json new file mode 100644 index 00000000..13451261 --- /dev/null +++ b/docs/review/boot-material/material-record.json @@ -0,0 +1,2699 @@ +{ + "status": "SOURCE_MATERIAL_CANDIDATE_NOT_FINAL_ART", + "sourceZonesRegisteredCanvas": { + "lacedTongue": [ + 160, + 321, + 178, + 346 + ], + "plainLeather": [ + 162, + 353, + 175, + 361 + ], + "trouser": [ + 162, + 286, + 175, + 296 + ], + "sole": [ + 159, + 370, + 177, + 373 + ] + }, + "sourceRegistration": { + "status": "single contact source key; not a gait", + "sourceReferencePoints": [ + [ + 602, + 130 + ], + [ + 602, + 612 + ] + ], + "targetReferencePoints": [ + [ + 192, + 40 + ], + [ + 192, + 195 + ] + ], + "uniformScale": 0.3215767634854772, + "translation": [ + -1.5892116182572806, + -1.8049792531120374 + ], + "annotationStatus": "manual hood-tip and belt landmarks; approximate", + "leadLegPolygon": [ + [ + 153, + 199 + ], + [ + 194, + 199 + ], + [ + 195, + 245 + ], + [ + 194, + 400 + ], + [ + 136, + 400 + ], + [ + 136, + 275 + ], + [ + 147, + 245 + ] + ], + "approximateSourceLandmarks": { + "knee": [ + 546, + 863 + ], + "toe": [ + 531, + 1183 + ] + } + }, + "records": [ + { + "frame": 0, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 0, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 1, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 1, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 2, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 2, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 3, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 3, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 4, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 4, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 5, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 5, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 6, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 6, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 7, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 7, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 8, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 8, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 9, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 9, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 10, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 10, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 11, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 11, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 12, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 12, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 13, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 13, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 14, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 14, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 15, + "side": "right", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + }, + { + "frame": 15, + "side": "left", + "lacedSourceFaces": 1, + "materialOwners": [ + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "sole", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "plainLeather", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "plainLeather", + "plainLeather", + "plainLeather", + "lacedTongue" + ] + } + ], + "hiddenSurfaces": "Authored mapping of plain leather swatch; not recovered original rear detail", + "limitations": [ + "Faceted geometry", + "Authored normalized swatch material, not final paint", + "No full-character animated assembly", + "Source lighting is baked into swatches" + ] +} diff --git a/docs/review/boot-material/material-surfaces.png b/docs/review/boot-material/material-surfaces.png new file mode 100644 index 00000000..4aabd4a6 Binary files /dev/null and b/docs/review/boot-material/material-surfaces.png differ diff --git a/docs/review/boot-material/source.zip b/docs/review/boot-material/source.zip new file mode 100644 index 00000000..067051a9 Binary files /dev/null and b/docs/review/boot-material/source.zip differ diff --git a/docs/review/boot-proportion/README.md b/docs/review/boot-proportion/README.md new file mode 100644 index 00000000..7da393bf --- /dev/null +++ b/docs/review/boot-proportion/README.md @@ -0,0 +1,15 @@ +# Boot ankle proportion comparison + +Status: proposed source proportion candidate, not anatomical measurement or runtime admission. + +The retained east-facing boot was inspected before side-material projection. Approximate foreground visible landmarks are heel x156, toe x224 and lower-shaft center x173 in the registered 384px source. The shaft sits nearer the heel than in the current model's ankleBehindToe=5 on a length-10 shoe. These are visible silhouette/shaft annotations, NOT a recovered ankle-joint center. A painted view does not establish exact anatomy. + +compare.py constructs a 7.5-unit ankle-behind-toe candidate. It retains every original heel/toe position, foot pitch, hip position and both 13.5-unit segment lengths in all 32 sampled leg poses. The knee is re-solved with the existing forward-branch/lateral constraint. The connected vamp opening moves from local Y[-6,-3] to [-9,-6], keeping the shaft attached to the newly proposed ankle position. + +The actual candidate boot meshes, materials and whole-character cycle were regenerated. character-comparison.png was inspected against the prior key: the shaft is repositioned, but the recovery knee also changes. This does not preserve the earlier approximate painted-knee fit, and it is not automatically an art improvement. The side source motivates the comparison; it does not prove the numerical choice. The existing candidate remains preserved for review. No runtime or final source selection is claimed. + +Verification: all 32 source poses remain reachable, both limb lengths pass 1e-9 construction checks, and heel/toe arrays are exactly unchanged. Boot material export and whole-character assembly each completed exit 0. These checks do not establish continuous source-curve interpolation, displayed contact, skin deformation or benchmark quality. Candidate samples are the pose authority; inherited block.py is retained as a helper and is not claimed to reproduce this candidate curve by itself. + +Authority: SS-specs d602775 controlled-character-source.md/BP-002/BP-008 already require distinguishing visible annotations from authored hidden landmarks and reviewing full pose range. No new gameplay/renderer policy, active art, metadata or pins changed. Previous clean core result remains 773 tests / 109 suites. + +Reproduce: compare.py; copy candidate-samples.json to candidate/boot/samples.json and candidate/source/samples.json; run candidate/boot/material.py and candidate/assemble.py. Exact inputs and outputs are archived. Side/rear material transitions and whole-motion/facing/renderer gates remain open; the benchmark has not been met. diff --git a/docs/review/boot-proportion/candidate-cycle.gif b/docs/review/boot-proportion/candidate-cycle.gif new file mode 100644 index 00000000..5e89c553 Binary files /dev/null and b/docs/review/boot-proportion/candidate-cycle.gif differ diff --git a/docs/review/boot-proportion/character-comparison.png b/docs/review/boot-proportion/character-comparison.png new file mode 100644 index 00000000..f8254d74 Binary files /dev/null and b/docs/review/boot-proportion/character-comparison.png differ diff --git a/docs/review/boot-proportion/east-coordinate-review.png b/docs/review/boot-proportion/east-coordinate-review.png new file mode 100644 index 00000000..3c88ea20 Binary files /dev/null and b/docs/review/boot-proportion/east-coordinate-review.png differ diff --git a/docs/review/boot-proportion/hashes.json b/docs/review/boot-proportion/hashes.json new file mode 100644 index 00000000..9e9e4fdb --- /dev/null +++ b/docs/review/boot-proportion/hashes.json @@ -0,0 +1,153 @@ +{ + "proportion-comparison.png": "3b2a0c491a33dfeaa96ca4d186e6b1c0501cb452bc398f3d8b78fef9eb9343b2", + "candidate-samples.json": "4981b33f4c019572d09676284a5a09c6aa78795bf04c5371161cd068dc94699b", + "east-coordinate-review.png": "d2c695ad340389e3f6a684db74c71f0e355138242d3ffcd3707fcff11dc23471", + "README.md": "9961f7a3dfc79286a429c9783dd34a303862191fe34caa63856e6a3a69328ee9", + "prior-samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "verification.json": "362a6fe3e5b0d609946c3f00175cca1dd15c43692c80c38d1eebcdcec8a5928f", + "character-comparison.png": "ddafc12ab229efc68a04928ce319d08b6d70732fc5797daf2104cd7e940491f6", + "compare.py": "870b54b6cf83c585018bda7258126090229076a2ab71d329138baa5fa9289478", + "candidate/thigh.py": "21e3bc693b6efc0cef9975337a5c892e2d52defac83a51315eec2d486f540e4a", + "candidate/assembly-record.json": "76f3f69895ed9bb396ba14ef2819c0a404af1d10167bd71b6ff70c9931a34a16", + "candidate/sixteen-character-poses.png": "a933d64292664227897ff70dd7547ede97a803b6b3ee5eb6eee1bee3bd4ef58d", + "candidate/assemble.py": "f9571e78ed1f703fc3a8ec23682a5c628af4aa8f92db51fcae662dd35e09303b", + "candidate/slow-character-cycle.gif": "61f4119d3f81031531d3558e4f127e52f293fedd2e2d69511bc3c605aa738434", + "candidate/boot/material.py": "9c405f6f8bbcd8355b24d721f8c0bbc4e8ef5a1d38dc98582bae14e0451ae0b5", + "candidate/boot/assembled-key.png": "d354b5b596ff7d08782fe3e1895644b48133890fe9bc832a91e8576d2cdc547c", + "candidate/boot/samples.json": "4981b33f4c019572d09676284a5a09c6aa78795bf04c5371161cd068dc94699b", + "candidate/boot/four-facing-source.png": "487017f138f4a055eb36ae7d6c14837364b08091c9b4a8805e54124ca1c7c33b", + "candidate/boot/material-surfaces.png": "be631eae021af29936f2a3cb8866ef49d2d7868997e998e41d05397acf17b15a", + "candidate/boot/registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "candidate/boot/retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "candidate/boot/material-record.json": "98394f86d1c6fa879be5e7f9a4fa3dec71a19e9ac50169f9d90958831e6e1830", + "candidate/boot/source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "candidate/boot/material-cycle.gif": "ae6cb3bd22a34fa95a0f13544ef82323ca1db46264f1c4b05aa4ce4e5cd98daf", + "candidate/source/samples.json": "4981b33f4c019572d09676284a5a09c6aa78795bf04c5371161cd068dc94699b", + "candidate/source/body-rig.json": "c1d53f25495c4e17bd3f1f4df1b0e0e87bd047872420625642a88b8cdc26530b", + "candidate/frames/14.png": "fb3b4aecd3f70442a5e9061625d0e91ac60c1bb0ce53d259538a18b2adbd9d22", + "candidate/frames/00.png": "43e01c2d1b5c75f27170b0ca0b69adaecd884cbd142572527cdf143fa1051774", + "candidate/frames/01.png": "d52e8c1583c95cd28a6abadf0bcf95bb947e57496dcaec6ab52b594c2bfbaf9a", + "candidate/frames/15.png": "72acef6443616d87cf3389e3a81e79e000f9a613d58db63b0d10b29618502f7f", + "candidate/frames/03.png": "98d423a3c58dd1c796272fc7300cbebb6a04076611c574558964a180e9491cc3", + "candidate/frames/02.png": "c750de3192f1597ab8086f262830e62191cdd525f9e7cbaa3a5ec53c9fac8fb9", + "candidate/frames/06.png": "4bae4be2c7ca5e8fa715d58298855aab8498c44fcfdf6c5f7e1dbdfb26bcdcb2", + "candidate/frames/12.png": "4964365e167e3ceba004a121d0ad41afae9bbcbbaf93569225d6c15a7bf9272a", + "candidate/frames/13.png": "1fd0a48b14e4eac9cc65f41eb0bb1cd26429dabfe6028e8ed9580bb16e9355e1", + "candidate/frames/07.png": "7e0b8c0bdd18f80200f77bba2683b5481ee78c4783f47e869a478ce46970cbd7", + "candidate/frames/11.png": "e552d0a65e664deb998bc4bb7ae51492733bde5bd3fe37ca5d3b287419f7ce27", + "candidate/frames/05.png": "f982d2761b03a45688e714852ceeb9acf10a911ca3ecc9f2a28e041a945022d8", + "candidate/frames/04.png": "2ce93d6719dd6514410857ed2530992726d3891c87e25680419d2ff634373816", + "candidate/frames/10.png": "72754461a265335b86e77715cc031471d65fbc5881049e654aa11cb7d396bedf", + "candidate/frames/09.png": "5c987a42bd187e55bff48dd50f10a474a9a8dbd0e97d9319a1d41b20f3fe7fe2", + "candidate/frames/08.png": "94e45f35a08ea11b8e92b858fcb609027cd14cd5a8aff66917d651b8a6f5db7f", + "candidate/source/body-source/left_boot_hidden.png": "703a1b66afb35559cafd60231df1ba6439550fd4ef0da7e33e491b10004d56da", + "candidate/source/body-source/left_shin_boot.png": "58eb39c047ebb4f20aaae08ec63a6052624d54f5ea82bb2b7ca60f4847843593", + "candidate/source/body-source/right_thigh.png": "92bb25e717a8704dd6147e3d42d61a039a16e0a3fd8953b6b4838b8171599085", + "candidate/source/body-source/left_thigh.png": "d56129dd205b54dcf6a8a55a65f2eba79bd6ed062fb03db85cea4a8a2aefc4bb", + "candidate/source/body-source/left_knee_hidden.png": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29", + "candidate/source/body-source/left_elbow_hidden.png": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac", + "candidate/source/body-source/left_shoulder_hidden.png": "635f66fb1d4198ea9b3d8ac719e1df8aacedd1cdc2b9e44c4c3c219b653fc1e5", + "candidate/source/body-source/right_upper_arm.png": "c033da2620b7cf8fab8d06c34a344005bfed86f8967004a5be0a33306c0c8690", + "candidate/source/body-source/left_coat_tail.png": "932a93161bd638df053f33b58d82a57e722eaa60cbadc95a71274f8a42d948f4", + "candidate/source/body-source/right_forearm_hand.png": "64eeb0b1ce4c40176b84b4c9153e42f2bc2d341b4aa480fc879f9e1ebb6cffbe", + "candidate/source/body-source/right_boot_hidden.png": "e5f9d6d93d2baac11c0d3b72ecfb32ce36e921b084317a05687c25a4a3a63a52", + "candidate/source/body-source/right_shin_boot.png": "4105dea24e6add878d02a7b4afa77de277c48780ac7ea37c058d1802c49243c5", + "candidate/source/body-source/left_forearm_hand.png": "168ac896495617d0d076c40c0d297affd8bbf6e2c645b18b28d3362d37bd51a4", + "candidate/source/body-source/hood.png": "061546675424a684d3470974a611d886bdde8192b41d09c5eaf6604cd4bfd183", + "candidate/source/body-source/left_boot.png": "162f9554e7b38a3d33dd58683c4021a4da91a79ff0aaf1c4c2639b1de6b0f232", + "candidate/source/body-source/right_boot.png": "60ecc1a390005e0ce07a622fac7e88da8d074b603e363549fd33eb35656e3559", + "candidate/source/body-source/right_elbow_hidden.png": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4", + "candidate/source/body-source/right_coat_tail.png": "585f21888a103ec52d494d1de1c992cba654936215f097a7ae7ddc95e870339b", + "candidate/source/body-source/right_knee_hidden.png": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288", + "candidate/source/body-source/torso_coat_equipment.png": "6fc702c5b5c4f1ad123d3862da795d539190dad9d609d49923f2bf3c9d952baf", + "candidate/source/body-source/right_hip_hidden.png": "5d541656fd4817ba5536f4fab469fecb42cde3ae2487a8e18ec6262da0afade1", + "candidate/source/body-source/left_upper_arm.png": "47fd20562122a6358a1b0528fc12818a53c4868499d684cf6e7fdfe7b6680d24", + "candidate/source/body-source/right_shoulder_hidden.png": "bc570fe28204d21d1924c8f416a5a2b5f058db9d3ac14ae452d59a27c170da7a", + "candidate/source/body-source/left_hip_hidden.png": "78648454e0f8abba6b1c4deb7880ed589a1baf35732e015733c851632812b49a", + "candidate/boot/source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "candidate/boot/source/parameters.json": "33b8b002d01e71ca6b2f1d9371aec3b81bc73fc9b16f8194dd8cf72b42cbe449", + "candidate/boot/source/orientation.py": "03f31bc77c824d8cd4ad2a40f806e2181e6f952b40567974314185d55b566879", + "candidate/boot/source/smooth.py": "2563ff9a6e234c4bcec250e69b8e79f2261a9efaa04937f27312c440b76d0c5c", + "candidate/boot/source/boot_geometry.py": "6c03edfff2618a22714231aad2cab9e166d0fbba8f3785cc1ac086dcb218073b", + "candidate/boot/source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "candidate/boot/frames/15-both.png": "9f1279d5dc9708c572d9b1ca247bff96f5a715c25c59f8c1e2f21ebf12349852", + "candidate/boot/frames/14-both.png": "140a01e621aa1ca051ee6fb035fbb1b9063c7f9bca31dce76f08965e8def3f91", + "candidate/boot/frames/07-left-depth.npy": "e8ddc4a233be366f851d6b3fbc6d233cbd872fd933156c0fd53e488fe11dbcc2", + "candidate/boot/frames/12-left-depth.npy": "956cf8bbb4f92778870a995271097048737a361cce7a7bb8d3e76b2da760eee0", + "candidate/boot/frames/08-right.png": "7882cb95d514c3da3fed1fba35ce0ca0585cce01fb659d291b47e3c0d55af8ca", + "candidate/boot/frames/01-right-depth.npy": "5af659e0acc9ee2aa344bdd05cf489c801473106ff794f70d89fd3fe1934f850", + "candidate/boot/frames/08-left-depth.npy": "390c924d1ae7b392ee1e658a86592619c9bce67a03baf2f56196febf2b09b42f", + "candidate/boot/frames/05-left.png": "dc5b6675bb797533d9a6da05b45a1d10531559754045b87b07709ec3947a5717", + "candidate/boot/frames/04-left.png": "fa5ab384e34a0f9eb664104d82d761995522af1b759b0186bf10615bf07ca6fa", + "candidate/boot/frames/11-right.png": "bcff6d60f4aac5517f73e9843c7e362172b0844dbcc66fb42930d81ebd46b46e", + "candidate/boot/frames/15-left-depth.npy": "609d935cd616fe519a32b51a68da387227ace682f02b84278ea87e73342a5472", + "candidate/boot/frames/00-left-depth.npy": "cb9b75214b634ab2dc548b493384c9a9a9db984c6ea559f69a7a1e067ff25126", + "candidate/boot/frames/05-right.png": "63c83c0733a1df7a42bb4ea0f97c8ea88ca6fe492847a79d6e8cab286d4ecda7", + "candidate/boot/frames/01-left-depth.npy": "d3a5562512b6273332f0e4c88793bfe12296c8c4f46e435d31d4d8881e10357b", + "candidate/boot/frames/14-left-depth.npy": "ea9551f4d11f3a21968542c89a71164a74644c815e0c1b9571d4aa56b3c6e309", + "candidate/boot/frames/02-both.png": "6f6845ffb3344d392cc271f1e5a7bbdc114705efad27d54baee9484bda6fe1f6", + "candidate/boot/frames/03-both.png": "54645bdec2d95f0d99bb1bd2752bb48b48c82537e970dc94e894a054c8d51a12", + "candidate/boot/frames/10-right-depth.npy": "1aeb53bda4947fdcd13f441d840b1d845d471814182f7b26a8c47f606e699811", + "candidate/boot/frames/09-right-depth.npy": "a71381544a63980afed0691c8fca23269db4d0438eb4efe76df53ad766a4d197", + "candidate/boot/frames/09-left-depth.npy": "64eec03de5b175dfc064eab56092fd0978c76b4cdd95e78f3dc9a0581525a282", + "candidate/boot/frames/12-left.png": "962524f51a3fc10a3c98d4654e3872196a3616b6d9adf55c010aff0136a479b2", + "candidate/boot/frames/13-left.png": "5630e52b0eb8fb7e3964f47332c1151f7661fb8e64b88bd912dd1bfdba949a72", + "candidate/boot/frames/06-right-depth.npy": "506adc365585f5ac91059f2cdf3e7aa2c7e8f01ac04586f73babdab59c758be1", + "candidate/boot/frames/13-left-depth.npy": "021975fc9cdfa31fac2c792bfea8a6409fd82d5e4584acbe1d41ed8e3774e9eb", + "candidate/boot/frames/06-left-depth.npy": "847a37e3491ed03cab0cb36fe81b8c58cdb81a0ce47a2939a879d77886ec564f", + "candidate/boot/frames/08-both.png": "6e7549e769112ada20b29cf65f3d19c0b55362c9acebf4430ad484d1b0e2d1fd", + "candidate/boot/frames/09-both.png": "da66688e98883da564737b2d74829a28efe308f40d85d68ab9af87e145e710f7", + "candidate/boot/frames/03-right.png": "98044926b604e747df9e182dfc9110bdadd0edcc90fa8f0c8089edde9d3a6925", + "candidate/boot/frames/05-both.png": "f1b50cb9109f7b7f36bec199b89f7a41eec2f562e43a7e614532615e0f61e6b4", + "candidate/boot/frames/11-right-depth.npy": "88f7a90c3b33ffb9cb6e7e8cb81d5b89034f53d5b1ad3c8448bbe78f71bba798", + "candidate/boot/frames/04-both.png": "8f2dce14624a023478b94dd0000364929c34b95eaa9c50c5ca622d7fa5db5ab4", + "candidate/boot/frames/11-left-depth.npy": "5d251093613359c94cfc533c695f5f7bdd2ce9edc89f0fc5f481a35b29c0c8ae", + "candidate/boot/frames/04-left-depth.npy": "cdb85b4beb9edf457ed4c5386b6774bacd89df8fba0b05c8aa8ab42eab77eafd", + "candidate/boot/frames/09-right.png": "ff7525d8148f7917481c4dc7e9fc191ca520f42f45d4247e65c64c7d79b7b851", + "candidate/boot/frames/08-right-depth.npy": "9fa5787a33781304f10c469fe94688798afdeff456ba04709339dcbfc8fb5a96", + "candidate/boot/frames/15-left.png": "0dc89800c55570a8a7f2b3f79936cdcc22d01c31d6a9c612f61bf1870c01fded", + "candidate/boot/frames/14-left.png": "f40305fcf556b17f08c7271818d71343a28242a04eea9d3715f7ad2b72b1b486", + "candidate/boot/frames/07-right-depth.npy": "6d0a1c77c4838452f2ed711061a2e3b9485007c68f726ec988ad18a341ab0e0c", + "candidate/boot/frames/03-left-depth.npy": "0f4646ba35231beb94e4c52412d8ef371827aa27ed30aaa5a2b9f540df067747", + "candidate/boot/frames/04-right.png": "c10cecf6fe6ccc501492809a0f3e85db45d608e370464a713566fc8601dadb55", + "candidate/boot/frames/10-right.png": "50326fb2e50e22b3140c53af50e1634c99651d815ed23af91cce691c935dd7ce", + "candidate/boot/frames/08-left.png": "3a57f9cf3806f8075ea2adbd9cb37f712413133c90e13ab99a793504214c91b2", + "candidate/boot/frames/09-left.png": "801d526cffc77d54d077215db148730d1683f3dcc829f4b72a0d294eb549ab2c", + "candidate/boot/frames/12-both.png": "5694466f95842ed1190d3b40f1964dd73ecee64854cbf6c71dcee7b204796024", + "candidate/boot/frames/13-both.png": "24971cd7c667f6f1c9d0631a4f1d107ac317df847a6465b141b9e03cb6a8fb68", + "candidate/boot/frames/00-right-depth.npy": "f13fa719401c002c5b8ba86c2ec478b730a2407d160bc8dfb7912d09c46aaa9b", + "candidate/boot/frames/02-left-depth.npy": "d4a0a09a9fb86b6e4694879db505bc2679f95b827e4b8a76079e36e71cdaa6f5", + "candidate/boot/frames/02-right.png": "4b75474647568649deb1ec344ef5789dd9454c046da48a0ae883069853c8152a", + "candidate/boot/frames/02-left.png": "daa7d98d6e5b5fa00339a3649d9aeb0b9bb94cb732f3b1ac35c59171ae614738", + "candidate/boot/frames/03-left.png": "095b897a155ea0a83bd7a88ad61a502dd1d02802cb6ba70da64769c55ea48c4c", + "candidate/boot/frames/05-left-depth.npy": "7106e75f1b38fe7466a222242c7ab926c84f895061ff12d0e1f905424c48bc38", + "candidate/boot/frames/10-left-depth.npy": "3f8784c638baf8e217477280ec8b93830041ee4482734bc66b3b1f67e23c7851", + "candidate/boot/frames/11-left.png": "7cc2d593e7dd2364f5c658047277ceb134f5eec3b53483ccea45f5b56b0b30ad", + "candidate/boot/frames/10-left.png": "8e41a53e182549d1c6df36687aa26604b2b14edd65f10878297b6831f2ef4720", + "candidate/boot/frames/13-right-depth.npy": "d5ef622ad824223253a058feb95c7cd4320eb0f455ef7fcd5b0fb8b72247a032", + "candidate/boot/frames/01-both.png": "73ad777fb7d02d42ac4089135dea7d9afde92f8e0790c214b797f3d293d74c3d", + "candidate/boot/frames/13-right.png": "b43bd1316bd375026a6d9ab7b9046fa72d66c501a21810fa1a1409e1e28f9fba", + "candidate/boot/frames/00-both.png": "28856a0409bd19c7e918ac4e29d9b5a8cab2bcb99b5b0024267f8c96f904feb7", + "candidate/boot/frames/07-right.png": "2d826beeaf5ab3fd71f2a77e85795c725c8a1321f67a9cc9799082e4fb850574", + "candidate/boot/frames/05-right-depth.npy": "92f5f10d36d98be3fab28913694c03d7a97fc2d49c2f7cf0ec3127a4685a7af8", + "candidate/boot/frames/02-right-depth.npy": "f0a7a4679f80218ed85a15a147001aa1731fd93a40579f882adeabbf9a794cfe", + "candidate/boot/frames/06-left.png": "822a38c2e6197c434b37d140d0d1ed44f6b58dc3e998b229879438a143d0013a", + "candidate/boot/frames/07-left.png": "ba5d25d8903dfbe03c2739c2a6694b8746b927ec8925abf4ef875ff32ceb9c8e", + "candidate/boot/frames/14-right-depth.npy": "d557d7b47338da630007ad0938a744f740e64caf75ed5be36068090dfe51d6e9", + "candidate/boot/frames/15-right.png": "43aea418475a51dd6afcd5110fc7d420f6752e37b41c480ac4bc420d9567962c", + "candidate/boot/frames/01-right.png": "b327ac1529118e47d9268152e2e32321b9ce2a7885bd4f13507db3059d741cb1", + "candidate/boot/frames/01-left.png": "c972f596b1f766d6a0e410b4c7321b957cd887b08d889e432bf8338736e146b2", + "candidate/boot/frames/00-left.png": "8d5bcf80e4e784a9a4010d419c7e508a54334f73903c54587b2cad98073b09e2", + "candidate/boot/frames/03-right-depth.npy": "13d1d190ae6045b7d7e963ce4e172a92cfb5b3f7176b9304f5d2996915bba189", + "candidate/boot/frames/06-right.png": "8022ca1b677f08d24f5b8f3a884ea03a03566ebe6c301f3081dbe53998342398", + "candidate/boot/frames/15-right-depth.npy": "245e2242f0df8117a89bd26b67888c981f78324bdf5b53acbff1e128b82d985d", + "candidate/boot/frames/11-both.png": "6fa4c2e6e8a24069c242ff1c8afb18cf202af65aaa40b86b9c370d66e37a5a0e", + "candidate/boot/frames/12-right.png": "b5bd56c943fe54cedbd130b93269146b5821c77b0b8039d5bfee91b01c70ebac", + "candidate/boot/frames/10-both.png": "e10fcfb3c4bf725be4f78e51c15654d8ee3e692b61417c35ac360f390ad763ee", + "candidate/boot/frames/12-right-depth.npy": "f94d39fba23973cddf2450e1d3ccce1e8919c2690a62350988d94c82414f977e", + "candidate/boot/frames/06-both.png": "283c028aeb1a21fd4566b55d2a216bd076d1508f4bc8ebee3857b9dfe48b01f2", + "candidate/boot/frames/07-both.png": "df7bd5a641226622d17caab43035a7ad7d717ce1e10356c970cb898fc53ce9f5", + "candidate/boot/frames/04-right-depth.npy": "ef4df13a64a1cdd0a4e9ee36596b742ad12efd5f9b1eaa176864909358a2fc0d", + "candidate/boot/frames/00-right.png": "ce036b070464158c1ddd81ec4cf539f8be30d8e59778f363691b7ec9bceafc4d", + "candidate/boot/frames/14-right.png": "59c5183cea53708e3f043ba7392bd56d6097868bba78d0ea81add82eecc1d7d0" +} diff --git a/docs/review/boot-proportion/source.zip b/docs/review/boot-proportion/source.zip new file mode 100644 index 00000000..419e4bc6 Binary files /dev/null and b/docs/review/boot-proportion/source.zip differ diff --git a/docs/review/boot-proportion/verification.json b/docs/review/boot-proportion/verification.json new file mode 100644 index 00000000..300a27dc --- /dev/null +++ b/docs/review/boot-proportion/verification.json @@ -0,0 +1,238 @@ +{ + "status": "PROPOSED_ANKLE_PLACEMENT_COMPARISON_NOT_ANATOMICAL_MEASUREMENT", + "oldAnkleBehindToe": 5, + "candidateAnkleBehindToe": 7.5, + "footLength": 10, + "visibleSourceAnnotations": { + "eastForegroundBootHeelX": 156, + "eastForegroundBootToeX": 224, + "eastForegroundLowerShaftCenterX": 173, + "annotationStatus": "approximate visible silhouette/lower shaft, NOT hidden ankle joint" + }, + "rows": [ + { + "time": 0.0, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.23305564920247718 + }, + { + "time": 0.0, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 2.53071940511526 + }, + { + "time": 0.03125, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.0759718967799001 + }, + { + "time": 0.03125, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.022594590363017336 + }, + { + "time": 0.0625, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.1564714335551929 + }, + { + "time": 0.0625, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.8313020966760448 + }, + { + "time": 0.09375, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.8873934159553798 + }, + { + "time": 0.09375, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.28541341107911933 + }, + { + "time": 0.125, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.0603206408783787 + }, + { + "time": 0.125, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.09597503368712967 + }, + { + "time": 0.15625, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.2593913629839297 + }, + { + "time": 0.15625, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.1607798368277234 + }, + { + "time": 0.1875, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.6569405040315686 + }, + { + "time": 0.1875, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.6158095714909194 + }, + { + "time": 0.21875, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 2.4293053915475897 + }, + { + "time": 0.21875, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.1363228699499013 + }, + { + "time": 0.25, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 2.53071940511526 + }, + { + "time": 0.25, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.23305564920247718 + }, + { + "time": 0.28125, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.022594590363017336 + }, + { + "time": 0.28125, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.0759718967799001 + }, + { + "time": 0.3125, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.8313020966760448 + }, + { + "time": 0.3125, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.1564714335551929 + }, + { + "time": 0.34375, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.28541341107911933 + }, + { + "time": 0.34375, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.8873934159553798 + }, + { + "time": 0.375, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.09597503368712967 + }, + { + "time": 0.375, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.0603206408783787 + }, + { + "time": 0.40625, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.1607798368277234 + }, + { + "time": 0.40625, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.2593913629839297 + }, + { + "time": 0.4375, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 0.6158095714909194 + }, + { + "time": 0.4375, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.6569405040315686 + }, + { + "time": 0.46875, + "side": "right", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 1.1363228699499013 + }, + { + "time": 0.46875, + "side": "left", + "toeUnchanged": true, + "heelUnchanged": true, + "kneeDisplacementSourceUnits": 2.4293053915475897 + } + ] +} diff --git a/docs/review/boot-rear/README.md b/docs/review/boot-rear/README.md new file mode 100644 index 00000000..469c43f5 --- /dev/null +++ b/docs/review/boot-rear/README.md @@ -0,0 +1,15 @@ +# Retained rear-boot source reuse and production-route check + +Status: source material refinement, not animation/art admission. + +Review of BP-002 and the existing SS-painted-character-source artifact confirmed that four distinct neutral drawings already exist. The record explicitly describes them as a source study, not the editable layered master. Its north-facing image contains usable rear boot paint. The previous plain rear material was therefore unnecessary for this source comparison. + +The new material recipe samples the retained north-facing source using its existing uniform registration (312/459, root 462,971 to 192,336). Back-facing boot/shaft surfaces select that source; the forward tongue and toe retain their respective front-source mappings. Rear-view contact renders were inspected and now show heel/cuff/sole detail without assigning the front lace patch there. Material placement is authored against the proposed geometry; cross-view projection and dimensions are not calibrated by the generated drawing. Side transitions between source views remain rough and require refinement. + +BP-002 remains the controlling sequence: four neutral facings with one consistent editable master, south movement review against world travel, then other movement facings. The four retained drawings are reference evidence, not completion of that gate. The present south source still needs material, proportion, full-motion and actual-renderer proof. BP-003's other five movement families, BP-004 camera delivery and BP-005 environment obligations are not replaced by this Player work. No benchmark completion claim is made. + +Authority: SS-specs d602775 benchmark-production.md and controlled-character-source.md were checked before this source change. They already govern retained source reuse, authored hidden surfaces, distinct facings and staged adoption; no new spec behavior or pin change is needed for this experiment. Runtime code, active art and metadata remain unchanged. + +Verification: boot/material.py and assemble.py completed exit 0; 32 material poses/depth arrays and sixteen distinct whole-character source frames. The rear/front contact sheet was inspected. This does not prove all-angle seams, four-facing motion or device performance. Previous clean core run remains 773 tests / 109 suites; no new runtime test was warranted by the material-only change. + +Reproduce with Python + NumPy + Pillow: boot/material.py, then assemble.py. Archive includes the original four-facing source as well as the retained front source, exact registration and material recipe, editable body source and outputs. Next source work should use the retained side boot views to resolve the side/rear material transition, while preserving the full production gates above. diff --git a/docs/review/boot-rear/assembly-record.json b/docs/review/boot-rear/assembly-record.json new file mode 100644 index 00000000..f729492b --- /dev/null +++ b/docs/review/boot-rear/assembly-record.json @@ -0,0 +1,214 @@ +{ + "status": "WHOLE_CHARACTER_SOURCE_CANDIDATE_NOT_ADMITTED", + "cycleSeconds": 0.5, + "previewFrameMilliseconds": 125, + "controls": { + "shoulderDegrees": 6, + "elbowDegrees": 4, + "coatHemPixels": 4, + "bodyBob": "derived from authored pelvis height" + }, + "controlAuthority": "Authored candidate values, not research-derived acceptance criteria", + "depthPolicy": "shared per-pixel source depth for both boots/calves/thighs; coat and torso retain front-layer policy", + "limits": [ + "Thigh plus authored anterior knee-cover surface; rear cloth is provisional", + "Torso/coat are still layered rather than part of the lower-body depth buffer", + "Boot proxy materials remain below benchmark", + "One facing only", + "No real-renderer world-travel test" + ], + "frames": [ + { + "frame": 0, + "time": 0.0, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 61, + "finiteDepthPixels": 7192, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "b16234b0a9b4b9dffb31daeabf4fbb22c832a6107caf10332a48a9f964377f91" + }, + { + "frame": 1, + "time": 0.03125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 176, + "finiteDepthPixels": 6462, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "55e03071c078457df5c91d67f9d7cae9169b058a5f0e8ef7311a9032d26a660a" + }, + { + "frame": 2, + "time": 0.0625, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 333, + "finiteDepthPixels": 6336, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "4421407578ad98088dab1fc6d0fc72c70aabb586904dd6de1483cb28d999b21a" + }, + { + "frame": 3, + "time": 0.09375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 35, + "finiteDepthPixels": 6368, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "21917962ad1c2e1a342dbbae013a8053d2157bafea7ae90a20a27eaa3f85164e" + }, + { + "frame": 4, + "time": 0.125, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 37, + "finiteDepthPixels": 6618, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "09c368aef9eaccd0a0b8ea50b4e8a83ebb1905980d9bb1b862ebb2b75760cca4" + }, + { + "frame": 5, + "time": 0.15625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 52, + "finiteDepthPixels": 7288, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "a42c43dc559c3a94aa1d3e7efa5f293337d43a9d5ec313681bb2d15355eeeeb1" + }, + { + "frame": 6, + "time": 0.1875, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 98, + "finiteDepthPixels": 7742, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "f1f3866e0e0a9e18f57b8b58816d1a942ef3ff6b4d32f1d8876b4783ad077ff9" + }, + { + "frame": 7, + "time": 0.21875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 173, + "finiteDepthPixels": 7780, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "2ea894fb48666ef8e4e90bcf3c94444cfcdf18f5abc155cdff23dbf1fbea7e74" + }, + { + "frame": 8, + "time": 0.25, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 64, + "finiteDepthPixels": 7192, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "1f9d7b24d821ec2da1cb5a26a1c6b0772fc478d1001f80536507b8282942607e" + }, + { + "frame": 9, + "time": 0.28125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 178, + "finiteDepthPixels": 6462, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "e46d71c67e1d8bc7fa26623e3df5d952f83bdae5e3f74b643ea1dc1f01f22a2c" + }, + { + "frame": 10, + "time": 0.3125, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 338, + "finiteDepthPixels": 6336, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "176f33250478f290afe6309981bca5da5c8d3422f96375a223a798351f948939" + }, + { + "frame": 11, + "time": 0.34375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 36, + "finiteDepthPixels": 6368, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "4c14775267a890c6c299c62ff98f92d4b170bcc328d37a59d5d35054e4f6d1a4" + }, + { + "frame": 12, + "time": 0.375, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 37, + "finiteDepthPixels": 6618, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "232d9d2a4637d63b31e0be6ce11771870d8fb58be60cc92b9f7022c6aed79a4e" + }, + { + "frame": 13, + "time": 0.40625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 53, + "finiteDepthPixels": 7288, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "22622877b602e96ac94a6e6d6eff3dfe6d5608af7e657a514db9005804dadb79" + }, + { + "frame": 14, + "time": 0.4375, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 103, + "finiteDepthPixels": 7742, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "7e902a3660362d9f774ee15a0734ce0f9a532dd05d2067a3cd45f69e03c251af" + }, + { + "frame": 15, + "time": 0.46875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 182, + "finiteDepthPixels": 7780, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "c357feff59d9c72595abbff114327b0b101fb82e3bc57cb07ce05cedd4512166" + } + ] +} diff --git a/docs/review/boot-rear/hashes.json b/docs/review/boot-rear/hashes.json new file mode 100644 index 00000000..58e266df --- /dev/null +++ b/docs/review/boot-rear/hashes.json @@ -0,0 +1,147 @@ +{ + "thigh.py": "21e3bc693b6efc0cef9975337a5c892e2d52defac83a51315eec2d486f540e4a", + "assembly-record.json": "ec0ba1e40acd733873bbd5d1e2a77f658057588738e912b239403113283c5483", + "sixteen-character-poses.png": "ffb5562669f3af4bc1078e91146eeace4a0e8c9de6389e5087b1b3117e3b55c1", + "assemble.py": "f9571e78ed1f703fc3a8ec23682a5c628af4aa8f92db51fcae662dd35e09303b", + "README.md": "e600d71c2c0a811f233915c4628fe265133da1a55840838def5ebb4e312abc27", + "slow-character-cycle.gif": "4931666886482f1790552e2aae0085cb7fffc2eb2dbe34d5c6a4ea11b5be0840", + "check_joints.py": "48c56b165a9c7fe993945c0b62a6b5288e913dad464b2f16e7d1dc1461391a4b", + "boot/material.py": "9c405f6f8bbcd8355b24d721f8c0bbc4e8ef5a1d38dc98582bae14e0451ae0b5", + "boot/assembled-key.png": "7bf6d2648f9ff36a90612af32319064bcaf21998c97ae7d24ee4c87a350b86bf", + "boot/samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "boot/four-facing-source.png": "487017f138f4a055eb36ae7d6c14837364b08091c9b4a8805e54124ca1c7c33b", + "boot/material-surfaces.png": "0c4dc0617defbb050a4c815c408c52a8a01478271a333214173392405b9f6845", + "boot/registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "boot/retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "boot/material-record.json": "3e26c3004f4f19be204f98e26cfe13c6411317bc4975341b839bf66048345c0b", + "boot/source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "boot/material-cycle.gif": "ba712ba94cef4e029819afa2fb5e0e03258b46b266051052cd471992722fbcc5", + "source/samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "source/body-rig.json": "c1d53f25495c4e17bd3f1f4df1b0e0e87bd047872420625642a88b8cdc26530b", + "frames/14.png": "cb1b8fa6467f7254c6099b43f015a2e42ae4b4a8ab5ef2e4bc13c709f3bb4045", + "frames/00.png": "9bb9ac3291de536eda1346f51e05c7f3102349140c213268dfc787af0e390bc8", + "frames/01.png": "39e5faba189fd40a0fd3af058219df8a064de6939855b44f4cccbd4f3de94c6b", + "frames/15.png": "c5633297535becf64ca125510f2d4e5aec31e4ce1e078e6ef26541f2d0e47fb3", + "frames/03.png": "855c04a739145176841ba0f6e69fba7741b19d3fd8f70758606e975d4ed82493", + "frames/02.png": "6e343335dea3d54c7f477aa07c46f0794d29d3070c3118ad0c4720c8ef2b318a", + "frames/06.png": "3fae984374747342aedbdb68f5d452f660dd3caa7e718ab6c2c0b3cee98b002d", + "frames/12.png": "231ccdf49ee82d403a1743041a662593eb93c3164da13b1bc455388634ad97d8", + "frames/13.png": "d88eb78a0212793bb2a78f7fb88ca49aa68cb835557a7d088e25ce625b025e6d", + "frames/07.png": "f9b5e51beb0b66c458fc602f7b56c96c9cabe8d7e4962bb065c3580dd5ccbdb3", + "frames/11.png": "48217ccf65e237a5737e60f273e966eaac7b0ddefd8b0224fb67885ddc28ec4a", + "frames/05.png": "ffbf0c00fc6508db3d8205733de907d58144a3567ea654fd75692a8e1f270660", + "frames/04.png": "a526505ca468f5d43b043fa1eb363a3a169d0f4d1090bc36077573aeb02c7ed1", + "frames/10.png": "ee8c7713f4385d7a7252f909344004566714f9761b6b65e2d1be92d96767b436", + "frames/09.png": "50d4e67218b75b17e29bd2179b1088895b41136fb47da9f873917ede24d06f13", + "frames/08.png": "2ba2c5772fc890aadcc685c4fec56c241352fdc6a50f84fd693bd94547f01021", + "source/body-source/left_boot_hidden.png": "703a1b66afb35559cafd60231df1ba6439550fd4ef0da7e33e491b10004d56da", + "source/body-source/left_shin_boot.png": "58eb39c047ebb4f20aaae08ec63a6052624d54f5ea82bb2b7ca60f4847843593", + "source/body-source/right_thigh.png": "92bb25e717a8704dd6147e3d42d61a039a16e0a3fd8953b6b4838b8171599085", + "source/body-source/left_thigh.png": "d56129dd205b54dcf6a8a55a65f2eba79bd6ed062fb03db85cea4a8a2aefc4bb", + "source/body-source/left_knee_hidden.png": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29", + "source/body-source/left_elbow_hidden.png": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac", + "source/body-source/left_shoulder_hidden.png": "635f66fb1d4198ea9b3d8ac719e1df8aacedd1cdc2b9e44c4c3c219b653fc1e5", + "source/body-source/right_upper_arm.png": "c033da2620b7cf8fab8d06c34a344005bfed86f8967004a5be0a33306c0c8690", + "source/body-source/left_coat_tail.png": "932a93161bd638df053f33b58d82a57e722eaa60cbadc95a71274f8a42d948f4", + "source/body-source/right_forearm_hand.png": "64eeb0b1ce4c40176b84b4c9153e42f2bc2d341b4aa480fc879f9e1ebb6cffbe", + "source/body-source/right_boot_hidden.png": "e5f9d6d93d2baac11c0d3b72ecfb32ce36e921b084317a05687c25a4a3a63a52", + "source/body-source/right_shin_boot.png": "4105dea24e6add878d02a7b4afa77de277c48780ac7ea37c058d1802c49243c5", + "source/body-source/left_forearm_hand.png": "168ac896495617d0d076c40c0d297affd8bbf6e2c645b18b28d3362d37bd51a4", + "source/body-source/hood.png": "061546675424a684d3470974a611d886bdde8192b41d09c5eaf6604cd4bfd183", + "source/body-source/left_boot.png": "162f9554e7b38a3d33dd58683c4021a4da91a79ff0aaf1c4c2639b1de6b0f232", + "source/body-source/right_boot.png": "60ecc1a390005e0ce07a622fac7e88da8d074b603e363549fd33eb35656e3559", + "source/body-source/right_elbow_hidden.png": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4", + "source/body-source/right_coat_tail.png": "585f21888a103ec52d494d1de1c992cba654936215f097a7ae7ddc95e870339b", + "source/body-source/right_knee_hidden.png": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288", + "source/body-source/torso_coat_equipment.png": "6fc702c5b5c4f1ad123d3862da795d539190dad9d609d49923f2bf3c9d952baf", + "source/body-source/right_hip_hidden.png": "5d541656fd4817ba5536f4fab469fecb42cde3ae2487a8e18ec6262da0afade1", + "source/body-source/left_upper_arm.png": "47fd20562122a6358a1b0528fc12818a53c4868499d684cf6e7fdfe7b6680d24", + "source/body-source/right_shoulder_hidden.png": "bc570fe28204d21d1924c8f416a5a2b5f058db9d3ac14ae452d59a27c170da7a", + "source/body-source/left_hip_hidden.png": "78648454e0f8abba6b1c4deb7880ed589a1baf35732e015733c851632812b49a", + "boot/source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "boot/source/parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "boot/source/orientation.py": "03f31bc77c824d8cd4ad2a40f806e2181e6f952b40567974314185d55b566879", + "boot/source/smooth.py": "2563ff9a6e234c4bcec250e69b8e79f2261a9efaa04937f27312c440b76d0c5c", + "boot/source/boot_geometry.py": "53f60cca21881c09cfa9a43db672ce4dc81c214f682428e73946ebe6e99143b1", + "boot/source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "boot/frames/15-both.png": "ffd6c7574ffb891ecaeedcac36df82ef3c6cbb4164dfb9fcb2d083f923328077", + "boot/frames/14-both.png": "a038427ddbffa45a368a05e6861f24e3c8115fb79f7e9f6a1d30bef59648fed0", + "boot/frames/07-left-depth.npy": "18c8bc8c7c08d19b179217651115c411c494f0c79b1a6991c5e1b8e0a555285e", + "boot/frames/12-left-depth.npy": "0515e6833b353a4581448f6df6ac45a2f36bf24a3aee2b5fe2bc9d1503f9bca8", + "boot/frames/08-right.png": "3e75c0eeaa890d12757af4452cc63af318ac412cf4903a3084025aaced15e031", + "boot/frames/01-right-depth.npy": "892a279449190b82dd3c720cf21e8434b206441e82f00e38b436fc8d62330df1", + "boot/frames/08-left-depth.npy": "e03e61ea4bc3bdfc0e1a79743d916a59873efd789bdb44602d68095e4122751c", + "boot/frames/05-left.png": "1d121ebc6ff480f3eedfc47f58a8179d233c8b899b1618ce7255df2004a0eb02", + "boot/frames/04-left.png": "982cda044df20a70063a23fb392683e94f91995500be4643f71a8dbb66a3c969", + "boot/frames/11-right.png": "2839eaefdb632bc37b84f9c005c93c95733e55d1b17ba82fe44ca5780812c678", + "boot/frames/15-left-depth.npy": "6988ebd45d559ea1068fe5103f998fbf83a77d48303a04c263557f15b9b3af46", + "boot/frames/00-left-depth.npy": "a310d282d9811619ad830c036fe48f767a528a34a4c6ebcc2a80f13fa00bfa0a", + "boot/frames/05-right.png": "096ee1c16c35cbad7b43be614b480a1e6644020b8527887954c738418af05a2f", + "boot/frames/01-left-depth.npy": "af6398dd4e5920ffb6b071376c36562abb26325b647dbe040f06d38b9c26aa35", + "boot/frames/14-left-depth.npy": "ecaef02ee3fbbd6fae4abd6fbf135e810c074cc0eda501d309ca6b23d19fc4c4", + "boot/frames/02-both.png": "d18cad95abd0ea0ee379777412e219f3d7c96ee2ce14d8cdb617d00870c566c1", + "boot/frames/03-both.png": "74fe0a20b657d3aec8983acbc03e28bc4946adafeb35436470c6c81dc3c44957", + "boot/frames/10-right-depth.npy": "1552bc5db67aba59efc13d479181e6549b4bf1e23b5d966f070cec1c865323bf", + "boot/frames/09-right-depth.npy": "dd23ae0ad70ce2669332e1704825521b8cd3c568cafb3f6e5131375d93811f7e", + "boot/frames/09-left-depth.npy": "2b2312148d09a895b237023cec0278364384e1330ff00b40b7390b1e507b804e", + "boot/frames/12-left.png": "6afe40cbee537f7138c8e9cb2db7d87c4a04602ea3f50f77c542a879046368a6", + "boot/frames/13-left.png": "0889cdbdee23b7f91c9440eaa162f9f92a01df833489ffd8ffaf3cc58e30b382", + "boot/frames/06-right-depth.npy": "2d5a859520f001ff8ed9d0bd6c9010058c77c26b6d9bb4b48dce8405bd95e2d5", + "boot/frames/13-left-depth.npy": "2cf373b6507f2dea471c1844534343f26f322c8fd8e6f87ba242d0e920a8976d", + "boot/frames/06-left-depth.npy": "cd4c4113eeb1d8a4a5c18ffc82153f2d2a63b617072a933e242e0f32cba1bec1", + "boot/frames/08-both.png": "aa40d1b8bb1a9b926c0e2ce6616c1cdb82f1418928c229a8736f121bd6df87e3", + "boot/frames/09-both.png": "f700a3d37b60c41f9572edb2f8fe52685b28bc266bf1a214b8bf331ab9c3cc24", + "boot/frames/03-right.png": "1c61e22696c1f69ee1557b24686d72ee7441c017828c0fb76eccef22c793562c", + "boot/frames/05-both.png": "69f92feff0f53520c001bb18f6ea077eb61b90ae98bb1a57e7bab32c5cbc2362", + "boot/frames/11-right-depth.npy": "7c797e41b5d5e2ee2405f0b2b73506ead5d3cdb11a407c9ad37f844e63924f9e", + "boot/frames/04-both.png": "1d07ffdef1186b6658593f986fc8efa14e25e6cb386f28b7cb49b7a0510c340c", + "boot/frames/11-left-depth.npy": "982bf177af3674e0653077f906b1d95faa7508e4bc4ee94988ee15328a7b5016", + "boot/frames/04-left-depth.npy": "05652ce0548e9bf95ad671c66d2eeef9dc5e3be166c46bda29d92c2d069fc207", + "boot/frames/09-right.png": "3938038d2d90d37c0d84047bc64c78b4c09bbbd0da86e6f76190bb8038f2ef7a", + "boot/frames/08-right-depth.npy": "984f488f393f62e02aafed0b61d92177a1e53088ed28430ec4c6e97f78f31672", + "boot/frames/15-left.png": "07e6ed4e91c6d2cd4ab99c1715e88f33274590496903d8208793fd9487b39686", + "boot/frames/14-left.png": "97a10f31b5b009813708b2cd605d7dc81adba792ac69b91ba4a134898d013aab", + "boot/frames/07-right-depth.npy": "875a41ce82406df39b7394a59476f66bb20036e0e4924e2324f916e91fa9aafd", + "boot/frames/03-left-depth.npy": "2e687fea63cf8bba126b7e470fb698d616c2c83c2a1c73590f47d99b6e1b8733", + "boot/frames/04-right.png": "ba209bb779c72c63ec96337f0c072275a6f940682c4e80820f7ead1e947d94be", + "boot/frames/10-right.png": "e81cde5275c8f13c33ab43e556582f51e95432e279803b73e5c89dea74481ad2", + "boot/frames/08-left.png": "4eab955529b7fde24f62034af044faa1ae3255d84682185c8c1e8196c9590ffd", + "boot/frames/09-left.png": "3c743e921ff34ce35cf69d9ec296113fb3d93fc139ec2131076521f0782e966b", + "boot/frames/12-both.png": "3a76f09d2f531d88120f21dfc7b87584a33428bf9089bc71e99e98cba74b5c92", + "boot/frames/13-both.png": "1b9019a2e010c6f7d9f733752b7c2f360c55f5b54f1581cf3fb41732ea7878a4", + "boot/frames/00-right-depth.npy": "97fb41519222e497bbb9d60937062ee48d46e92ec78d8b676ddafcae2520278f", + "boot/frames/02-left-depth.npy": "aedb32ba85b3771c6bb033a3338dec1566d637a0a535e0241803fd477092a007", + "boot/frames/02-right.png": "50137856b3cc4d9d7ef99fde6c30cbf0062f569ea43bd303c962a74940099b83", + "boot/frames/02-left.png": "28b7d590d53dee514402ba5c9015c2c6a9c92ab98f830cf7626ce919e0103a72", + "boot/frames/03-left.png": "951f289bf12d1e7659b279d13944d494d846175ffe774a2dc2c0d79b014ff24a", + "boot/frames/05-left-depth.npy": "e0b1df9ddcbb2cb7cacac79a14ed7b4246885f0f0eec183fde14035fc54ba8eb", + "boot/frames/10-left-depth.npy": "9abcf9370f2e3a6b984b1231ae478520120bd4a6e2de092c385084b458afa42e", + "boot/frames/11-left.png": "1cc26b3e169e73ca2ade93a71a7542fa7adc003dcb15f9dbc8cd2541e4160558", + "boot/frames/10-left.png": "a6d6dff1211894ca14a89ba60a8c309cec3c709a780a6c27126b6962eb63a73a", + "boot/frames/13-right-depth.npy": "39b84b669df7cf9ad58589a926a268562ee39c9a8d0edd82e8ecc70fa7f3d599", + "boot/frames/01-both.png": "86211020272087628f9be31272a37faad8d84d0b781784c706ac49980e0fdd35", + "boot/frames/13-right.png": "a7643aaff737b428a0a83afa49c65fdf05873f9301318c3369d105909bff0850", + "boot/frames/00-both.png": "3c36d3fd45adb03407b631325489fd58919f71dbed0161eb05cf67c359613480", + "boot/frames/07-right.png": "847c996659c902342a04f4ba8888f84c83589544282ee6e0ac3ce9c6307ec222", + "boot/frames/05-right-depth.npy": "38d9d9e6df5c3c4244f04d758ee0f16f3310bf18c054615285f68a3a00c6a815", + "boot/frames/02-right-depth.npy": "621721aacf40c8d14c86b64b91a62ddbd44feb6a4ec06f459b5f527d49ef7f26", + "boot/frames/06-left.png": "6e5d849545a89147771edc89102f6b8bd396aab6874bb0c3b237c6f870923e5b", + "boot/frames/07-left.png": "6438dd51feeb6e1d9b3bca321f761e8836796b582ea6d64b8b9c29b71467eb30", + "boot/frames/14-right-depth.npy": "2611d42d3ecf0a2720954af9713bd786655dfaf5df7e7fe38e51d582bd4e5c36", + "boot/frames/15-right.png": "e832fee9790e3ec1727307e00d665625d3cd978e13ad468e09cfd0106b4f2243", + "boot/frames/01-right.png": "4fdfeff4d4ce3eefe6f8a91913a2fe15e0116a71bb4341f29f142f1ded5f90a4", + "boot/frames/01-left.png": "33721c9bd1bc99470eb2bc81da9849d5f836e2244d2f41ac36f89030f6d1f724", + "boot/frames/00-left.png": "1ec4bc6b356d30905b17f53fb73ab84fe08e6b7c2d4ac6d096295202d864e7e0", + "boot/frames/03-right-depth.npy": "df9fec4007e10b3f594876757ccad16e6bcb958ccda8b3d7289d60bc04552544", + "boot/frames/06-right.png": "293dee2de1d2de6213282d6e81808d1bf06316e68c82b62e631e763df46e9e49", + "boot/frames/15-right-depth.npy": "d095357a7f84c5f59647dbc7c59a42df57fbbca2290ac7964ff08d7ab9005140", + "boot/frames/11-both.png": "64c088c7aa31ff18991d5429ef93a8e63c192040b6abcca33368637f0d2ae2ce", + "boot/frames/12-right.png": "c986510ff68f4fc2a34ec3e6267516866f6d9e66e6db70a111211cdb5c8df903", + "boot/frames/10-both.png": "66342bfb31b8a8853919641dc73a815808177d98c8b0f8e869e01d624e7d10d7", + "boot/frames/12-right-depth.npy": "dec468035f15808f0b05191dbd73fa8f922324656b10c665818407f1ebb5acb9", + "boot/frames/06-both.png": "04a47fd08f523205c289e087bb68c1cb68b464cda7f72f6a8ee0751993237247", + "boot/frames/07-both.png": "50842a4e2a2c5980f37d8270fd8b1912606d38c48325e006728846441ab7be7d", + "boot/frames/04-right-depth.npy": "bffdd4fc15a955b0271e8c2fbe972b650cb504bdbc5ac32e5a018f2938160168", + "boot/frames/00-right.png": "f50c4347ed4494a40378e490a835eec6e32372652d1f0ecc93e167b85b2f7fbb", + "boot/frames/14-right.png": "772096da6bfc313724dc4fe9299796ac3e24a2d836750866d80cff540de94e11" +} diff --git a/docs/review/boot-rear/material-surfaces.png b/docs/review/boot-rear/material-surfaces.png new file mode 100644 index 00000000..f065fc56 Binary files /dev/null and b/docs/review/boot-rear/material-surfaces.png differ diff --git a/docs/review/boot-rear/slow-character-cycle.gif b/docs/review/boot-rear/slow-character-cycle.gif new file mode 100644 index 00000000..042b639b Binary files /dev/null and b/docs/review/boot-rear/slow-character-cycle.gif differ diff --git a/docs/review/boot-rear/source.zip b/docs/review/boot-rear/source.zip new file mode 100644 index 00000000..8f3b7079 Binary files /dev/null and b/docs/review/boot-rear/source.zip differ diff --git a/docs/review/boot-shape/README.md b/docs/review/boot-shape/README.md new file mode 100644 index 00000000..559896d2 --- /dev/null +++ b/docs/review/boot-shape/README.md @@ -0,0 +1,15 @@ +# Boot shoe-volume refinement + +Status: source shape candidate; not benchmark art or runtime admission. + +Two Catmull-Clark passes refine the closed shoe loft. Constraints preserve its authored local sole plane and front/back end planes. The original material ownership and forward-only tongue patch remain. The source includes smooth.py and the exact prior volume recipe, so the shape is editable and reproduced for all 32 leg poses. + +The first attempt also subdivided the two-ring capped shin and shaft components. Those became pinched capsules and visibly separated. rejected-tube-collapse.png records that failed result. The final recipe smooths only the shoe loft and retains the original attachment components exactly. This avoids introducing that regression; it does not establish a unified production ankle mesh. + +The revised surface sheet was inspected. Shoe contours are less angular, but shaft/ankle construction, seams, sole detailing, costume-material richness and whole-character motion are still below the benchmark. Do not admit this proxy merely because mesh checks pass. No change to source gait, original raw artwork, active game resources, renderer or specs. + +Verification: all 32 pose exports finished with exit 0. The independent shape check found two incident faces for every component edge and sole-plane deviation below 1e-9 source units across all poses. This checks component topology/constraints, not intersections between components or visual/anatomical acceptance. The source material check still restricts the laced patch to one forward tongue face per boot. + +Authority: SS-specs d602775 controlled-character-source.md/BP-002/BP-008. Source-only refinement under existing editable-source requirements; no new product behavior. Previous clean core run remains 773 tests in 109 suites; no new simulator or device claim. + +Reproduce with Python + NumPy + Pillow: material.py. source.zip includes the mesh recipe, retained raw source/registration, exact poses, 32 material renders, shape observations and failed comparison. Next must address the continuous ankle/shaft construction and full-character costume integration; a smoother isolated shoe is not the completed art pass. diff --git a/docs/review/boot-shape/hashes.json b/docs/review/boot-shape/hashes.json new file mode 100644 index 00000000..766d2450 --- /dev/null +++ b/docs/review/boot-shape/hashes.json @@ -0,0 +1,68 @@ +{ + "material.py": "94808fa89bc19f78766370cf2ef9c83424f338e0d09235cd8816ff11da4d0590", + "assembled-key.png": "769000e325b1b40959c208c5c0a024dce81d11d1bce27af53861662273b549eb", + "samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "material-surfaces.png": "d3470d47eb6ee8e6d92574fe77fea3f160c3e4cef24f9a8d17f0ccb87f9c6665", + "registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "README.md": "bf55d7133fe285f69bbbdcca468826bf56dfd4da8a19f8ba396151b2594d5af1", + "rejected-tube-collapse.png": "526a17db80f459dd0d97de29cd58b7c43df2da290a742e546942a02511d56970", + "material-record.json": "25071a13ce2a28b4ec8f67b6481e69a47140449ad910759250f600aba7aa7832", + "shape-verification.json": "07b53e2b2639466d14863a493136ee4b054cae3c3f900fc31a862114a0c4e9ee", + "source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "material-cycle.gif": "f173869d9af0fb4ebf20e27537f15fbd410f0eebc030ec5ce6e9781f63c5e4cc", + "source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "source/parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "source/orientation.py": "a915caed6159c605bd389830a4a66042213b9d375ec7e178ddd061b86ea1e33c", + "source/smooth.py": "2563ff9a6e234c4bcec250e69b8e79f2261a9efaa04937f27312c440b76d0c5c", + "source/boot_geometry.py": "5754e874e4a540ebb88c6d0de6f065032683b6d84d174561688a0a7776cd0853", + "source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "frames/15-both.png": "358d0a4868a487574d219252501858d45d5faba1b4f5c196284dd9fe3b52d57d", + "frames/14-both.png": "c9b24f417391acbe77648fe01e2f27ab9029deda6040573510443c0d133ae2ee", + "frames/08-right.png": "489e19fb0c7f322ac6ff777b71733b0640578d6fb964eacb578b75d257177b13", + "frames/05-left.png": "e5020f624c4dc74ce681f6e6faa73b3b3d7efc7db61efd15e9ea31624ba52780", + "frames/04-left.png": "7dea5eae1a36076691ac0190de204e7b7142d0ac580d4ce2ccdac98d6f3f1228", + "frames/11-right.png": "4a641c4bcdec94fbf3a415a4371fce3352f108f5532bc699d0bd02de503e3acd", + "frames/05-right.png": "ad2c320374a5872a20d49a7613f17a38c840686262c01b8b40145bc053e7fdc6", + "frames/02-both.png": "ea9861a9a019a2d9dbfafc943117079c2863d7ca3e9e50dab4a8e3654cd481ff", + "frames/03-both.png": "fc1a96bf2246c3f248b7c0a213db444febf05cece1d2223a23d41b223e9f1f36", + "frames/12-left.png": "5e73f9123242682623551c343911ed3a10b9dc5f4da489d13e38bd5d60b85869", + "frames/13-left.png": "fefc085105ee85761be9b6f15a94c3313c45bf1af73b0c27ce625236cce323ac", + "frames/08-both.png": "2e03a0ecac892a4410bb6e9079f28e609267c22718db26e274fdf0983ad7b55a", + "frames/09-both.png": "3e6e18ba4802b5c454e18dbb0001d5197eeec184365a48cf3ca5da05c235a5fb", + "frames/03-right.png": "a43e9dc697768ddb6a8390b8293636fcc46057a0f69fdb847aaf1690d8f8e174", + "frames/05-both.png": "9c332b18a287c4b563457a02ba900aadd3f9c24e0195b1e24c93692241596673", + "frames/04-both.png": "a21281fd851245ff534b6d15024788f3e282ba9aba845be0649ebd7d8a9beebb", + "frames/09-right.png": "aca5f00cb03ff3af6e3873e819fc66f1c9677581a742f8e1247f7044d4cd9dc0", + "frames/15-left.png": "6846b1b567b57c5f4ac02b15081fb93f5c978522ca56cc2ac3d93579f9f448fd", + "frames/14-left.png": "c06b371d3a64ceb8b00a9d2b43964e9f1b9b144c02bf56510218ba096526c391", + "frames/04-right.png": "6a4f0ac3fdc73aedd5e3a9dd49dd4d3297f735bbd79d707639f03940b448ccc6", + "frames/10-right.png": "a0dbbd8b8a9b4ff48ea820d50348d23a800b3622bbdc0bcb2b74395a589ea506", + "frames/08-left.png": "604ef2fbf6af9c6ae60480c2d23d87b043addec2fe75cddb79b122af52508546", + "frames/09-left.png": "74a44464f283c1a0f4fc743c94153e8bbd0681c6446058ceccb22caa1756130e", + "frames/12-both.png": "edafdc36f5521033db4449d4cf531dbb34046d4f7c4fccee0abd8398356e792f", + "frames/13-both.png": "088e072cdc6e0832a0c2ed9bcfa50f3020a3599741561268a02c66e6df787630", + "frames/02-right.png": "ff78969c22b34193fbaaffd796e3bdced8935eeccad651fd8a8f0c9e14284a49", + "frames/02-left.png": "1b91d6b849bf045061a803dd087a14b8ce9c02819178ee0c62f82d9b15e92a26", + "frames/03-left.png": "35c364a02e4d7db3f670d4acf415972de7c3dbb32c5b351112da0ab6b885195e", + "frames/11-left.png": "f478d316ee480f3f425b59ed2a765275f1024a014af3788e8a25ed3ffe46b403", + "frames/10-left.png": "decfae7354cf1ade0e2bb3a9c3abced8c7e2e7e2b51e16535955e2c9b0a60edd", + "frames/01-both.png": "871a1292854b0b46adca5b9a7d19fe1b290222581651af170490994b4387ca46", + "frames/13-right.png": "17322cd1e17ff05a8d4d0cfb1623adaab67c30dedc7af8a2236252ea582df2af", + "frames/00-both.png": "6a99ad7b4d82e93328c3e183190b6a548db53f7d25c8a6fa8edc0bf0c9003cf1", + "frames/07-right.png": "dce410a49bcc26df2a25b1c8fd4af139739f929d3514b50f3a4b5f8fca23d476", + "frames/06-left.png": "8d7424a8693e0da927bc632f4de6866ee9012dd15203454951398ca92bd9a895", + "frames/07-left.png": "2c52b0bc71528c52751deb822182945220ab2730016b48f1c628d57f60873417", + "frames/15-right.png": "8ab0bbf7008f29e99907860773013f8c975a55093dc5b54f2cb39eac5e148c0f", + "frames/01-right.png": "55f678883180654f83d90fad86917213452f66bd60d92aa17c6255a82f101954", + "frames/01-left.png": "9a7705a7c8b82e22287a771c82e9715c045d3b2b73275243a838effc086a515c", + "frames/00-left.png": "c35bf35011abf99ea75e33b8398c47878452ff4698e6187e8f01622fcf9368c3", + "frames/06-right.png": "e36043b8ce206b73d2cf64084560c0d7cfad714d567b0439bd86ec6fea525c60", + "frames/11-both.png": "ff6df11d4cb3b1eec6bcf8ee7fc188e2cd97ec46e86ff8622afcbf62ca52d32a", + "frames/12-right.png": "03fdc412ab18c88684c1cf35a953ddc115c25f03e2832cbf570c40f630b7e35c", + "frames/10-both.png": "4a18ddf3564b3e8b5da57dd48855e606a9285d7dac337df023ddf653eaf66061", + "frames/06-both.png": "9f8e4815da53abc085adef43f766cdf73ee75122bf28f13c95411a2357086c00", + "frames/07-both.png": "1dbc2cd0f76ec819ffa125f1ce5b67054690422ec01537d3235e73a03e080bd3", + "frames/00-right.png": "640e7990fde991dc7f980f65356b8806166ce29d0e30f3e0095100b7c57f38ae", + "frames/14-right.png": "4edb978043f8a20e28d71d7bbb93cf47e9aabecc9d04f45b6c21f9168d8e821c" +} diff --git a/docs/review/boot-shape/material-cycle.gif b/docs/review/boot-shape/material-cycle.gif new file mode 100644 index 00000000..1b78c907 Binary files /dev/null and b/docs/review/boot-shape/material-cycle.gif differ diff --git a/docs/review/boot-shape/material-surfaces.png b/docs/review/boot-shape/material-surfaces.png new file mode 100644 index 00000000..8e608a8e Binary files /dev/null and b/docs/review/boot-shape/material-surfaces.png differ diff --git a/docs/review/boot-shape/shape-verification.json b/docs/review/boot-shape/shape-verification.json new file mode 100644 index 00000000..ba6ea662 --- /dev/null +++ b/docs/review/boot-shape/shape-verification.json @@ -0,0 +1,258 @@ +[ + { + "time": 0.0, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 0.0 + }, + { + "time": 0.0, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 4.22470938477017e-15 + }, + { + "time": 0.03125, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 8.147862204105334e-16 + }, + { + "time": 0.03125, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 2.160268850017886e-15 + }, + { + "time": 0.0625, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 8.166424218781871e-16 + }, + { + "time": 0.0625, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 2.1506679273174882e-15 + }, + { + "time": 0.09375, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 2.625648553237788e-15 + }, + { + "time": 0.09375, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 5.02322203303848e-15 + }, + { + "time": 0.125, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 5.023842207619487e-15 + }, + { + "time": 0.125, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 1.4265756529593576e-14 + }, + { + "time": 0.15625, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 2.6509564614378866e-15 + }, + { + "time": 0.15625, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 8.836439408752324e-15 + }, + { + "time": 0.1875, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 1.897897557224399e-15 + }, + { + "time": 0.1875, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 8.138583250630835e-15 + }, + { + "time": 0.21875, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 7.78465813153338e-15 + }, + { + "time": 0.21875, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 1.423969072043279e-14 + }, + { + "time": 0.25, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 4.22470938477017e-15 + }, + { + "time": 0.25, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 0.0 + }, + { + "time": 0.28125, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 2.160268850017886e-15 + }, + { + "time": 0.28125, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 8.147862204105334e-16 + }, + { + "time": 0.3125, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 2.1506679273174882e-15 + }, + { + "time": 0.3125, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 8.166424218781871e-16 + }, + { + "time": 0.34375, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 5.02322203303848e-15 + }, + { + "time": 0.34375, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 2.625648553237788e-15 + }, + { + "time": 0.375, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 1.4265756529593576e-14 + }, + { + "time": 0.375, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 5.023842207619487e-15 + }, + { + "time": 0.40625, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 8.836439408752324e-15 + }, + { + "time": 0.40625, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 2.6509564614378866e-15 + }, + { + "time": 0.4375, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 8.138583250630835e-15 + }, + { + "time": 0.4375, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 1.897897557224399e-15 + }, + { + "time": 0.46875, + "side": "right", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 1.423969072043279e-14 + }, + { + "time": 0.46875, + "side": "left", + "vertices": 754, + "faces": 732, + "closedComponentEdges": true, + "maxSolePlaneError": 7.78465813153338e-15 + } +] diff --git a/docs/review/boot-shape/source.zip b/docs/review/boot-shape/source.zip new file mode 100644 index 00000000..54564919 Binary files /dev/null and b/docs/review/boot-shape/source.zip differ diff --git a/docs/review/boot-surface-ownership/README.md b/docs/review/boot-surface-ownership/README.md new file mode 100644 index 00000000..b1e6772e --- /dev/null +++ b/docs/review/boot-surface-ownership/README.md @@ -0,0 +1,19 @@ +# Boot surface ownership correction + +Status: authored source study, not finished art or a replacement character sheet. + +The user rejected laces on the wrong boot surface. The two generated recovery components remain rejected. This study adds distinct tongue/instep and front-shaft geometry to the existing editable recovery volume, with lace ribbons assigned only to those surfaces. Heel/back/sole faces receive no lace paint. No original costume pixels were copied across surfaces. + +Research: Nicks Boots glossary (https://nicksboots.com/pages/glossary), retrieved 2026-10-15, describes the tongue as cushioning the top of the foot and distributing lace pressure. Its false-tongue explanation (https://nicksboots.com/blogs/blog/boot-building-specs-kiltie-reddit-wiki) places that protection over the tongue beneath lacing. These establish construction relationships, not SS dimensions, gait or camera choices. + +Spec authority: d602775 controlled-character-source.md already requires explicitly authored hidden surfaces, boot perspective and reviewed source keys before in-betweening. This is a source correction under that existing requirement, not a new gameplay or presentation policy. + +orientation.py exports named OBJ groups, a surface-ownership record and four depth-buffered diagnostic views. It inherits the prior authored pose without claiming anatomical correctness. The elevated front view hides the laces; the low diagnostic view reveals the forward shaft tongue. This is expected occlusion, not permission to paint laces onto visible rear surfaces. The shaft/foot transition, proportions and full-body recovery silhouette remain unresolved. The isolated model is visibly a proxy and cannot satisfy benchmark art acceptance. + +Reproduction: Python 3 with NumPy and Pillow, run orientation.py in this folder. In this session the bundled desktop Python was used. Checks passed for the inherited closed volume and explicit forward-facing shaft placement. Lace/tongue overlays are intentionally open polygons; the exported assembly is not a manifold production mesh. Four views were inspected; no runtime, simulator or device claim follows. No active game code/resources/spec pins changed. + +Next: refine the connected ankle/boot transition and apply the retained costume materials only to their owned surfaces; review assembled beneath the knee and coat before expanding the cycle. + +## Full-character placement follow-up + +fullpose-comparison.png uses the prior guide projection (origin 192,336, scale 6, elevation 30 degrees) without fitting the new mesh to the painting. Left: retained contact. Middle: source behind all retained pixels. Right: source over paint to expose overlap. The raised knee and projected boot do not form a convincing connected silhouette yet; this is diagnostic evidence, not an assembled art pass. The original image is included for reproduction. The next correction must address this joint/occlusion relationship before texture work. diff --git a/docs/review/boot-surface-ownership/fullpose-comparison.png b/docs/review/boot-surface-ownership/fullpose-comparison.png new file mode 100644 index 00000000..f67257de Binary files /dev/null and b/docs/review/boot-surface-ownership/fullpose-comparison.png differ diff --git a/docs/review/boot-surface-ownership/hashes.json b/docs/review/boot-surface-ownership/hashes.json new file mode 100644 index 00000000..488241ba --- /dev/null +++ b/docs/review/boot-surface-ownership/hashes.json @@ -0,0 +1,18 @@ +{ + "geometry-guide.png": "64cc2ae9d852ce5c419cacab3de1dc590aea284940b1ecaef0e356cf59a67ff8", + "fullpose-proxy.png": "3859de1152617d2a7887e7ba73de8e09fd63d93ed8d332f1467359cef3664814", + "boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "geometry-record.json": "221c27d3f998465fec53554f2d906ccee15f30c84e5db0abb1adffb3118d20ff", + "parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "orientation.py": "bf027e75ea4c0b5d361081acbee7433b85a9edd11b9000ab1a82856672fc1909", + "orientation-review.png": "fc99e3c6f954fd2e61d11a98724e05926c67990595ef4a1076a1fa4bad7b20da", + "fullpose-behind.png": "c4492ec16ba60c63a1fbd0b719931bbb32b1b1acd3dff895fc2c6dd0b40d7738", + "recovery-leg.obj": "43d89db5b0e3eecf980a619d5f0bfd7628f3be2f622377b0feee4dd1613447c2", + "retained-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "README.md": "ae012acacb6ec909c5d0f223fe80f94eb3fa5b778b9b4d825ae990183f731490", + "surface-ownership.json": "bdb1f30714369c9beaa0b3ea44172d20b39a704d956a85e9cf311aa45b0f3014", + "fullpose-comparison.png": "0929d499042942037ecc4942b9cc34678e9d381b5069a126e466940673f0fa32", + "recovery-leg-owned.obj": "b342c629299d1cf61481ca30d8c4f423778f19b4fee58318e6df2f4912dd673d", + "boot_geometry.py": "f3c65a748613054b952190c6a0ca866934e69b4241bfa782ce54d236bb23fa0d", + "block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201" +} diff --git a/docs/review/boot-surface-ownership/orientation-review.png b/docs/review/boot-surface-ownership/orientation-review.png new file mode 100644 index 00000000..c3efd07e Binary files /dev/null and b/docs/review/boot-surface-ownership/orientation-review.png differ diff --git a/docs/review/boot-surface-ownership/source.zip b/docs/review/boot-surface-ownership/source.zip new file mode 100644 index 00000000..f0dd933b Binary files /dev/null and b/docs/review/boot-surface-ownership/source.zip differ diff --git a/docs/review/boot-surface-ownership/surface-ownership.json b/docs/review/boot-surface-ownership/surface-ownership.json new file mode 100644 index 00000000..499fc592 --- /dev/null +++ b/docs/review/boot-surface-ownership/surface-ownership.json @@ -0,0 +1,109 @@ +{ + "status": "SOURCE_STUDY_NOT_FINAL_ART", + "coordinateConvention": "local foot Y increases heel to toe; local Z is sole to upper", + "lacesAllowed": [ + "tongue_instep", + "tongue_shaft_front" + ], + "lacesForbidden": [ + "heel_counter", + "back_shaft", + "outsole", + "lateral_quarter" + ], + "faceGroups": [ + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "boot_volume", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "shaft", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "trouser", + "tongue_instep", + "tongue_instep", + "tongue_instep", + "laces_instep", + "laces_instep", + "laces_instep", + "laces_instep", + "laces_instep", + "laces_instep", + "tongue_shaft_front", + "laces_shaft_front", + "laces_shaft_front", + "laces_shaft_front", + "laces_shaft_front", + "laces_shaft_front", + "laces_shaft_front" + ], + "shaftForward": [ + 0.049562125094233356, + 0.20962559177931292, + -0.9765248112707205 + ], + "research": "https://nicksboots.com/pages/glossary", + "dimensions": "Authored guide values; not inferred anatomy" +} diff --git a/docs/review/building-contact/contacts.png b/docs/review/building-contact/contacts.png new file mode 100644 index 00000000..6b1b2063 Binary files /dev/null and b/docs/review/building-contact/contacts.png differ diff --git a/docs/review/building-contact/occlusion-comparison.png b/docs/review/building-contact/occlusion-comparison.png new file mode 100644 index 00000000..62f0c9bf Binary files /dev/null and b/docs/review/building-contact/occlusion-comparison.png differ diff --git a/docs/review/building-contact/occlusion-test-summary.json b/docs/review/building-contact/occlusion-test-summary.json new file mode 100644 index 00000000..cc157fca --- /dev/null +++ b/docs/review/building-contact/occlusion-test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 89, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792004738.773, + "passedTests" : 87, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792004636.504, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "44% of duration", + "text" : "2 longest test runs with outlier durations exceeding 6.31s (three standard deviations)" + } + ], + "totalTestCount" : 87 +} diff --git a/docs/review/building-contact/positions-q8.csv b/docs/review/building-contact/positions-q8.csv new file mode 100644 index 00000000..c716dc62 --- /dev/null +++ b/docs/review/building-contact/positions-q8.csv @@ -0,0 +1,241 @@ +Isolated movement/collision probes. Radius18; existing obstacle unchanged. Neutral south art; no animation. +west,1,115200,180224 +west,2,116224,180224 +west,3,117248,180224 +west,4,118272,180224 +west,5,119296,180224 +west,6,120320,180224 +west,7,121344,180224 +west,8,122368,180224 +west,9,123392,180224 +west,10,124416,180224 +west,11,125440,180224 +west,12,126464,180224 +west,13,126464,180224 +west,14,126464,180224 +west,15,126464,180224 +west,16,126464,180224 +west,17,126464,180224 +west,18,126464,180224 +west,19,126464,180224 +west,20,126464,180224 +west,21,126464,180224 +west,22,126464,180224 +west,23,126464,180224 +west,24,126464,180224 +west,25,126464,180224 +west,26,126464,180224 +west,27,126464,180224 +west,28,126464,180224 +west,29,126464,180224 +west,30,126464,180224 +west,31,126464,180224 +west,32,126464,180224 +west,33,126464,180224 +west,34,126464,180224 +west,35,126464,180224 +west,36,126464,180224 +west,37,126464,180224 +west,38,126464,180224 +west,39,126464,180224 +west,40,126464,180224 +east,1,179712,180224 +east,2,178688,180224 +east,3,177664,180224 +east,4,176640,180224 +east,5,175616,180224 +east,6,174592,180224 +east,7,173568,180224 +east,8,172544,180224 +east,9,171520,180224 +east,10,170496,180224 +east,11,169472,180224 +east,12,168448,180224 +east,13,168448,180224 +east,14,168448,180224 +east,15,168448,180224 +east,16,168448,180224 +east,17,168448,180224 +east,18,168448,180224 +east,19,168448,180224 +east,20,168448,180224 +east,21,168448,180224 +east,22,168448,180224 +east,23,168448,180224 +east,24,168448,180224 +east,25,168448,180224 +east,26,168448,180224 +east,27,168448,180224 +east,28,168448,180224 +east,29,168448,180224 +east,30,168448,180224 +east,31,168448,180224 +east,32,168448,180224 +east,33,168448,180224 +east,34,168448,180224 +east,35,168448,180224 +east,36,168448,180224 +east,37,168448,180224 +east,38,168448,180224 +east,39,168448,180224 +east,40,168448,180224 +south,1,147456,147968 +south,2,147456,148992 +south,3,147456,150016 +south,4,147456,151040 +south,5,147456,152064 +south,6,147456,153088 +south,7,147456,154112 +south,8,147456,155136 +south,9,147456,156160 +south,10,147456,157184 +south,11,147456,158208 +south,12,147456,159232 +south,13,147456,159232 +south,14,147456,159232 +south,15,147456,159232 +south,16,147456,159232 +south,17,147456,159232 +south,18,147456,159232 +south,19,147456,159232 +south,20,147456,159232 +south,21,147456,159232 +south,22,147456,159232 +south,23,147456,159232 +south,24,147456,159232 +south,25,147456,159232 +south,26,147456,159232 +south,27,147456,159232 +south,28,147456,159232 +south,29,147456,159232 +south,30,147456,159232 +south,31,147456,159232 +south,32,147456,159232 +south,33,147456,159232 +south,34,147456,159232 +south,35,147456,159232 +south,36,147456,159232 +south,37,147456,159232 +south,38,147456,159232 +south,39,147456,159232 +south,40,147456,159232 +north,1,147456,212480 +north,2,147456,211456 +north,3,147456,210432 +north,4,147456,209408 +north,5,147456,208384 +north,6,147456,207360 +north,7,147456,206336 +north,8,147456,205312 +north,9,147456,204288 +north,10,147456,203264 +north,11,147456,202240 +north,12,147456,201216 +north,13,147456,201216 +north,14,147456,201216 +north,15,147456,201216 +north,16,147456,201216 +north,17,147456,201216 +north,18,147456,201216 +north,19,147456,201216 +north,20,147456,201216 +north,21,147456,201216 +north,22,147456,201216 +north,23,147456,201216 +north,24,147456,201216 +north,25,147456,201216 +north,26,147456,201216 +north,27,147456,201216 +north,28,147456,201216 +north,29,147456,201216 +north,30,147456,201216 +north,31,147456,201216 +north,32,147456,201216 +north,33,147456,201216 +north,34,147456,201216 +north,35,147456,201216 +north,36,147456,201216 +north,37,147456,201216 +north,38,147456,201216 +north,39,147456,201216 +north,40,147456,201216 +near-corner,1,114900,147668 +near-corner,2,115624,148392 +near-corner,3,116348,149116 +near-corner,4,117072,149840 +near-corner,5,117796,150564 +near-corner,6,118520,151288 +near-corner,7,119244,152012 +near-corner,8,119968,152736 +near-corner,9,120692,153460 +near-corner,10,121416,154184 +near-corner,11,122140,154908 +near-corner,12,122864,155632 +near-corner,13,123588,156356 +near-corner,14,124312,157080 +near-corner,15,125036,157804 +near-corner,16,125760,158528 +near-corner,17,126484,159252 +near-corner,18,127208,159976 +near-corner,19,127932,159976 +near-corner,20,127932,159976 +near-corner,21,127932,159976 +near-corner,22,127932,159976 +near-corner,23,127932,159976 +near-corner,24,127932,159976 +near-corner,25,127932,159976 +near-corner,26,127932,159976 +near-corner,27,127932,159976 +near-corner,28,127932,159976 +near-corner,29,127932,159976 +near-corner,30,127932,159976 +near-corner,31,127932,159976 +near-corner,32,127932,159976 +near-corner,33,127932,159976 +near-corner,34,127932,159976 +near-corner,35,127932,159976 +near-corner,36,127932,159976 +near-corner,37,127932,159976 +near-corner,38,127932,159976 +near-corner,39,127932,159976 +near-corner,40,127932,159976 +far-corner,1,180012,212780 +far-corner,2,179288,212056 +far-corner,3,178564,211332 +far-corner,4,177840,210608 +far-corner,5,177116,209884 +far-corner,6,176392,209160 +far-corner,7,175668,208436 +far-corner,8,174944,207712 +far-corner,9,174220,206988 +far-corner,10,173496,206264 +far-corner,11,172772,205540 +far-corner,12,172048,204816 +far-corner,13,171324,204092 +far-corner,14,170600,203368 +far-corner,15,169876,202644 +far-corner,16,169152,201920 +far-corner,17,168428,201196 +far-corner,18,167704,200472 +far-corner,19,166980,200472 +far-corner,20,166980,200472 +far-corner,21,166980,200472 +far-corner,22,166980,200472 +far-corner,23,166980,200472 +far-corner,24,166980,200472 +far-corner,25,166980,200472 +far-corner,26,166980,200472 +far-corner,27,166980,200472 +far-corner,28,166980,200472 +far-corner,29,166980,200472 +far-corner,30,166980,200472 +far-corner,31,166980,200472 +far-corner,32,166980,200472 +far-corner,33,166980,200472 +far-corner,34,166980,200472 +far-corner,35,166980,200472 +far-corner,36,166980,200472 +far-corner,37,166980,200472 +far-corner,38,166980,200472 +far-corner,39,166980,200472 +far-corner,40,166980,200472 \ No newline at end of file diff --git a/docs/review/building-contact/review.md b/docs/review/building-contact/review.md new file mode 100644 index 00000000..4a25ebaf --- /dev/null +++ b/docs/review/building-contact/review.md @@ -0,0 +1,23 @@ +# BP-005 contact and occlusion evidence + +Runtime parent8d6dabd; spec c773f960ee8f53ac429828767fcd09f4da0d7cb3. Review-only test change. No shipping collision, rendering or art admission change. + +## Collision evidence + +Six40-tick probes use Movement.displacement and Collision.slideCircle with the actual128x128 authored kiosk solid and PlayerBody.radiusUnits18. This isolates the solver with broad bounds; it is not a complete Simulation run or legal arena traversal. All240sampled positions remained nonpenetrating. Four cardinal approaches stopped at exactly18units beyond the corresponding obstacle face: west(494,704), east(658,704), south(576,622), north(576,786). Diagonal endpoints were(499.734375,624.90625) and(652.265625,783.09375); no claim of symmetric continuous contact is made. positions-q8.csv preserves every fixed-point sample. Static south-facing art depicts endpoints only, so this evidence does not validate facing, gait or continuous animation. + +## Observed visual failure + +contacts.png shows the unchanged actor-above-scenery layering makes east/north/far-corner players appear on upper walls or the roof despite solver positions remaining outside the obstacle. The geometric separation is correct for these probes, but presentation communicates false elevation. This fails BP-005 visual truth. + +## Treatment comparison + +For exactly the three known rear probes, the test compares opaque depth ordering with player below the building and then the same order with building alpha0.35. This manual selection is not a general occlusion classifier. Actor shadow is hidden during rear treatments to avoid projecting a ground shadow on top of the building. Opaque depth hides the player entirely. Fading restores visibility but weakens the obstacle boundary and still needs an explicit ground-contact cue. Neither treatment alone is accepted;0.35 is an experimental value, not a researched acceptance threshold. + +Next comparison: preserve a clear ground footprint/contact cue while reducing only obscuring architecture, then check continuous entry/exit and corner transitions with enemies/projectiles. A general classifier must use world/depth relationships and the selected projection, not labels from this test. Do not simply put all actors on top or hide them without a cue. + +Research basis: Apple zPosition documentation (https://developer.apple.com/documentation/spritekit/sknode/zposition) establishes draw ordering; it does not choose SS's occlusion treatment. Accessed2026-10-14. The alternatives and visual findings here come from actual SS SpriteKit captures. + +## Validation + +Initial contact result Test-SSRuntime-2026.10.14_11-59-47--0700.xcresult and final comparison Test-SSRuntime-2026.10.14_12-03-56--0700.xcresult both passed87tests, zero failures/skips. The final result includes84Swift Testing tests plus3XCTest tests (89executions with dynamic cases). iPhone17Pro simulatoriOS26.5. No physical-device run. Green assertions prove only the stated solver and transform invariants; screenshots explicitly document a remaining visual defect. diff --git a/docs/review/building-contact/test-summary.json b/docs/review/building-contact/test-summary.json new file mode 100644 index 00000000..d8ffaa36 --- /dev/null +++ b/docs/review/building-contact/test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 89, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792004471.599, + "passedTests" : 87, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792004387.373, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "41% of duration", + "text" : "2 longest test runs with outlier durations exceeding 5.79s (three standard deviations)" + } + ], + "totalTestCount" : 87 +} diff --git a/docs/review/building-wall-study/prompt.txt b/docs/review/building-wall-study/prompt.txt new file mode 100644 index 00000000..7e48e426 --- /dev/null +++ b/docs/review/building-wall-study/prompt.txt @@ -0,0 +1,6 @@ +Use case: precise-object-edit. +Asset type: game environment production study for Surveillance Survivor. +Input image 1 is the edit target: existing paired Victorian building sprite. +Repair its ground construction while retaining its recognizable teal and warm brick facades, cream trim, bay windows, roof detail, restrained weathered palette and elevated three-quarter rendering. +Produce a two-panel architectural study on a plain neutral gray background. Left panel large: the same building as a clean standalone wall-and-roof asset, WITHOUT the baked sidewalk apron, trees, plants, fences or external stairs. The ground floor must terminate at one unambiguous level base; entrances meet that level without floating doors. Preserve coherent vertical walls and facade detail. Right panel: a directly overhead ground-plan diagram of the same revised building (not the roof), showing its wall perimeter and entrance locations, with front and side edges corresponding clearly to the elevated view. Use simple labeled lines for the plan, no invented interior rooms. This is a design proposal to expose otherwise hidden ground geometry, not a claim to recover the old image's hidden footprint. +Both panels must agree. Keep full building visible, no clipping, no character, camera, surrounding street or scenery. No extra building alternatives. Do not add a new decorative plinth. Label panels "ELEVATED WALL ASSET" and "GROUND PLAN - PROPOSED". This study is not a final sprite sheet. diff --git a/docs/review/building-wall-study/review.md b/docs/review/building-wall-study/review.md new file mode 100644 index 00000000..451f146f --- /dev/null +++ b/docs/review/building-wall-study/review.md @@ -0,0 +1,11 @@ +# Building wall separation study + +Tool: built-in image_gen, 2026-10-14. Exact prompt in prompt.txt; unmodified generated source in source.png. Input was the existing building.png benchmark asset. Runtime baseline 9501261; specification c773f960ee8f53ac429828767fcd09f4da0d7cb3. + +OBSERVED: the elevated candidate removes the baked sidewalk apron, trees, fences and stairs while retaining paired teal/brick facades, cream trim and roof details. Entrances now meet its base. This isolates vertical artwork more clearly than the old scenic cutout. + +FAILED: the accompanying plan contains roof-like finials and does not unambiguously map the visible door locations. It is not an editable or measured ground-plan master. Bay projections also make the footprint nonrectangular; it cannot be fitted truthfully to the existing square obstacle by scaling. Neither panel is admitted to production. No collision change or renderer substitution was made. + +Next: establish an explicit authored footprint for the projection comparison, then render the wall asset against that constraint. Preserve facade materials where practical; avoid asking an image model to independently invent the technical plan and certify its own geometry. The current arena remains authoritative. + +Validation: runtime spec pin reconciled to c773f960ee8f53ac429828767fcd09f4da0d7cb3. All 21 contract/fixture JSON files match that exact commit, except the documented catalog specificationCommit field. Four targeted ContractVersionsTests and AssetCatalogTests passed. No simulator or physical-device test was rerun for this documentation/pin-only adoption; no renderer behavior changed. diff --git a/docs/review/building-wall-study/source-record.json b/docs/review/building-wall-study/source-record.json new file mode 100644 index 00000000..bd19370b --- /dev/null +++ b/docs/review/building-wall-study/source-record.json @@ -0,0 +1,6 @@ +{ + "tool": "built-in image_gen", + "sourceSHA256": "a6d8a2e8d23b543abc0409429591b83546caf79813964576e8171a29c817bbce", + "inputSHA256": "6f0d74055f2f3b785c7b74af35f37198a3df08851bf0e156f579339d3d3e6780", + "status": "REVIEWED_ELEVATION_CANDIDATE_PLAN_FAILED_NOT_ADMITTED" +} diff --git a/docs/review/building-wall-study/source.png b/docs/review/building-wall-study/source.png new file mode 100644 index 00000000..caff2181 Binary files /dev/null and b/docs/review/building-wall-study/source.png differ diff --git a/docs/review/cadence-interruptions/README.md b/docs/review/cadence-interruptions/README.md new file mode 100644 index 00000000..de1bcd6b --- /dev/null +++ b/docs/review/cadence-interruptions/README.md @@ -0,0 +1,9 @@ +# Candidate interruption guard + +Fixed a test-only cadence experiment defect: base movement could remain selected in the snapshot while the renderer presented an event reaction. The candidate now overrides only the renderer-selected `player_move|s` clip. Other selected clips reset the experimental movement segment and retain their texture/actions. Production rendering and simulation are unchanged. + +Fresh Xcode result Test-SSRuntime-2026.10.15_18-13-54--0700: 113 named tests / 115 executions passed, zero failures or skips. `testDistanceCandidatePreservesSelectedInterruptions()` passed and checks idle, dodge, defeat, completion, north-facing movement and a west-facing hurt event layered over south movement, in normal and Reduced Motion. It also checks resumed south movement becomes eligible. + +Scope: actual renderer selection/texture/action preservation using explicit presentation fixtures. This is not a live physical collision-stop, wall-slide, reversal, pause or dodge-command sequence. Those scenarios, visual acceptance and performance profiling remain open. Earlier south-only recordings are still useful art evidence but do not validate the new interruption guard. + +Timing findings and raw derivation are in timing-findings.md / timing-analysis.json. Nine-tick catch-up batches appear in the earlier recorded run; the initiating delay is unproven. No simulation ticks were removed and no acceptance assertion weakened. diff --git a/docs/review/cadence-interruptions/app-summary.json b/docs/review/cadence-interruptions/app-summary.json new file mode 100644 index 00000000..f378b18f --- /dev/null +++ b/docs/review/cadence-interruptions/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 115, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792113539.019, + "passedTests" : 113, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792113234.478, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "47% of duration", + "text" : "2 longest test runs with outlier durations exceeding 29.38s (three standard deviations)" + } + ], + "totalTestCount" : 113 +} diff --git a/docs/review/cadence-interruptions/revision-record.json b/docs/review/cadence-interruptions/revision-record.json new file mode 100644 index 00000000..dee9170b --- /dev/null +++ b/docs/review/cadence-interruptions/revision-record.json @@ -0,0 +1,4 @@ +{ + "runtimeTestSHA256": "29c233b768f1a42448d6bda6032aaf789f6f71e58b3bc61588c7aa23210a5ac3", + "specSHA256": "3fb5a64aa7bc890ad63af5798ed9d9da3dc58419c913968e4e5f83b587784a52" +} diff --git a/docs/review/cadence-interruptions/timing-analysis.json b/docs/review/cadence-interruptions/timing-analysis.json new file mode 100644 index 00000000..38c626f5 --- /dev/null +++ b/docs/review/cadence-interruptions/timing-analysis.json @@ -0,0 +1,140 @@ +[ + { + "source": "outputs/SS-cadence-live-comparison/BP008-stage-4-rep-20-axis-32767-reduced-false-metrics.json", + "mode": "distance", + "recorded": false, + "reduced": false, + "callbacks": 147, + "ticksPerCallback": { + "0": 21, + "1": 103, + "2": 22, + "3": 1 + }, + "medianSimulationMSPerTick": 6.446540355682373, + "maxSimulationMSPerTick": 8.628010749816895, + "renderMSPerCallback": 3.4195971326763126, + "diagnosticMSPerCallback": 1.448328803185703 + }, + { + "source": "outputs/SS-cadence-live-comparison/BP008-stage-4-rep-20-axis-32767-reduced-true-metrics.json", + "mode": "distance", + "recorded": false, + "reduced": true, + "callbacks": 121, + "ticksPerCallback": { + "0": 11, + "1": 73, + "2": 34, + "3": 3 + }, + "medianSimulationMSPerTick": 6.41101598739624, + "maxSimulationMSPerTick": 16.4870023727417, + "renderMSPerCallback": 3.4365062871255163, + "diagnosticMSPerCallback": 1.5051847647044285 + }, + { + "source": "outputs/SS-cadence-live-comparison/BP008-stage-4-rep-21-axis-32767-reduced-false-metrics.json", + "mode": "cadence", + "recorded": false, + "reduced": false, + "callbacks": 145, + "ticksPerCallback": { + "0": 20, + "1": 100, + "2": 25 + }, + "medianSimulationMSPerTick": 6.543993949890137, + "maxSimulationMSPerTick": 9.350061416625977, + "renderMSPerCallback": 2.6711291280286065, + "diagnosticMSPerCallback": 1.4503865406431 + }, + { + "source": "outputs/SS-cadence-live-comparison/BP008-stage-4-rep-21-axis-32767-reduced-true-metrics.json", + "mode": "cadence", + "recorded": false, + "reduced": true, + "callbacks": 147, + "ticksPerCallback": { + "0": 3, + "1": 138, + "2": 6 + }, + "medianSimulationMSPerTick": 6.414473056793213, + "maxSimulationMSPerTick": 11.355042457580566, + "renderMSPerCallback": 2.8738975524902344, + "diagnosticMSPerCallback": 1.554391011088884 + }, + { + "source": "outputs/SS-cadence-recorded-review/BP008-stage-4-rep-20-axis-32767-reduced-false-metrics.json", + "mode": "distance", + "recorded": true, + "reduced": false, + "callbacks": 128, + "ticksPerCallback": { + "0": 14, + "1": 86, + "3": 6, + "4": 1, + "2": 21 + }, + "medianSimulationMSPerTick": 6.577551364898682, + "maxSimulationMSPerTick": 13.453364372253418, + "renderMSPerCallback": 3.6516766995191574, + "diagnosticMSPerCallback": 1.5916135162115097 + }, + { + "source": "outputs/SS-cadence-recorded-review/BP008-stage-4-rep-20-axis-32767-reduced-true-metrics.json", + "mode": "distance", + "recorded": true, + "reduced": true, + "callbacks": 102, + "ticksPerCallback": { + "0": 7, + "1": 62, + "2": 27, + "9": 2, + "4": 2, + "6": 1, + "3": 1 + }, + "medianSimulationMSPerTick": 6.854534149169922, + "maxSimulationMSPerTick": 10.093927383422852, + "renderMSPerCallback": 3.6693939975663725, + "diagnosticMSPerCallback": 1.5821024483325434 + }, + { + "source": "outputs/SS-cadence-recorded-review/BP008-stage-4-rep-21-axis-32767-reduced-false-metrics.json", + "mode": "cadence", + "recorded": true, + "reduced": false, + "callbacks": 138, + "ticksPerCallback": { + "0": 18, + "1": 92, + "2": 26, + "3": 2 + }, + "medianSimulationMSPerTick": 6.646513938903809, + "maxSimulationMSPerTick": 9.84501838684082, + "renderMSPerCallback": 2.891978491907534, + "diagnosticMSPerCallback": 1.6186133674953296 + }, + { + "source": "outputs/SS-cadence-recorded-review/BP008-stage-4-rep-21-axis-32767-reduced-true-metrics.json", + "mode": "cadence", + "recorded": true, + "reduced": true, + "callbacks": 130, + "ticksPerCallback": { + "0": 8, + "1": 100, + "3": 6, + "2": 16 + }, + "medianSimulationMSPerTick": 7.075488567352295, + "maxSimulationMSPerTick": 10.156989097595215, + "renderMSPerCallback": 3.040585151085487, + "diagnosticMSPerCallback": 1.699492564568153 + } +] diff --git a/docs/review/cadence-interruptions/timing-findings.md b/docs/review/cadence-interruptions/timing-findings.md new file mode 100644 index 00000000..4dcfbbb6 --- /dev/null +++ b/docs/review/cadence-interruptions/timing-findings.md @@ -0,0 +1,9 @@ +# Playback timing investigation + +Observed from retained callback costs: median simulation cost per advanced tick is approximately 6.4–7.1 ms in these Debug simulator runs. The recorded full-input Reduced Motion distance run includes two callbacks advancing nine ticks each; the unrecorded counterpart advances at most three per callback. The recorded run's maximum measured simulation cost per individual tick is 10.09 ms, while its maximum callback interval is 152.74 ms. This supports accumulated catch-up work as a contributor after a delay, but does not identify the initial delay's cause. + +Do not drop simulation ticks, change controller speed, remove authoritative actors or weaken coverage to hide the symptom. No production performance fix is justified from callback aggregates alone. The source-frame selection adds only a bounded texture lookup, but it has not been profiled as a call-tree cost. + +Next: profile the same scenario with recording disabled, preserve thread-state and Time Profiler evidence, then repeat the measured condition. Apple describes using Instruments to separate running and blocked thread time in https://developer.apple.com/documentation/xcode/reducing-your-app-s-launch-time and its Release profiling workflow in https://developer.apple.com/videos/play/wwdc2025/306/ . These are tool-method references, not proof of an SS bottleneck. Keep Debug test-fixture evidence distinct from optimized shipping/device performance. + +The expanded animation interruption guard is being validated separately. It does not claim to cure these timing spikes. diff --git a/docs/review/cadence-live-comparison/README.md b/docs/review/cadence-live-comparison/README.md new file mode 100644 index 00000000..63bd3df2 --- /dev/null +++ b/docs/review/cadence-live-comparison/README.md @@ -0,0 +1,21 @@ +# BP-008 live cadence comparison + +Status: app suite passed 112 named tests / 114 executions, zero failures or skips. Result bundle: Test-SSRuntime-2026.10.15_17-53-06--0700.xcresult. + +The test-only PlayerCandidateScene accumulates actual post-collision displacement per simulation tick and selects the corresponding source texture before action evaluation. Original cadence remains the control. Both use identical source PNGs, legal travel route, projection and logical size; no production renderer or simulation changes. + +Matrix: full/half/quarter input × normal/Reduced Motion × original cadence/distance phase. Duration increases at partial input to preserve route distance and repeated cycles. Candidate attachment repetition 20; control 21. + +Experiment stride 120 source units is derived from the candidate's support trajectory, not admitted production metadata. First eligible movement starts at zero, zero travel holds phase, and non-move/unsupported facing resets the segment. Actual travel is accumulated per tick rather than from a rendered-position chord. These interruption semantics remain proposed. + +Still required: stop/start, collision stop, wall slide, reversal, dodge and pause/resume; separate normal/quarter-speed visual review. No production adoption or benchmark closure. + +## Live evidence + +All twelve control/candidate × input × motion-mode captures observed all 16 frames. Normal-mode candidate support-point range: full 2.75, half 3.50, quarter 3.50 logical pixels. Matching original-cadence controls: full 0.75–4.50, half 6.25, quarter 8.25–9.25. The candidate used eight support intervals at each input; controls produced eight/sixteen/thirty-two. Do not equate lower cadence with validated walk appearance. + +Reduced Motion candidate ranges were full 1.75–2.75, half 2.50–3.25, quarter 3.00–3.50. Sampling cadence affects observed extrema; these are projected authored points, not pixel-tracked feet. Raw post-action records and contact-observations.json retain the observations. + +Timing is not accepted: candidate p95 reaches 40.09 ms and maximum 53.19 ms. The core run had finished, but test-order/host effects remain uncontrolled. No sustained frame-rate claim. + +Production behavior remains unchanged. The comparison does not close BP-008, other facings, interruption behavior, visual review, the shared scene or device acceptance. diff --git a/docs/review/cadence-live-comparison/app-summary.json b/docs/review/cadence-live-comparison/app-summary.json new file mode 100644 index 00000000..5aee22e2 --- /dev/null +++ b/docs/review/cadence-live-comparison/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 114, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792112299.15, + "passedTests" : 112, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792111986.258, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "47% of duration", + "text" : "2 longest test runs with outlier durations exceeding 29.79s (three standard deviations)" + } + ], + "totalTestCount" : 112 +} diff --git a/docs/review/cadence-live-comparison/comparison.json b/docs/review/cadence-live-comparison/comparison.json new file mode 100644 index 00000000..a5e831c3 --- /dev/null +++ b/docs/review/cadence-live-comparison/comparison.json @@ -0,0 +1,26060 @@ +[ + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.1960301399230957, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.18794691562652588, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0030870437622070312, + "simulationSeconds": 0.0665130615234375, + "tick": 12 + }, + { + "renderSeconds": 0.002321004867553711, + "simulationSeconds": 0.02779698371887207, + "tick": 17 + }, + { + "renderSeconds": 0.0023889541625976562, + "simulationSeconds": 0.016520023345947266, + "tick": 20 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.011170029640197754, + "tick": 22 + }, + { + "renderSeconds": 0.0031000375747680664, + "simulationSeconds": 0.006476998329162598, + "tick": 23 + }, + { + "renderSeconds": 0.00298309326171875, + "simulationSeconds": 0.006541013717651367, + "tick": 24 + }, + { + "renderSeconds": 0.002539992332458496, + "simulationSeconds": 0.0067549943923950195, + "tick": 25 + }, + { + "renderSeconds": 0.002434968948364258, + "simulationSeconds": 0.006389021873474121, + "tick": 26 + }, + { + "renderSeconds": 0.002236008644104004, + "simulationSeconds": 0.00716090202331543, + "tick": 27 + }, + { + "renderSeconds": 0.003281116485595703, + "simulationSeconds": 0.006593942642211914, + "tick": 28 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006935000419616699, + "tick": 29 + }, + { + "renderSeconds": 0.00232696533203125, + "simulationSeconds": 0.006943106651306152, + "tick": 30 + }, + { + "renderSeconds": 0.0021829605102539062, + "simulationSeconds": 0.006862998008728027, + "tick": 31 + }, + { + "renderSeconds": 0.002674102783203125, + "simulationSeconds": 0.006784915924072266, + "tick": 32 + }, + { + "renderSeconds": 0.0025370121002197266, + "simulationSeconds": 0.0067119598388671875, + "tick": 33 + }, + { + "renderSeconds": 0.002557992935180664, + "simulationSeconds": 0.006804943084716797, + "tick": 34 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.006515979766845703, + "tick": 35 + }, + { + "renderSeconds": 0.002206087112426758, + "simulationSeconds": 0.007104992866516113, + "tick": 36 + }, + { + "renderSeconds": 0.0023789405822753906, + "simulationSeconds": 0.006798982620239258, + "tick": 37 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0.006737947463989258, + "tick": 38 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.006481051445007324, + "tick": 39 + }, + { + "renderSeconds": 0.002557039260864258, + "simulationSeconds": 0.008650898933410645, + "tick": 40 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.006540060043334961, + "tick": 41 + }, + { + "renderSeconds": 0.0030690431594848633, + "simulationSeconds": 0.006696939468383789, + "tick": 42 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.006639957427978516, + "tick": 43 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0.006770014762878418, + "tick": 44 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.006500959396362305, + "tick": 45 + }, + { + "renderSeconds": 0.0022410154342651367, + "simulationSeconds": 0.0065419673919677734, + "tick": 46 + }, + { + "renderSeconds": 0.002084970474243164, + "simulationSeconds": 0.006152987480163574, + "tick": 47 + }, + { + "renderSeconds": 0.0020960569381713867, + "simulationSeconds": 0.006600022315979004, + "tick": 48 + }, + { + "renderSeconds": 0.0023909807205200195, + "simulationSeconds": 0.006245970726013184, + "tick": 49 + }, + { + "renderSeconds": 0.002635955810546875, + "simulationSeconds": 0.006532907485961914, + "tick": 50 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.006588101387023926, + "tick": 51 + }, + { + "renderSeconds": 0.0026030540466308594, + "simulationSeconds": 0.006938934326171875, + "tick": 52 + }, + { + "renderSeconds": 0.003278970718383789, + "simulationSeconds": 0.006558060646057129, + "tick": 53 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.006628990173339844, + "tick": 54 + }, + { + "renderSeconds": 0.0026699304580688477, + "simulationSeconds": 0.006399989128112793, + "tick": 55 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006524085998535156, + "tick": 56 + }, + { + "renderSeconds": 0.0029349327087402344, + "simulationSeconds": 0.006417989730834961, + "tick": 57 + }, + { + "renderSeconds": 0.003050088882446289, + "simulationSeconds": 0.007402896881103516, + "tick": 58 + }, + { + "renderSeconds": 0.0031969547271728516, + "simulationSeconds": 0.007511019706726074, + "tick": 59 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0.007386922836303711, + "tick": 60 + }, + { + "renderSeconds": 0.0032140016555786133, + "simulationSeconds": 0.00763094425201416, + "tick": 61 + }, + { + "renderSeconds": 0.0034439563751220703, + "simulationSeconds": 0.00760805606842041, + "tick": 62 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0.008161067962646484, + "tick": 63 + }, + { + "renderSeconds": 0.003737926483154297, + "simulationSeconds": 0.0091170072555542, + "tick": 64 + }, + { + "renderSeconds": 0.0037720203399658203, + "simulationSeconds": 0.008883953094482422, + "tick": 65 + }, + { + "renderSeconds": 0.003545999526977539, + "simulationSeconds": 0.00774693489074707, + "tick": 66 + }, + { + "renderSeconds": 0.0038350820541381836, + "simulationSeconds": 0.00902092456817627, + "tick": 67 + }, + { + "renderSeconds": 0.0032150745391845703, + "simulationSeconds": 0.018878936767578125, + "tick": 69 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.0075740814208984375, + "tick": 70 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.006349921226501465, + "tick": 71 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.006361961364746094, + "tick": 72 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.00625300407409668, + "tick": 73 + }, + { + "renderSeconds": 0.003157973289489746, + "simulationSeconds": 0.0066460371017456055, + "tick": 74 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006901979446411133, + "tick": 75 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006623029708862305, + "tick": 76 + }, + { + "renderSeconds": 0.002682924270629883, + "simulationSeconds": 0.006324052810668945, + "tick": 77 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.006471991539001465, + "tick": 78 + }, + { + "renderSeconds": 0.0031189918518066406, + "simulationSeconds": 0.006315946578979492, + "tick": 79 + }, + { + "renderSeconds": 0.003170013427734375, + "simulationSeconds": 0.006361961364746094, + "tick": 80 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0.0062950849533081055, + "tick": 81 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.006657958030700684, + "tick": 82 + }, + { + "renderSeconds": 0.0024259090423583984, + "simulationSeconds": 0.006847023963928223, + "tick": 83 + }, + { + "renderSeconds": 0.0028400421142578125, + "simulationSeconds": 0.00660097599029541, + "tick": 84 + }, + { + "renderSeconds": 0.0026030540466308594, + "simulationSeconds": 0.006051063537597656, + "tick": 85 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.00651097297668457, + "tick": 86 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.006163954734802246, + "tick": 87 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.006429076194763184, + "tick": 88 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.0061380863189697266, + "tick": 89 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.00677800178527832, + "tick": 90 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.00636899471282959, + "tick": 91 + }, + { + "renderSeconds": 0.002610921859741211, + "simulationSeconds": 0.0066869258880615234, + "tick": 92 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.007145047187805176, + "tick": 93 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.006255030632019043, + "tick": 94 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.006569981575012207, + "tick": 95 + }, + { + "renderSeconds": 0.00315701961517334, + "simulationSeconds": 0.006353974342346191, + "tick": 96 + }, + { + "renderSeconds": 0.0028759241104125977, + "simulationSeconds": 0.007103919982910156, + "tick": 97 + }, + { + "renderSeconds": 0.003255009651184082, + "simulationSeconds": 0.006390929222106934, + "tick": 98 + }, + { + "renderSeconds": 0.00282895565032959, + "simulationSeconds": 0.006396889686584473, + "tick": 99 + }, + { + "renderSeconds": 0.0029860734939575195, + "simulationSeconds": 0.007373929023742676, + "tick": 100 + }, + { + "renderSeconds": 0.0031920671463012695, + "simulationSeconds": 0.00727999210357666, + "tick": 101 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0.0074950456619262695, + "tick": 102 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.00707399845123291, + "tick": 103 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.00652003288269043, + "tick": 104 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006728053092956543, + "tick": 105 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.006528019905090332, + "tick": 106 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.006624937057495117, + "tick": 107 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.006147980690002441, + "tick": 108 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.006325960159301758, + "tick": 109 + }, + { + "renderSeconds": 0.002568960189819336, + "simulationSeconds": 0.006621003150939941, + "tick": 110 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.007017016410827637, + "tick": 111 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.006775975227355957, + "tick": 112 + }, + { + "renderSeconds": 0.0028649568557739258, + "simulationSeconds": 0.006145000457763672, + "tick": 113 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.006425023078918457, + "tick": 114 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.00672602653503418, + "tick": 115 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0.007526040077209473, + "tick": 116 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.0062569379806518555, + "tick": 117 + }, + { + "renderSeconds": 0.0028759241104125977, + "simulationSeconds": 0.006560921669006348, + "tick": 118 + }, + { + "renderSeconds": 0.0027570724487304688, + "simulationSeconds": 0.006515979766845703, + "tick": 119 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.006891012191772461, + "tick": 120 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.006464958190917969, + "tick": 121 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.0062209367752075195, + "tick": 122 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006157040596008301, + "tick": 123 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.00678706169128418, + "tick": 124 + }, + { + "renderSeconds": 0.002496004104614258, + "simulationSeconds": 0.006557941436767578, + "tick": 125 + }, + { + "renderSeconds": 0.0024830102920532227, + "simulationSeconds": 0.0063059329986572266, + "tick": 126 + }, + { + "renderSeconds": 0.0026320219039916992, + "simulationSeconds": 0.0066640377044677734, + "tick": 127 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.00672304630279541, + "tick": 128 + }, + { + "renderSeconds": 0.002563953399658203, + "simulationSeconds": 0.006916999816894531, + "tick": 129 + }, + { + "renderSeconds": 0.0025200843811035156, + "simulationSeconds": 0.006780028343200684, + "tick": 130 + }, + { + "renderSeconds": 0.0025489330291748047, + "simulationSeconds": 0.0061359405517578125, + "tick": 131 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.0067299604415893555, + "tick": 132 + }, + { + "renderSeconds": 0.0023529529571533203, + "simulationSeconds": 0.006146073341369629, + "tick": 133 + }, + { + "renderSeconds": 0.002547025680541992, + "simulationSeconds": 0.006976008415222168, + "tick": 134 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.0063860416412353516, + "tick": 135 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.0069119930267333984, + "tick": 136 + }, + { + "renderSeconds": 0.002642035484313965, + "simulationSeconds": 0.006179928779602051, + "tick": 137 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.006806015968322754, + "tick": 138 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.006162047386169434, + "tick": 139 + }, + { + "renderSeconds": 0.0027600526809692383, + "simulationSeconds": 0.006265044212341309, + "tick": 140 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.007001996040344238, + "tick": 141 + }, + { + "renderSeconds": 0.0025609731674194336, + "simulationSeconds": 0.006712079048156738, + "tick": 142 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.007284045219421387, + "tick": 143 + }, + { + "renderSeconds": 0.0025529861450195312, + "simulationSeconds": 0.006332993507385254, + "tick": 144 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.006372928619384766, + "tick": 145 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.0061490535736083984, + "tick": 146 + }, + { + "renderSeconds": 0.0026570558547973633, + "simulationSeconds": 0.006515026092529297, + "tick": 147 + }, + { + "renderSeconds": 0.0025959014892578125, + "simulationSeconds": 0.0066100358963012695, + "tick": 148 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.006153106689453125, + "tick": 149 + }, + { + "renderSeconds": 0.0024989843368530273, + "simulationSeconds": 0.006316065788269043, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 202, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004294872283935547, + "preparationSeconds": 0.34455597400665283, + "reducedMotion": false, + "renderSeconds": 0.5509546995162964, + "repetition": 1, + "scenePreparationSeconds": 0, + "simulationSeconds": 0.9890874624252319, + "snapshotBuildCount": 132, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 204.3065000034403, + "postActionRecords": 132, + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.20382189750671387, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.212149977684021, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.08340799808502197, + "tick": 14 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.029358983039855957, + "tick": 19 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.018031954765319824, + "tick": 22 + }, + { + "renderSeconds": 0.00250399112701416, + "simulationSeconds": 0.01285398006439209, + "tick": 24 + }, + { + "renderSeconds": 0.0023909807205200195, + "simulationSeconds": 0.006296038627624512, + "tick": 25 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.006533026695251465, + "tick": 26 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.0060269832611083984, + "tick": 27 + }, + { + "renderSeconds": 0.002759099006652832, + "simulationSeconds": 0.006622910499572754, + "tick": 28 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.006242036819458008, + "tick": 29 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.007416963577270508, + "tick": 30 + }, + { + "renderSeconds": 0.003320932388305664, + "simulationSeconds": 0.006832003593444824, + "tick": 31 + }, + { + "renderSeconds": 0.0038499832153320312, + "simulationSeconds": 0.007439017295837402, + "tick": 32 + }, + { + "renderSeconds": 0.0030471086502075195, + "simulationSeconds": 0.0074950456619262695, + "tick": 33 + }, + { + "renderSeconds": 0.0032520294189453125, + "simulationSeconds": 0.008740067481994629, + "tick": 34 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.01412498950958252, + "tick": 36 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.007673978805541992, + "tick": 37 + }, + { + "renderSeconds": 0.003381967544555664, + "simulationSeconds": 0.00751805305480957, + "tick": 38 + }, + { + "renderSeconds": 0.002583026885986328, + "simulationSeconds": 0.006493091583251953, + "tick": 39 + }, + { + "renderSeconds": 0.0030510425567626953, + "simulationSeconds": 0.006729006767272949, + "tick": 40 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.006344914436340332, + "tick": 41 + }, + { + "renderSeconds": 0.0032559633255004883, + "simulationSeconds": 0.006905078887939453, + "tick": 42 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006441950798034668, + "tick": 43 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.01067197322845459, + "tick": 44 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006314992904663086, + "tick": 45 + }, + { + "renderSeconds": 0.0028609037399291992, + "simulationSeconds": 0.006135106086730957, + "tick": 46 + }, + { + "renderSeconds": 0.0030469894409179688, + "simulationSeconds": 0.006512045860290527, + "tick": 47 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006080985069274902, + "tick": 48 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.006090044975280762, + "tick": 49 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.006464958190917969, + "tick": 50 + }, + { + "renderSeconds": 0.0026619434356689453, + "simulationSeconds": 0.0065500736236572266, + "tick": 51 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006211996078491211, + "tick": 52 + }, + { + "renderSeconds": 0.003134012222290039, + "simulationSeconds": 0.006365060806274414, + "tick": 53 + }, + { + "renderSeconds": 0.0030989646911621094, + "simulationSeconds": 0.00713503360748291, + "tick": 54 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.0073670148849487305, + "tick": 55 + }, + { + "renderSeconds": 0.003419041633605957, + "simulationSeconds": 0.007413983345031738, + "tick": 56 + }, + { + "renderSeconds": 0.0031890869140625, + "simulationSeconds": 0.007557988166809082, + "tick": 57 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.0074950456619262695, + "tick": 58 + }, + { + "renderSeconds": 0.0030270814895629883, + "simulationSeconds": 0.0072939395904541016, + "tick": 59 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.007250070571899414, + "tick": 60 + }, + { + "renderSeconds": 0.002723097801208496, + "simulationSeconds": 0.006350994110107422, + "tick": 61 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.0067969560623168945, + "tick": 62 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.006720066070556641, + "tick": 63 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.0060350894927978516, + "tick": 64 + }, + { + "renderSeconds": 0.0026799440383911133, + "simulationSeconds": 0.0071610212326049805, + "tick": 65 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.0065250396728515625, + "tick": 66 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.006690025329589844, + "tick": 67 + }, + { + "renderSeconds": 0.0027390718460083008, + "simulationSeconds": 0.0061370134353637695, + "tick": 68 + }, + { + "renderSeconds": 0.0029599666595458984, + "simulationSeconds": 0.006536006927490234, + "tick": 69 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0.007310986518859863, + "tick": 70 + }, + { + "renderSeconds": 0.0027540922164916992, + "simulationSeconds": 0.0065059661865234375, + "tick": 71 + }, + { + "renderSeconds": 0.003113985061645508, + "simulationSeconds": 0.007341980934143066, + "tick": 72 + }, + { + "renderSeconds": 0.0030689239501953125, + "simulationSeconds": 0.007483005523681641, + "tick": 73 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006672978401184082, + "tick": 74 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.007097005844116211, + "tick": 75 + }, + { + "renderSeconds": 0.003323078155517578, + "simulationSeconds": 0.007313966751098633, + "tick": 76 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.00752711296081543, + "tick": 77 + }, + { + "renderSeconds": 0.003125905990600586, + "simulationSeconds": 0.007209062576293945, + "tick": 78 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.0076329708099365234, + "tick": 79 + }, + { + "renderSeconds": 0.0032919645309448242, + "simulationSeconds": 0.007481932640075684, + "tick": 80 + }, + { + "renderSeconds": 0.0031980276107788086, + "simulationSeconds": 0.008254051208496094, + "tick": 81 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.006967067718505859, + "tick": 82 + }, + { + "renderSeconds": 0.003074049949645996, + "simulationSeconds": 0.007283926010131836, + "tick": 83 + }, + { + "renderSeconds": 0.003086090087890625, + "simulationSeconds": 0.007187008857727051, + "tick": 84 + }, + { + "renderSeconds": 0.0036159753799438477, + "simulationSeconds": 0.008285999298095703, + "tick": 85 + }, + { + "renderSeconds": 0.0033799409866333008, + "simulationSeconds": 0.007161974906921387, + "tick": 86 + }, + { + "renderSeconds": 0.003422975540161133, + "simulationSeconds": 0.008015036582946777, + "tick": 87 + }, + { + "renderSeconds": 0.002919912338256836, + "simulationSeconds": 0.0071800947189331055, + "tick": 88 + }, + { + "renderSeconds": 0.003102898597717285, + "simulationSeconds": 0.007123112678527832, + "tick": 89 + }, + { + "renderSeconds": 0.0030710697174072266, + "simulationSeconds": 0.006982922554016113, + "tick": 90 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.007077932357788086, + "tick": 91 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0.0070639848709106445, + "tick": 92 + }, + { + "renderSeconds": 0.0030630826950073242, + "simulationSeconds": 0.007185935974121094, + "tick": 93 + }, + { + "renderSeconds": 0.0030199289321899414, + "simulationSeconds": 0.007216095924377441, + "tick": 94 + }, + { + "renderSeconds": 0.002698063850402832, + "simulationSeconds": 0.006490945816040039, + "tick": 95 + }, + { + "renderSeconds": 0.002599954605102539, + "simulationSeconds": 0.006116986274719238, + "tick": 96 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.0065010786056518555, + "tick": 97 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.006108999252319336, + "tick": 98 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.0067059993743896484, + "tick": 99 + }, + { + "renderSeconds": 0.0030089616775512695, + "simulationSeconds": 0.006448030471801758, + "tick": 100 + }, + { + "renderSeconds": 0.0024950504302978516, + "simulationSeconds": 0.006569981575012207, + "tick": 101 + }, + { + "renderSeconds": 0.0025600194931030273, + "simulationSeconds": 0.006419062614440918, + "tick": 102 + }, + { + "renderSeconds": 0.0026640892028808594, + "simulationSeconds": 0.006841063499450684, + "tick": 103 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.00843203067779541, + "tick": 104 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 0.0069419145584106445, + "tick": 105 + }, + { + "renderSeconds": 0.0030339956283569336, + "simulationSeconds": 0.006611943244934082, + "tick": 106 + }, + { + "renderSeconds": 0.0029979944229125977, + "simulationSeconds": 0.007438063621520996, + "tick": 107 + }, + { + "renderSeconds": 0.0030940771102905273, + "simulationSeconds": 0.007393002510070801, + "tick": 108 + }, + { + "renderSeconds": 0.002707958221435547, + "simulationSeconds": 0.006970047950744629, + "tick": 109 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.006711006164550781, + "tick": 110 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.00642704963684082, + "tick": 111 + }, + { + "renderSeconds": 0.0027910470962524414, + "simulationSeconds": 0.008276939392089844, + "tick": 112 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.006189942359924316, + "tick": 113 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.007559061050415039, + "tick": 114 + }, + { + "renderSeconds": 0.002772092819213867, + "simulationSeconds": 0.006134033203125, + "tick": 115 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.006528973579406738, + "tick": 116 + }, + { + "renderSeconds": 0.0026770830154418945, + "simulationSeconds": 0.006579995155334473, + "tick": 117 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.0066640377044677734, + "tick": 118 + }, + { + "renderSeconds": 0.002723097801208496, + "simulationSeconds": 0.006415963172912598, + "tick": 119 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.006495952606201172, + "tick": 120 + }, + { + "renderSeconds": 0.0031380653381347656, + "simulationSeconds": 0.0063610076904296875, + "tick": 121 + }, + { + "renderSeconds": 0.0025310516357421875, + "simulationSeconds": 0.006593942642211914, + "tick": 122 + }, + { + "renderSeconds": 0.002816915512084961, + "simulationSeconds": 0.0067310333251953125, + "tick": 123 + }, + { + "renderSeconds": 0.002649068832397461, + "simulationSeconds": 0.006313920021057129, + "tick": 124 + }, + { + "renderSeconds": 0.0027059316635131836, + "simulationSeconds": 0.0066950321197509766, + "tick": 125 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.00633394718170166, + "tick": 126 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.006703972816467285, + "tick": 127 + }, + { + "renderSeconds": 0.0027490854263305664, + "simulationSeconds": 0.006534934043884277, + "tick": 128 + }, + { + "renderSeconds": 0.0021630525588989258, + "simulationSeconds": 0.008242011070251465, + "tick": 129 + }, + { + "renderSeconds": 0.0025479793548583984, + "simulationSeconds": 0.006197929382324219, + "tick": 130 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.007111907005310059, + "tick": 131 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006353974342346191, + "tick": 132 + }, + { + "renderSeconds": 0.002559065818786621, + "simulationSeconds": 0.006596088409423828, + "tick": 133 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.006381034851074219, + "tick": 134 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.0069179534912109375, + "tick": 135 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.00648808479309082, + "tick": 136 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.006275057792663574, + "tick": 137 + }, + { + "renderSeconds": 0.002539992332458496, + "simulationSeconds": 0.006260037422180176, + "tick": 138 + }, + { + "renderSeconds": 0.0026540756225585938, + "simulationSeconds": 0.006316065788269043, + "tick": 139 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0.006209015846252441, + "tick": 140 + }, + { + "renderSeconds": 0.0026149749755859375, + "simulationSeconds": 0.00678098201751709, + "tick": 141 + }, + { + "renderSeconds": 0.0024629831314086914, + "simulationSeconds": 0.006921052932739258, + "tick": 142 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006981015205383301, + "tick": 143 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.006506919860839844, + "tick": 144 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.0062220096588134766, + "tick": 145 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006014108657836914, + "tick": 146 + }, + { + "renderSeconds": 0.002544999122619629, + "simulationSeconds": 0.006894946098327637, + "tick": 147 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.006421089172363281, + "tick": 148 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0.006181955337524414, + "tick": 149 + }, + { + "renderSeconds": 0.0025409460067749023, + "simulationSeconds": 0.007151007652282715, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 198, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004763245582580566, + "preparationSeconds": 0.3488810062408447, + "reducedMotion": false, + "renderSeconds": 0.5806552171707153, + "repetition": 2, + "scenePreparationSeconds": 0, + "simulationSeconds": 1.0096168518066406, + "snapshotBuildCount": 130, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 235.4252083459869, + "postActionRecords": 130, + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.22535884380340576, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.001032114028930664, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0010089874267578125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009630918502807617, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007239580154418945, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0028209686279296875, + "simulationSeconds": 0.005464076995849609, + "tick": 1 + }, + { + "renderSeconds": 0.0022569894790649414, + "simulationSeconds": 0.006546974182128906, + "tick": 2 + }, + { + "renderSeconds": 0.002351999282836914, + "simulationSeconds": 0.006582021713256836, + "tick": 3 + }, + { + "renderSeconds": 0.0024590492248535156, + "simulationSeconds": 0.0067789554595947266, + "tick": 4 + }, + { + "renderSeconds": 0.0021039247512817383, + "simulationSeconds": 0.0068579912185668945, + "tick": 5 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.0070459842681884766, + "tick": 6 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.007136940956115723, + "tick": 7 + }, + { + "renderSeconds": 0.002337932586669922, + "simulationSeconds": 0.0067299604415893555, + "tick": 8 + }, + { + "renderSeconds": 0.002247929573059082, + "simulationSeconds": 0.006857037544250488, + "tick": 9 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.006528019905090332, + "tick": 10 + }, + { + "renderSeconds": 0.0032329559326171875, + "simulationSeconds": 0.006935000419616699, + "tick": 11 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.006502032279968262, + "tick": 12 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.00677800178527832, + "tick": 13 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0.012321949005126953, + "tick": 15 + }, + { + "renderSeconds": 0.0029860734939575195, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.006248950958251953, + "tick": 16 + }, + { + "renderSeconds": 0.002515077590942383, + "simulationSeconds": 0.006730914115905762, + "tick": 17 + }, + { + "renderSeconds": 0.002584099769592285, + "simulationSeconds": 0.00625300407409668, + "tick": 18 + }, + { + "renderSeconds": 0.0025290250778198242, + "simulationSeconds": 0.0066759586334228516, + "tick": 19 + }, + { + "renderSeconds": 0.0029450654983520508, + "simulationSeconds": 0.006675004959106445, + "tick": 20 + }, + { + "renderSeconds": 0.0024290084838867188, + "simulationSeconds": 0.0064040422439575195, + "tick": 21 + }, + { + "renderSeconds": 0.0032080411911010742, + "simulationSeconds": 0.006471991539001465, + "tick": 22 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.008752942085266113, + "tick": 23 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.0075550079345703125, + "tick": 24 + }, + { + "renderSeconds": 0.0030939579010009766, + "simulationSeconds": 0.007876992225646973, + "tick": 25 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.007529020309448242, + "tick": 26 + }, + { + "renderSeconds": 0.0032019615173339844, + "simulationSeconds": 0.007116913795471191, + "tick": 27 + }, + { + "renderSeconds": 0.003133058547973633, + "simulationSeconds": 0.0070819854736328125, + "tick": 28 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.014937996864318848, + "tick": 30 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 9.5367431640625e-07, + "tick": 30 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.006358981132507324, + "tick": 31 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.007668972015380859, + "tick": 32 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.0075310468673706055, + "tick": 33 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.007417082786560059, + "tick": 34 + }, + { + "renderSeconds": 0.0033239126205444336, + "simulationSeconds": 0.007059931755065918, + "tick": 35 + }, + { + "renderSeconds": 0.0025240182876586914, + "simulationSeconds": 0.006278038024902344, + "tick": 36 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.006365060806274414, + "tick": 37 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.006425976753234863, + "tick": 38 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0.007177948951721191, + "tick": 39 + }, + { + "renderSeconds": 0.002862095832824707, + "simulationSeconds": 0.007490992546081543, + "tick": 40 + }, + { + "renderSeconds": 0.0032470226287841797, + "simulationSeconds": 0.007432103157043457, + "tick": 41 + }, + { + "renderSeconds": 0.002562999725341797, + "simulationSeconds": 0.006314992904663086, + "tick": 42 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.006814002990722656, + "tick": 43 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0.013074040412902832, + "tick": 45 + }, + { + "renderSeconds": 0.003303050994873047, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.0030069351196289062, + "simulationSeconds": 0.00671994686126709, + "tick": 46 + }, + { + "renderSeconds": 0.0024770498275756836, + "simulationSeconds": 0.006376981735229492, + "tick": 47 + }, + { + "renderSeconds": 0.0021439790725708008, + "simulationSeconds": 0.006690025329589844, + "tick": 48 + }, + { + "renderSeconds": 0.0023679733276367188, + "simulationSeconds": 0.0063970088958740234, + "tick": 49 + }, + { + "renderSeconds": 0.0020829439163208008, + "simulationSeconds": 0.006342053413391113, + "tick": 50 + }, + { + "renderSeconds": 0.002588033676147461, + "simulationSeconds": 0.006280064582824707, + "tick": 51 + }, + { + "renderSeconds": 0.002888917922973633, + "simulationSeconds": 0.006286025047302246, + "tick": 52 + }, + { + "renderSeconds": 0.002716064453125, + "simulationSeconds": 0.006382942199707031, + "tick": 53 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.006468057632446289, + "tick": 54 + }, + { + "renderSeconds": 0.0024410486221313477, + "simulationSeconds": 0.006109952926635742, + "tick": 55 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.006365060806274414, + "tick": 56 + }, + { + "renderSeconds": 0.0023549795150756836, + "simulationSeconds": 0.006245017051696777, + "tick": 57 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.006579041481018066, + "tick": 58 + }, + { + "renderSeconds": 0.0024999380111694336, + "simulationSeconds": 0.012107014656066895, + "tick": 60 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 9.5367431640625e-07, + "tick": 60 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006021976470947266, + "tick": 61 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.006505012512207031, + "tick": 62 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.0064640045166015625, + "tick": 63 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006446957588195801, + "tick": 64 + }, + { + "renderSeconds": 0.002418041229248047, + "simulationSeconds": 0.006536006927490234, + "tick": 65 + }, + { + "renderSeconds": 0.0027850866317749023, + "simulationSeconds": 0.00622105598449707, + "tick": 66 + }, + { + "renderSeconds": 0.0024499893188476562, + "simulationSeconds": 0.006260991096496582, + "tick": 67 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.00643002986907959, + "tick": 68 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.006852984428405762, + "tick": 69 + }, + { + "renderSeconds": 0.002586960792541504, + "simulationSeconds": 0.006345987319946289, + "tick": 70 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.006537914276123047, + "tick": 71 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.006595969200134277, + "tick": 72 + }, + { + "renderSeconds": 0.003011941909790039, + "simulationSeconds": 0.006500959396362305, + "tick": 73 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.011994004249572754, + "tick": 75 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.006743073463439941, + "tick": 76 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.006090044975280762, + "tick": 77 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.0062389373779296875, + "tick": 78 + }, + { + "renderSeconds": 0.00274503231048584, + "simulationSeconds": 0.006788015365600586, + "tick": 79 + }, + { + "renderSeconds": 0.0029109716415405273, + "simulationSeconds": 0.006515026092529297, + "tick": 80 + }, + { + "renderSeconds": 0.002595067024230957, + "simulationSeconds": 0.007138967514038086, + "tick": 81 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.006157040596008301, + "tick": 82 + }, + { + "renderSeconds": 0.002721071243286133, + "simulationSeconds": 0.00662994384765625, + "tick": 83 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.007743954658508301, + "tick": 84 + }, + { + "renderSeconds": 0.002514958381652832, + "simulationSeconds": 0.00648808479309082, + "tick": 85 + }, + { + "renderSeconds": 0.0030940771102905273, + "simulationSeconds": 0.007215023040771484, + "tick": 86 + }, + { + "renderSeconds": 0.003165006637573242, + "simulationSeconds": 0.0075910091400146484, + "tick": 87 + }, + { + "renderSeconds": 0.0027979612350463867, + "simulationSeconds": 0.007528066635131836, + "tick": 88 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.012282967567443848, + "tick": 90 + }, + { + "renderSeconds": 0.003096938133239746, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.007269024848937988, + "tick": 91 + }, + { + "renderSeconds": 0.0032039880752563477, + "simulationSeconds": 0.007729053497314453, + "tick": 92 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.006969928741455078, + "tick": 93 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.006328940391540527, + "tick": 94 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.006893038749694824, + "tick": 95 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006228089332580566, + "tick": 96 + }, + { + "renderSeconds": 0.00266110897064209, + "simulationSeconds": 0.006579995155334473, + "tick": 97 + }, + { + "renderSeconds": 0.0029990673065185547, + "simulationSeconds": 0.006788015365600586, + "tick": 98 + }, + { + "renderSeconds": 0.002982020378112793, + "simulationSeconds": 0.00707399845123291, + "tick": 99 + }, + { + "renderSeconds": 0.0027059316635131836, + "simulationSeconds": 0.0062400102615356445, + "tick": 100 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.006819009780883789, + "tick": 101 + }, + { + "renderSeconds": 0.0022430419921875, + "simulationSeconds": 0.006358027458190918, + "tick": 102 + }, + { + "renderSeconds": 0.002158045768737793, + "simulationSeconds": 0.007277965545654297, + "tick": 103 + }, + { + "renderSeconds": 0.0027060508728027344, + "simulationSeconds": 0.012840032577514648, + "tick": 105 + }, + { + "renderSeconds": 0.003104090690612793, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002380967140197754, + "simulationSeconds": 0.006875038146972656, + "tick": 106 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006912946701049805, + "tick": 107 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.006533026695251465, + "tick": 108 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.006645917892456055, + "tick": 109 + }, + { + "renderSeconds": 0.002255082130432129, + "simulationSeconds": 0.006758928298950195, + "tick": 110 + }, + { + "renderSeconds": 0.0021209716796875, + "simulationSeconds": 0.007072925567626953, + "tick": 111 + }, + { + "renderSeconds": 0.002308964729309082, + "simulationSeconds": 0.00704193115234375, + "tick": 112 + }, + { + "renderSeconds": 0.002043008804321289, + "simulationSeconds": 0.006395936012268066, + "tick": 113 + }, + { + "renderSeconds": 0.0021600723266601562, + "simulationSeconds": 0.006534934043884277, + "tick": 114 + }, + { + "renderSeconds": 0.0029289722442626953, + "simulationSeconds": 0.0066950321197509766, + "tick": 115 + }, + { + "renderSeconds": 0.0020450353622436523, + "simulationSeconds": 0.006786942481994629, + "tick": 116 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.006642937660217285, + "tick": 117 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.006850004196166992, + "tick": 118 + }, + { + "renderSeconds": 0.0026398897171020508, + "simulationSeconds": 0.01243901252746582, + "tick": 120 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0022989511489868164, + "simulationSeconds": 0.007230997085571289, + "tick": 121 + }, + { + "renderSeconds": 0.0020990371704101562, + "simulationSeconds": 0.006497979164123535, + "tick": 122 + }, + { + "renderSeconds": 0.0030279159545898438, + "simulationSeconds": 0.00678098201751709, + "tick": 123 + }, + { + "renderSeconds": 0.0021010637283325195, + "simulationSeconds": 0.006104946136474609, + "tick": 124 + }, + { + "renderSeconds": 0.0020580291748046875, + "simulationSeconds": 0.006311893463134766, + "tick": 125 + }, + { + "renderSeconds": 0.002371072769165039, + "simulationSeconds": 0.0066928863525390625, + "tick": 126 + }, + { + "renderSeconds": 0.0020509958267211914, + "simulationSeconds": 0.006639957427978516, + "tick": 127 + }, + { + "renderSeconds": 0.0020769834518432617, + "simulationSeconds": 0.006350040435791016, + "tick": 128 + }, + { + "renderSeconds": 0.0020159482955932617, + "simulationSeconds": 0.006481051445007324, + "tick": 129 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006107926368713379, + "tick": 130 + }, + { + "renderSeconds": 0.002497076988220215, + "simulationSeconds": 0.0066100358963012695, + "tick": 131 + }, + { + "renderSeconds": 0.002496957778930664, + "simulationSeconds": 0.006425976753234863, + "tick": 132 + }, + { + "renderSeconds": 0.002453923225402832, + "simulationSeconds": 0.0064449310302734375, + "tick": 133 + }, + { + "renderSeconds": 0.0024110078811645508, + "simulationSeconds": 0.012115001678466797, + "tick": 135 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002400994300842285, + "simulationSeconds": 0.006409049034118652, + "tick": 136 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.006339073181152344, + "tick": 137 + }, + { + "renderSeconds": 0.0023980140686035156, + "simulationSeconds": 0.006659030914306641, + "tick": 138 + }, + { + "renderSeconds": 0.0025800466537475586, + "simulationSeconds": 0.006152987480163574, + "tick": 139 + }, + { + "renderSeconds": 0.0024089813232421875, + "simulationSeconds": 0.006378054618835449, + "tick": 140 + }, + { + "renderSeconds": 0.0024999380111694336, + "simulationSeconds": 0.006345987319946289, + "tick": 141 + }, + { + "renderSeconds": 0.0026050806045532227, + "simulationSeconds": 0.006392955780029297, + "tick": 142 + }, + { + "renderSeconds": 0.0026110410690307617, + "simulationSeconds": 0.005936980247497559, + "tick": 143 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.005958914756774902, + "tick": 144 + }, + { + "renderSeconds": 0.002525925636291504, + "simulationSeconds": 0.0061609745025634766, + "tick": 145 + }, + { + "renderSeconds": 0.0025769472122192383, + "simulationSeconds": 0.005976080894470215, + "tick": 146 + }, + { + "renderSeconds": 0.0024590492248535156, + "simulationSeconds": 0.006003975868225098, + "tick": 147 + }, + { + "renderSeconds": 0.0025850534439086914, + "simulationSeconds": 0.005981922149658203, + "tick": 148 + }, + { + "renderSeconds": 0.002526998519897461, + "simulationSeconds": 0.01179802417755127, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03568845835980028, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 240, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004402756690979004, + "preparationSeconds": 0.5262399911880493, + "reducedMotion": false, + "renderSeconds": 0.3999685049057007, + "repetition": 0, + "scenePreparationSeconds": 0.1822199821472168, + "simulationSeconds": 0.9918711185455322, + "snapshotBuildCount": 153, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986, + "postActionRecords": 151, + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2377338409423828, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0012400150299072266, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009100437164306641, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001031041145324707, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010209083557128906, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003410935401916504, + "simulationSeconds": 0.0061370134353637695, + "tick": 1 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.006293892860412598, + "tick": 2 + }, + { + "renderSeconds": 0.0026749372482299805, + "simulationSeconds": 0.012283086776733398, + "tick": 4 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.006502985954284668, + "tick": 5 + }, + { + "renderSeconds": 0.0029948949813842773, + "simulationSeconds": 0.0074149370193481445, + "tick": 6 + }, + { + "renderSeconds": 0.003007054328918457, + "simulationSeconds": 0.006325960159301758, + "tick": 7 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.002720952033996582, + "simulationSeconds": 0.00748598575592041, + "tick": 8 + }, + { + "renderSeconds": 0.002466917037963867, + "simulationSeconds": 0.0063250064849853516, + "tick": 9 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.006538987159729004, + "tick": 10 + }, + { + "renderSeconds": 0.002729058265686035, + "simulationSeconds": 0.013218045234680176, + "tick": 12 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0.0062160491943359375, + "tick": 13 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.0066280364990234375, + "tick": 14 + }, + { + "renderSeconds": 0.002830028533935547, + "simulationSeconds": 0.0070160627365112305, + "tick": 15 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 0.007055044174194336, + "tick": 16 + }, + { + "renderSeconds": 0.0030689239501953125, + "simulationSeconds": 0.006967067718505859, + "tick": 17 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.012295961380004883, + "tick": 19 + }, + { + "renderSeconds": 0.003435969352722168, + "simulationSeconds": 0.006457090377807617, + "tick": 20 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.006219029426574707, + "tick": 21 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.0075190067291259766, + "tick": 22 + }, + { + "renderSeconds": 0.002772092819213867, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006358981132507324, + "tick": 23 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.007627010345458984, + "tick": 24 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.006262063980102539, + "tick": 25 + }, + { + "renderSeconds": 0.0030670166015625, + "simulationSeconds": 0.012335896492004395, + "tick": 27 + }, + { + "renderSeconds": 0.0029609203338623047, + "simulationSeconds": 0.0060689449310302734, + "tick": 28 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.007671952247619629, + "tick": 29 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.006492018699645996, + "tick": 30 + }, + { + "renderSeconds": 0.0026519298553466797, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.0065190792083740234, + "tick": 31 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0.006369948387145996, + "tick": 32 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.013339042663574219, + "tick": 34 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006659030914306641, + "tick": 35 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.006172060966491699, + "tick": 36 + }, + { + "renderSeconds": 0.0032140016555786133, + "simulationSeconds": 0.007820963859558105, + "tick": 37 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 0.0065909624099731445, + "tick": 38 + }, + { + "renderSeconds": 0.0022339820861816406, + "simulationSeconds": 0.006538033485412598, + "tick": 39 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.006570935249328613, + "tick": 40 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.01282203197479248, + "tick": 42 + }, + { + "renderSeconds": 0.0028449296951293945, + "simulationSeconds": 0.006452083587646484, + "tick": 43 + }, + { + "renderSeconds": 0.0034940242767333984, + "simulationSeconds": 0.006685018539428711, + "tick": 44 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.006024003028869629, + "tick": 45 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0027909278869628906, + "simulationSeconds": 0.0060089826583862305, + "tick": 46 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.006554007530212402, + "tick": 47 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0.012434005737304688, + "tick": 49 + }, + { + "renderSeconds": 0.003405928611755371, + "simulationSeconds": 0.006346940994262695, + "tick": 50 + }, + { + "renderSeconds": 0.0034869909286499023, + "simulationSeconds": 0.007786989212036133, + "tick": 51 + }, + { + "renderSeconds": 0.0035049915313720703, + "simulationSeconds": 0.007508993148803711, + "tick": 52 + }, + { + "renderSeconds": 0.00318300724029541, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0032799243927001953, + "simulationSeconds": 0.007429003715515137, + "tick": 53 + }, + { + "renderSeconds": 0.0024559497833251953, + "simulationSeconds": 0.0062760114669799805, + "tick": 54 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.0061310529708862305, + "tick": 55 + }, + { + "renderSeconds": 0.002855062484741211, + "simulationSeconds": 0.012684941291809082, + "tick": 57 + }, + { + "renderSeconds": 0.0029979944229125977, + "simulationSeconds": 0.006082057952880859, + "tick": 58 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.006620049476623535, + "tick": 59 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.007639050483703613, + "tick": 60 + }, + { + "renderSeconds": 0.0030469894409179688, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.002720952033996582, + "simulationSeconds": 0.006388068199157715, + "tick": 61 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006438016891479492, + "tick": 62 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.013131022453308105, + "tick": 64 + }, + { + "renderSeconds": 0.0031789541244506836, + "simulationSeconds": 0.0061070919036865234, + "tick": 65 + }, + { + "renderSeconds": 0.003032088279724121, + "simulationSeconds": 0.006638050079345703, + "tick": 66 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.0066070556640625, + "tick": 67 + }, + { + "renderSeconds": 0.002643108367919922, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006644010543823242, + "tick": 68 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 0.006471991539001465, + "tick": 69 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.006596922874450684, + "tick": 70 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0.012405991554260254, + "tick": 72 + }, + { + "renderSeconds": 0.002913951873779297, + "simulationSeconds": 0.006814002990722656, + "tick": 73 + }, + { + "renderSeconds": 0.0028319358825683594, + "simulationSeconds": 0.006786942481994629, + "tick": 74 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.0061980485916137695, + "tick": 75 + }, + { + "renderSeconds": 0.0029600858688354492, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.006206989288330078, + "tick": 76 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.006301999092102051, + "tick": 77 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.012624979019165039, + "tick": 79 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 0.005975008010864258, + "tick": 80 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.007384061813354492, + "tick": 81 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.007449030876159668, + "tick": 82 + }, + { + "renderSeconds": 0.003072977066040039, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 0.007362008094787598, + "tick": 83 + }, + { + "renderSeconds": 0.0033260583877563477, + "simulationSeconds": 0.00727999210357666, + "tick": 84 + }, + { + "renderSeconds": 0.004036903381347656, + "simulationSeconds": 0.009303092956542969, + "tick": 85 + }, + { + "renderSeconds": 0.003078937530517578, + "simulationSeconds": 0.01420605182647705, + "tick": 87 + }, + { + "renderSeconds": 0.0032290220260620117, + "simulationSeconds": 0.008416056632995605, + "tick": 88 + }, + { + "renderSeconds": 0.0030459165573120117, + "simulationSeconds": 0.014225006103515625, + "tick": 90 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0025169849395751953, + "simulationSeconds": 0.006201028823852539, + "tick": 91 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0.006811976432800293, + "tick": 92 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.012667059898376465, + "tick": 94 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.006705045700073242, + "tick": 95 + }, + { + "renderSeconds": 0.002896904945373535, + "simulationSeconds": 0.006615042686462402, + "tick": 96 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006411910057067871, + "tick": 97 + }, + { + "renderSeconds": 0.002824068069458008, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.002623915672302246, + "simulationSeconds": 0.006284952163696289, + "tick": 98 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.0062940120697021484, + "tick": 99 + }, + { + "renderSeconds": 0.0022200345993041992, + "simulationSeconds": 0.0066640377044677734, + "tick": 100 + }, + { + "renderSeconds": 0.0025500059127807617, + "simulationSeconds": 0.012144923210144043, + "tick": 102 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.007145047187805176, + "tick": 103 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.00696110725402832, + "tick": 104 + }, + { + "renderSeconds": 0.0021419525146484375, + "simulationSeconds": 0.006862044334411621, + "tick": 105 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.0024290084838867188, + "simulationSeconds": 0.006690025329589844, + "tick": 106 + }, + { + "renderSeconds": 0.0030820369720458984, + "simulationSeconds": 0.00636899471282959, + "tick": 107 + }, + { + "renderSeconds": 0.0025800466537475586, + "simulationSeconds": 0.013086915016174316, + "tick": 109 + }, + { + "renderSeconds": 0.0031319856643676758, + "simulationSeconds": 0.006175994873046875, + "tick": 110 + }, + { + "renderSeconds": 0.0027838945388793945, + "simulationSeconds": 0.006477952003479004, + "tick": 111 + }, + { + "renderSeconds": 0.0027350187301635742, + "simulationSeconds": 0.006837010383605957, + "tick": 112 + }, + { + "renderSeconds": 0.002980947494506836, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006396055221557617, + "tick": 113 + }, + { + "renderSeconds": 0.002662062644958496, + "simulationSeconds": 0.0068939924240112305, + "tick": 114 + }, + { + "renderSeconds": 0.002582073211669922, + "simulationSeconds": 0.006986021995544434, + "tick": 115 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.014342069625854492, + "tick": 117 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.007600069046020508, + "tick": 118 + }, + { + "renderSeconds": 0.0035109519958496094, + "simulationSeconds": 0.006928920745849609, + "tick": 119 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0.0065920352935791016, + "tick": 120 + }, + { + "renderSeconds": 0.0029979944229125977, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.0030999183654785156, + "simulationSeconds": 0.00752103328704834, + "tick": 121 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.007359027862548828, + "tick": 122 + }, + { + "renderSeconds": 0.0030040740966796875, + "simulationSeconds": 0.014454007148742676, + "tick": 124 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0.007215023040771484, + "tick": 125 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.007573962211608887, + "tick": 126 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.007918000221252441, + "tick": 127 + }, + { + "renderSeconds": 0.003368973731994629, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.0066710710525512695, + "tick": 128 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.007308006286621094, + "tick": 129 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.007172942161560059, + "tick": 130 + }, + { + "renderSeconds": 0.0025529861450195312, + "simulationSeconds": 0.012617945671081543, + "tick": 132 + }, + { + "renderSeconds": 0.0024509429931640625, + "simulationSeconds": 0.006480097770690918, + "tick": 133 + }, + { + "renderSeconds": 0.0029730796813964844, + "simulationSeconds": 0.006484031677246094, + "tick": 134 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.007330060005187988, + "tick": 135 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0027350187301635742, + "simulationSeconds": 0.006350040435791016, + "tick": 136 + }, + { + "renderSeconds": 0.002721071243286133, + "simulationSeconds": 0.006224989891052246, + "tick": 137 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.013677000999450684, + "tick": 139 + }, + { + "renderSeconds": 0.00292205810546875, + "simulationSeconds": 0.006346940994262695, + "tick": 140 + }, + { + "renderSeconds": 0.0028839111328125, + "simulationSeconds": 0.006526947021484375, + "tick": 141 + }, + { + "renderSeconds": 0.002765059471130371, + "simulationSeconds": 0.00633394718170166, + "tick": 142 + }, + { + "renderSeconds": 0.003502964973449707, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.006196022033691406, + "tick": 143 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.00616300106048584, + "tick": 144 + }, + { + "renderSeconds": 0.0023540258407592773, + "simulationSeconds": 0.0066030025482177734, + "tick": 145 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.012315988540649414, + "tick": 147 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 0.0060089826583862305, + "tick": 148 + }, + { + "renderSeconds": 0.0028591156005859375, + "simulationSeconds": 0.006083965301513672, + "tick": 149 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.006569981575012207, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.030192375008482486, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 238, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006268620491027832, + "preparationSeconds": 0.5341349840164185, + "reducedMotion": false, + "renderSeconds": 0.42812180519104004, + "repetition": 0, + "scenePreparationSeconds": 0.19456791877746582, + "simulationSeconds": 1.000396966934204, + "snapshotBuildCount": 152, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333332557231, + "postActionRecords": 150, + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.23628616333007812, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0008599758148193359, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008859634399414062, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007489919662475586, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010459423065185547, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.00339508056640625, + "simulationSeconds": 0.011009931564331055, + "tick": 2 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.00580596923828125, + "tick": 3 + }, + { + "renderSeconds": 0.0031108856201171875, + "simulationSeconds": 0.006515979766845703, + "tick": 4 + }, + { + "renderSeconds": 0.002526998519897461, + "simulationSeconds": 0.0072290897369384766, + "tick": 5 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006518006324768066, + "tick": 6 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.0067861080169677734, + "tick": 7 + }, + { + "renderSeconds": 0.003182053565979004, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.007562041282653809, + "tick": 8 + }, + { + "renderSeconds": 0.003695964813232422, + "simulationSeconds": 0.017547965049743652, + "tick": 10 + }, + { + "renderSeconds": 0.0038679838180541992, + "simulationSeconds": 0.009908080101013184, + "tick": 11 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.01437997817993164, + "tick": 13 + }, + { + "renderSeconds": 0.003394007682800293, + "simulationSeconds": 0.0074700117111206055, + "tick": 14 + }, + { + "renderSeconds": 0.0028859376907348633, + "simulationSeconds": 0.0067369937896728516, + "tick": 15 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.012331962585449219, + "tick": 17 + }, + { + "renderSeconds": 0.0028411149978637695, + "simulationSeconds": 0.006631970405578613, + "tick": 18 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.006577968597412109, + "tick": 19 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.0064879655838012695, + "tick": 20 + }, + { + "renderSeconds": 0.0027750730514526367, + "simulationSeconds": 0.006322026252746582, + "tick": 21 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.007476925849914551, + "tick": 22 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0024089813232421875, + "simulationSeconds": 0.006497979164123535, + "tick": 23 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.01264798641204834, + "tick": 25 + }, + { + "renderSeconds": 0.0028879642486572266, + "simulationSeconds": 0.006420016288757324, + "tick": 26 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.007187008857727051, + "tick": 27 + }, + { + "renderSeconds": 0.003516077995300293, + "simulationSeconds": 0.006693005561828613, + "tick": 28 + }, + { + "renderSeconds": 0.0030629634857177734, + "simulationSeconds": 0.006352066993713379, + "tick": 29 + }, + { + "renderSeconds": 0.0032830238342285156, + "simulationSeconds": 0.006887912750244141, + "tick": 30 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.002599954605102539, + "simulationSeconds": 0.013217926025390625, + "tick": 32 + }, + { + "renderSeconds": 0.002746105194091797, + "simulationSeconds": 0.006520986557006836, + "tick": 33 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 0.006338000297546387, + "tick": 34 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0.007104992866516113, + "tick": 35 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.006826996803283691, + "tick": 36 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.006609916687011719, + "tick": 37 + }, + { + "renderSeconds": 0.0033069849014282227, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0021539926528930664, + "simulationSeconds": 0.006186008453369141, + "tick": 38 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.01270294189453125, + "tick": 40 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.0066879987716674805, + "tick": 41 + }, + { + "renderSeconds": 0.0031620264053344727, + "simulationSeconds": 0.0063790082931518555, + "tick": 42 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.006891965866088867, + "tick": 43 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.006338000297546387, + "tick": 44 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.006494998931884766, + "tick": 45 + }, + { + "renderSeconds": 0.0033109188079833984, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0027240514755249023, + "simulationSeconds": 0.01205897331237793, + "tick": 47 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006296992301940918, + "tick": 48 + }, + { + "renderSeconds": 0.002378106117248535, + "simulationSeconds": 0.006663918495178223, + "tick": 49 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.006101012229919434, + "tick": 50 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.007128000259399414, + "tick": 51 + }, + { + "renderSeconds": 0.002537965774536133, + "simulationSeconds": 0.006400942802429199, + "tick": 52 + }, + { + "renderSeconds": 0.003715991973876953, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.007242918014526367, + "tick": 53 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.012442946434020996, + "tick": 55 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.0063169002532958984, + "tick": 56 + }, + { + "renderSeconds": 0.003047943115234375, + "simulationSeconds": 0.0070629119873046875, + "tick": 57 + }, + { + "renderSeconds": 0.0026990175247192383, + "simulationSeconds": 0.006470084190368652, + "tick": 58 + }, + { + "renderSeconds": 0.0027600526809692383, + "simulationSeconds": 0.006775021553039551, + "tick": 59 + }, + { + "renderSeconds": 0.00260007381439209, + "simulationSeconds": 0.006909966468811035, + "tick": 60 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 9.5367431640625e-07, + "tick": 60 + }, + { + "renderSeconds": 0.0025310516357421875, + "simulationSeconds": 0.012132048606872559, + "tick": 62 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 0.006438016891479492, + "tick": 63 + }, + { + "renderSeconds": 0.0028210878372192383, + "simulationSeconds": 0.006548047065734863, + "tick": 64 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0.007111072540283203, + "tick": 65 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.006054043769836426, + "tick": 66 + }, + { + "renderSeconds": 0.00256502628326416, + "simulationSeconds": 0.007072925567626953, + "tick": 67 + }, + { + "renderSeconds": 0.0031769275665283203, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.002557992935180664, + "simulationSeconds": 0.006788969039916992, + "tick": 68 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.012318968772888184, + "tick": 70 + }, + { + "renderSeconds": 0.0024629831314086914, + "simulationSeconds": 0.0062149763107299805, + "tick": 71 + }, + { + "renderSeconds": 0.0025910139083862305, + "simulationSeconds": 0.00792396068572998, + "tick": 72 + }, + { + "renderSeconds": 0.0030279159545898438, + "simulationSeconds": 0.006781101226806641, + "tick": 73 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.0062139034271240234, + "tick": 74 + }, + { + "renderSeconds": 0.0024230480194091797, + "simulationSeconds": 0.006204962730407715, + "tick": 75 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.01230001449584961, + "tick": 77 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.007084012031555176, + "tick": 78 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.007184028625488281, + "tick": 79 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.008069992065429688, + "tick": 80 + }, + { + "renderSeconds": 0.003113985061645508, + "simulationSeconds": 0.007339000701904297, + "tick": 81 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.007273077964782715, + "tick": 82 + }, + { + "renderSeconds": 0.003175973892211914, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.007146954536437988, + "tick": 83 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.014238953590393066, + "tick": 85 + }, + { + "renderSeconds": 0.0028859376907348633, + "simulationSeconds": 0.006063103675842285, + "tick": 86 + }, + { + "renderSeconds": 0.0028328895568847656, + "simulationSeconds": 0.006426095962524414, + "tick": 87 + }, + { + "renderSeconds": 0.002617955207824707, + "simulationSeconds": 0.0061370134353637695, + "tick": 88 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.006512999534606934, + "tick": 89 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.006676077842712402, + "tick": 90 + }, + { + "renderSeconds": 0.0035129785537719727, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.01394498348236084, + "tick": 92 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0.007675051689147949, + "tick": 93 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.0061609745025634766, + "tick": 94 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.007135987281799316, + "tick": 95 + }, + { + "renderSeconds": 0.0029599666595458984, + "simulationSeconds": 0.005948066711425781, + "tick": 96 + }, + { + "renderSeconds": 0.002592921257019043, + "simulationSeconds": 0.006807923316955566, + "tick": 97 + }, + { + "renderSeconds": 0.0029479265213012695, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0028780698776245117, + "simulationSeconds": 0.006785988807678223, + "tick": 98 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.011584997177124023, + "tick": 100 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.006207942962646484, + "tick": 101 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006083011627197266, + "tick": 102 + }, + { + "renderSeconds": 0.0026050806045532227, + "simulationSeconds": 0.006649971008300781, + "tick": 103 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.006440997123718262, + "tick": 104 + }, + { + "renderSeconds": 0.0024340152740478516, + "simulationSeconds": 0.006417036056518555, + "tick": 105 + }, + { + "renderSeconds": 0.0029549598693847656, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002649068832397461, + "simulationSeconds": 0.012699007987976074, + "tick": 107 + }, + { + "renderSeconds": 0.0029679536819458008, + "simulationSeconds": 0.006158947944641113, + "tick": 108 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.006523013114929199, + "tick": 109 + }, + { + "renderSeconds": 0.0031560659408569336, + "simulationSeconds": 0.007108926773071289, + "tick": 110 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0.007568001747131348, + "tick": 111 + }, + { + "renderSeconds": 0.0027649402618408203, + "simulationSeconds": 0.006404995918273926, + "tick": 112 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.0026519298553466797, + "simulationSeconds": 0.006218075752258301, + "tick": 113 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.013892054557800293, + "tick": 115 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.0062580108642578125, + "tick": 116 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.006230950355529785, + "tick": 117 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.006185054779052734, + "tick": 118 + }, + { + "renderSeconds": 0.0026029348373413086, + "simulationSeconds": 0.0061920881271362305, + "tick": 119 + }, + { + "renderSeconds": 0.0025489330291748047, + "simulationSeconds": 0.005978941917419434, + "tick": 120 + }, + { + "renderSeconds": 0.002794981002807617, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.012449026107788086, + "tick": 122 + }, + { + "renderSeconds": 0.0024529695510864258, + "simulationSeconds": 0.006619095802307129, + "tick": 123 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006371974945068359, + "tick": 124 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006353974342346191, + "tick": 125 + }, + { + "renderSeconds": 0.003079056739807129, + "simulationSeconds": 0.006852984428405762, + "tick": 126 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.007683992385864258, + "tick": 127 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002532958984375, + "simulationSeconds": 0.006506085395812988, + "tick": 128 + }, + { + "renderSeconds": 0.0025440454483032227, + "simulationSeconds": 0.012666940689086914, + "tick": 130 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.006525993347167969, + "tick": 131 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.00616908073425293, + "tick": 132 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.00760197639465332, + "tick": 133 + }, + { + "renderSeconds": 0.0031920671463012695, + "simulationSeconds": 0.0076760053634643555, + "tick": 134 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.0072710514068603516, + "tick": 135 + }, + { + "renderSeconds": 0.003236055374145508, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.002544999122619629, + "simulationSeconds": 0.01245105266571045, + "tick": 137 + }, + { + "renderSeconds": 0.0026460886001586914, + "simulationSeconds": 0.006115913391113281, + "tick": 138 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.006597995758056641, + "tick": 139 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.0070389509201049805, + "tick": 140 + }, + { + "renderSeconds": 0.003329038619995117, + "simulationSeconds": 0.007473945617675781, + "tick": 141 + }, + { + "renderSeconds": 0.0029420852661132812, + "simulationSeconds": 0.006784915924072266, + "tick": 142 + }, + { + "renderSeconds": 0.003286004066467285, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.0068329572677612305, + "tick": 143 + }, + { + "renderSeconds": 0.0027159452438354492, + "simulationSeconds": 0.012580037117004395, + "tick": 145 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.006537914276123047, + "tick": 146 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.007037997245788574, + "tick": 147 + }, + { + "renderSeconds": 0.0025290250778198242, + "simulationSeconds": 0.006086945533752441, + "tick": 148 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.007278084754943848, + "tick": 149 + }, + { + "renderSeconds": 0.00295102596282959, + "simulationSeconds": 0.006088972091674805, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03333333332557231, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 238, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005760312080383301, + "preparationSeconds": 0.5126090049743652, + "reducedMotion": false, + "renderSeconds": 0.42678582668304443, + "repetition": 0, + "scenePreparationSeconds": 0.18209993839263916, + "simulationSeconds": 0.9973282814025879, + "snapshotBuildCount": 152, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 34.29062498616986, + "postActionRecords": 150, + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.23919892311096191, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0011899471282958984, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010930299758911133, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010200738906860352, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000980973243713379, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.005700945854187012, + "tick": 1 + }, + { + "renderSeconds": 0.002640962600708008, + "simulationSeconds": 0.006009936332702637, + "tick": 2 + }, + { + "renderSeconds": 0.0029659271240234375, + "simulationSeconds": 0.007225990295410156, + "tick": 3 + }, + { + "renderSeconds": 0.003641963005065918, + "simulationSeconds": 0.014230012893676758, + "tick": 5 + }, + { + "renderSeconds": 0.003818035125732422, + "simulationSeconds": 0.008978009223937988, + "tick": 6 + }, + { + "renderSeconds": 0.003753066062927246, + "simulationSeconds": 0.009174942970275879, + "tick": 7 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.008493900299072266, + "tick": 8 + }, + { + "renderSeconds": 0.0029060840606689453, + "simulationSeconds": 0.0073549747467041016, + "tick": 9 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 0.007476925849914551, + "tick": 10 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.014953970909118652, + "tick": 12 + }, + { + "renderSeconds": 0.00274503231048584, + "simulationSeconds": 0.012434005737304688, + "tick": 14 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.006230950355529785, + "tick": 15 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.0069969892501831055, + "tick": 16 + }, + { + "renderSeconds": 0.0026900768280029297, + "simulationSeconds": 0.006479978561401367, + "tick": 17 + }, + { + "renderSeconds": 0.0028319358825683594, + "simulationSeconds": 0.006455898284912109, + "tick": 18 + }, + { + "renderSeconds": 0.0031280517578125, + "simulationSeconds": 0.01458597183227539, + "tick": 20 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0.006841063499450684, + "tick": 21 + }, + { + "renderSeconds": 0.0025240182876586914, + "simulationSeconds": 0.012530922889709473, + "tick": 22 + }, + { + "renderSeconds": 0.002656102180480957, + "simulationSeconds": 9.5367431640625e-07, + "tick": 22 + }, + { + "renderSeconds": 0.00324094295501709, + "simulationSeconds": 0.006793975830078125, + "tick": 23 + }, + { + "renderSeconds": 0.0032410621643066406, + "simulationSeconds": 0.006142020225524902, + "tick": 24 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.006892085075378418, + "tick": 25 + }, + { + "renderSeconds": 0.003551006317138672, + "simulationSeconds": 0.015488028526306152, + "tick": 27 + }, + { + "renderSeconds": 0.003805994987487793, + "simulationSeconds": 0.018123984336853027, + "tick": 29 + }, + { + "renderSeconds": 0.0037180185317993164, + "simulationSeconds": 0.009701013565063477, + "tick": 30 + }, + { + "renderSeconds": 0.0035369396209716797, + "simulationSeconds": 0.008704066276550293, + "tick": 31 + }, + { + "renderSeconds": 0.003018021583557129, + "simulationSeconds": 0.007393002510070801, + "tick": 32 + }, + { + "renderSeconds": 0.0033600330352783203, + "simulationSeconds": 0.007243037223815918, + "tick": 33 + }, + { + "renderSeconds": 0.00256502628326416, + "simulationSeconds": 0.012794017791748047, + "tick": 35 + }, + { + "renderSeconds": 0.002690911293029785, + "simulationSeconds": 0.006908059120178223, + "tick": 36 + }, + { + "renderSeconds": 0.0030280351638793945, + "simulationSeconds": 0.006844043731689453, + "tick": 37 + }, + { + "renderSeconds": 0.002827882766723633, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0027240514755249023, + "simulationSeconds": 0.006656050682067871, + "tick": 38 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.006507992744445801, + "tick": 39 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.006639957427978516, + "tick": 40 + }, + { + "renderSeconds": 0.0031120777130126953, + "simulationSeconds": 0.013363003730773926, + "tick": 42 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 0.007086992263793945, + "tick": 43 + }, + { + "renderSeconds": 0.003236055374145508, + "simulationSeconds": 0.007315993309020996, + "tick": 44 + }, + { + "renderSeconds": 0.0032699108123779297, + "simulationSeconds": 0.007110953330993652, + "tick": 45 + }, + { + "renderSeconds": 0.003957986831665039, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.003030061721801758, + "simulationSeconds": 0.008960962295532227, + "tick": 46 + }, + { + "renderSeconds": 0.004104971885681152, + "simulationSeconds": 0.007853031158447266, + "tick": 47 + }, + { + "renderSeconds": 0.0040160417556762695, + "simulationSeconds": 0.008665084838867188, + "tick": 48 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.014358997344970703, + "tick": 50 + }, + { + "renderSeconds": 0.003527998924255371, + "simulationSeconds": 0.007375955581665039, + "tick": 51 + }, + { + "renderSeconds": 0.0029550790786743164, + "simulationSeconds": 0.007581949234008789, + "tick": 52 + }, + { + "renderSeconds": 0.0025320053100585938, + "simulationSeconds": 0.0064820051193237305, + "tick": 53 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.006392002105712891, + "tick": 54 + }, + { + "renderSeconds": 0.0026540756225585938, + "simulationSeconds": 0.006453990936279297, + "tick": 55 + }, + { + "renderSeconds": 0.0026650428771972656, + "simulationSeconds": 0.01256096363067627, + "tick": 57 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.006805062294006348, + "tick": 58 + }, + { + "renderSeconds": 0.006844043731689453, + "simulationSeconds": 0.009369969367980957, + "tick": 59 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.00684201717376709, + "tick": 60 + }, + { + "renderSeconds": 0.002812981605529785, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0027570724487304688, + "simulationSeconds": 0.0066890716552734375, + "tick": 61 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.006437063217163086, + "tick": 62 + }, + { + "renderSeconds": 0.003484010696411133, + "simulationSeconds": 0.006364941596984863, + "tick": 63 + }, + { + "renderSeconds": 0.0033849477767944336, + "simulationSeconds": 0.01431894302368164, + "tick": 65 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.007014036178588867, + "tick": 66 + }, + { + "renderSeconds": 0.0035309791564941406, + "simulationSeconds": 0.007266998291015625, + "tick": 67 + }, + { + "renderSeconds": 0.003786921501159668, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0039130449295043945, + "simulationSeconds": 0.008933067321777344, + "tick": 68 + }, + { + "renderSeconds": 0.0031359195709228516, + "simulationSeconds": 0.00854194164276123, + "tick": 69 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 0.007068991661071777, + "tick": 70 + }, + { + "renderSeconds": 0.003155946731567383, + "simulationSeconds": 0.014587044715881348, + "tick": 72 + }, + { + "renderSeconds": 0.003491997718811035, + "simulationSeconds": 0.014368057250976562, + "tick": 74 + }, + { + "renderSeconds": 0.0029480457305908203, + "simulationSeconds": 0.006303071975708008, + "tick": 75 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002485036849975586, + "simulationSeconds": 0.006948947906494141, + "tick": 76 + }, + { + "renderSeconds": 0.0025769472122192383, + "simulationSeconds": 0.006600022315979004, + "tick": 77 + }, + { + "renderSeconds": 0.0024329423904418945, + "simulationSeconds": 0.006209015846252441, + "tick": 78 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0.012686967849731445, + "tick": 80 + }, + { + "renderSeconds": 0.002855062484741211, + "simulationSeconds": 0.006294965744018555, + "tick": 81 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.006780028343200684, + "tick": 82 + }, + { + "renderSeconds": 0.0052460432052612305, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0.0073549747467041016, + "tick": 83 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.006776094436645508, + "tick": 84 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.00640106201171875, + "tick": 85 + }, + { + "renderSeconds": 0.002716064453125, + "simulationSeconds": 0.012344002723693848, + "tick": 87 + }, + { + "renderSeconds": 0.00276792049407959, + "simulationSeconds": 0.006770014762878418, + "tick": 88 + }, + { + "renderSeconds": 0.0024269819259643555, + "simulationSeconds": 0.007364988327026367, + "tick": 89 + }, + { + "renderSeconds": 0.003213047981262207, + "simulationSeconds": 0.007252931594848633, + "tick": 90 + }, + { + "renderSeconds": 0.003165006637573242, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.003074049949645996, + "simulationSeconds": 0.007174015045166016, + "tick": 91 + }, + { + "renderSeconds": 0.0031369924545288086, + "simulationSeconds": 0.0075370073318481445, + "tick": 92 + }, + { + "renderSeconds": 0.003062009811401367, + "simulationSeconds": 0.007097005844116211, + "tick": 93 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.014462947845458984, + "tick": 95 + }, + { + "renderSeconds": 0.0033990144729614258, + "simulationSeconds": 0.007197976112365723, + "tick": 96 + }, + { + "renderSeconds": 0.0029119253158569336, + "simulationSeconds": 0.008340001106262207, + "tick": 97 + }, + { + "renderSeconds": 0.0031849145889282227, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.006880998611450195, + "tick": 98 + }, + { + "renderSeconds": 0.002532958984375, + "simulationSeconds": 0.006352066993713379, + "tick": 99 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.006370067596435547, + "tick": 100 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.012355923652648926, + "tick": 102 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0.006247043609619141, + "tick": 103 + }, + { + "renderSeconds": 0.0028110742568969727, + "simulationSeconds": 0.00678098201751709, + "tick": 104 + }, + { + "renderSeconds": 0.002563953399658203, + "simulationSeconds": 0.007529020309448242, + "tick": 105 + }, + { + "renderSeconds": 0.0028679370880126953, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 105 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006476998329162598, + "tick": 106 + }, + { + "renderSeconds": 0.0025600194931030273, + "simulationSeconds": 0.006597995758056641, + "tick": 107 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.006876945495605469, + "tick": 108 + }, + { + "renderSeconds": 0.002721071243286133, + "simulationSeconds": 0.012591004371643066, + "tick": 110 + }, + { + "renderSeconds": 0.00309598445892334, + "simulationSeconds": 0.006183028221130371, + "tick": 111 + }, + { + "renderSeconds": 0.0030919313430786133, + "simulationSeconds": 0.006916046142578125, + "tick": 112 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0032379627227783203, + "simulationSeconds": 0.0074890851974487305, + "tick": 113 + }, + { + "renderSeconds": 0.002933025360107422, + "simulationSeconds": 0.007472991943359375, + "tick": 114 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0.007794976234436035, + "tick": 115 + }, + { + "renderSeconds": 0.002707958221435547, + "simulationSeconds": 0.013642072677612305, + "tick": 117 + }, + { + "renderSeconds": 0.0026330947875976562, + "simulationSeconds": 0.006621003150939941, + "tick": 118 + }, + { + "renderSeconds": 0.0030819177627563477, + "simulationSeconds": 0.006326913833618164, + "tick": 119 + }, + { + "renderSeconds": 0.003011941909790039, + "simulationSeconds": 0.006348013877868652, + "tick": 120 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.0031429529190063477, + "simulationSeconds": 0.006552934646606445, + "tick": 121 + }, + { + "renderSeconds": 0.002568960189819336, + "simulationSeconds": 0.0066030025482177734, + "tick": 122 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.006306886672973633, + "tick": 123 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.012025952339172363, + "tick": 125 + }, + { + "renderSeconds": 0.0027440786361694336, + "simulationSeconds": 0.0072220563888549805, + "tick": 126 + }, + { + "renderSeconds": 0.0026210546493530273, + "simulationSeconds": 0.006971001625061035, + "tick": 127 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.006145000457763672, + "tick": 128 + }, + { + "renderSeconds": 0.0026460886001586914, + "simulationSeconds": 0.00660097599029541, + "tick": 129 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.006638050079345703, + "tick": 130 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.012943029403686523, + "tick": 132 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.0061609745025634766, + "tick": 133 + }, + { + "renderSeconds": 0.002927064895629883, + "simulationSeconds": 0.006407976150512695, + "tick": 134 + }, + { + "renderSeconds": 0.0028650760650634766, + "simulationSeconds": 0.0068100690841674805, + "tick": 135 + }, + { + "renderSeconds": 0.0027000904083251953, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006273031234741211, + "tick": 136 + }, + { + "renderSeconds": 0.0026448965072631836, + "simulationSeconds": 0.006109952926635742, + "tick": 137 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.006326079368591309, + "tick": 138 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.012024998664855957, + "tick": 140 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.006567955017089844, + "tick": 141 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.006815075874328613, + "tick": 142 + }, + { + "renderSeconds": 0.003444075584411621, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.006393909454345703, + "tick": 143 + }, + { + "renderSeconds": 0.0025060176849365234, + "simulationSeconds": 0.0064650774002075195, + "tick": 144 + }, + { + "renderSeconds": 0.0024690628051757812, + "simulationSeconds": 0.006452083587646484, + "tick": 145 + }, + { + "renderSeconds": 0.0026859045028686523, + "simulationSeconds": 0.01270604133605957, + "tick": 147 + }, + { + "renderSeconds": 0.0030510425567626953, + "simulationSeconds": 0.006254076957702637, + "tick": 148 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.007758021354675293, + "tick": 149 + }, + { + "renderSeconds": 0.0029069185256958008, + "simulationSeconds": 0.006112933158874512, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03917658334830776, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 228, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006182670593261719, + "preparationSeconds": 0.5231510400772095, + "reducedMotion": false, + "renderSeconds": 0.43363142013549805, + "repetition": 1, + "scenePreparationSeconds": 0.18595898151397705, + "simulationSeconds": 1.0465561151504517, + "snapshotBuildCount": 147, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.93483330728486, + "postActionRecords": 145, + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.22934675216674805, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0006939172744750977, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007799863815307617, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0009350776672363281, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0010390281677246094, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.006029963493347168, + "tick": 1 + }, + { + "renderSeconds": 0.0024570226669311523, + "simulationSeconds": 0.006689906120300293, + "tick": 2 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.006805062294006348, + "tick": 3 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.0064209699630737305, + "tick": 4 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.006762981414794922, + "tick": 5 + }, + { + "renderSeconds": 0.0026460886001586914, + "simulationSeconds": 0.006456971168518066, + "tick": 6 + }, + { + "renderSeconds": 0.00256502628326416, + "simulationSeconds": 0.006515979766845703, + "tick": 7 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0.007009983062744141, + "tick": 8 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006649017333984375, + "tick": 9 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.006373047828674316, + "tick": 10 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006525993347167969, + "tick": 11 + }, + { + "renderSeconds": 0.002400994300842285, + "simulationSeconds": 0.006222963333129883, + "tick": 12 + }, + { + "renderSeconds": 0.0028600692749023438, + "simulationSeconds": 0.007153987884521484, + "tick": 13 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.01223301887512207, + "tick": 15 + }, + { + "renderSeconds": 0.00315093994140625, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.006445050239562988, + "tick": 16 + }, + { + "renderSeconds": 0.0027240514755249023, + "simulationSeconds": 0.006779909133911133, + "tick": 17 + }, + { + "renderSeconds": 0.002456068992614746, + "simulationSeconds": 0.006543993949890137, + "tick": 18 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.006152987480163574, + "tick": 19 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.006330013275146484, + "tick": 20 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.006464958190917969, + "tick": 21 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.006651043891906738, + "tick": 22 + }, + { + "renderSeconds": 0.0027109384536743164, + "simulationSeconds": 0.006793975830078125, + "tick": 23 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.006934046745300293, + "tick": 24 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.006631970405578613, + "tick": 25 + }, + { + "renderSeconds": 0.0027420520782470703, + "simulationSeconds": 0.006552934646606445, + "tick": 26 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.006521940231323242, + "tick": 27 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.006609916687011719, + "tick": 28 + }, + { + "renderSeconds": 0.002762913703918457, + "simulationSeconds": 0.012646913528442383, + "tick": 30 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.006880998611450195, + "tick": 31 + }, + { + "renderSeconds": 0.0032030344009399414, + "simulationSeconds": 0.007140040397644043, + "tick": 32 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 0.006641983985900879, + "tick": 33 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.006052970886230469, + "tick": 34 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.0066269636154174805, + "tick": 35 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.006412029266357422, + "tick": 36 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.0067861080169677734, + "tick": 37 + }, + { + "renderSeconds": 0.002660989761352539, + "simulationSeconds": 0.006541013717651367, + "tick": 38 + }, + { + "renderSeconds": 0.00315093994140625, + "simulationSeconds": 0.006219029426574707, + "tick": 39 + }, + { + "renderSeconds": 0.002521991729736328, + "simulationSeconds": 0.0068160295486450195, + "tick": 40 + }, + { + "renderSeconds": 0.0026780366897583008, + "simulationSeconds": 0.006407976150512695, + "tick": 41 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.006695985794067383, + "tick": 42 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.007211923599243164, + "tick": 43 + }, + { + "renderSeconds": 0.002982020378112793, + "simulationSeconds": 0.014433026313781738, + "tick": 45 + }, + { + "renderSeconds": 0.003072023391723633, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.0073920488357543945, + "tick": 46 + }, + { + "renderSeconds": 0.0031540393829345703, + "simulationSeconds": 0.007657051086425781, + "tick": 47 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.006226062774658203, + "tick": 48 + }, + { + "renderSeconds": 0.002521991729736328, + "simulationSeconds": 0.006834983825683594, + "tick": 49 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.0065228939056396484, + "tick": 50 + }, + { + "renderSeconds": 0.0028570890426635742, + "simulationSeconds": 0.007587909698486328, + "tick": 51 + }, + { + "renderSeconds": 0.0027289390563964844, + "simulationSeconds": 0.007601022720336914, + "tick": 52 + }, + { + "renderSeconds": 0.003108978271484375, + "simulationSeconds": 0.00696408748626709, + "tick": 53 + }, + { + "renderSeconds": 0.0030660629272460938, + "simulationSeconds": 0.007480978965759277, + "tick": 54 + }, + { + "renderSeconds": 0.00356292724609375, + "simulationSeconds": 0.007189035415649414, + "tick": 55 + }, + { + "renderSeconds": 0.0029479265213012695, + "simulationSeconds": 0.007046103477478027, + "tick": 56 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.0070389509201049805, + "tick": 57 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.006404995918273926, + "tick": 58 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 0.01264798641204834, + "tick": 60 + }, + { + "renderSeconds": 0.002679109573364258, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.006806015968322754, + "tick": 61 + }, + { + "renderSeconds": 0.00279390811920166, + "simulationSeconds": 0.006500959396362305, + "tick": 62 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.006740093231201172, + "tick": 63 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006231904029846191, + "tick": 64 + }, + { + "renderSeconds": 0.0026230812072753906, + "simulationSeconds": 0.006258964538574219, + "tick": 65 + }, + { + "renderSeconds": 0.0032529830932617188, + "simulationSeconds": 0.007256984710693359, + "tick": 66 + }, + { + "renderSeconds": 0.00326693058013916, + "simulationSeconds": 0.007729053497314453, + "tick": 67 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.006956934928894043, + "tick": 68 + }, + { + "renderSeconds": 0.002713918685913086, + "simulationSeconds": 0.006734013557434082, + "tick": 69 + }, + { + "renderSeconds": 0.0030469894409179688, + "simulationSeconds": 0.0074950456619262695, + "tick": 70 + }, + { + "renderSeconds": 0.0029219388961791992, + "simulationSeconds": 0.007241010665893555, + "tick": 71 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.0073670148849487305, + "tick": 72 + }, + { + "renderSeconds": 0.002707958221435547, + "simulationSeconds": 0.007322072982788086, + "tick": 73 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.012449979782104492, + "tick": 75 + }, + { + "renderSeconds": 0.003133058547973633, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0025850534439086914, + "simulationSeconds": 0.006515979766845703, + "tick": 76 + }, + { + "renderSeconds": 0.0026569366455078125, + "simulationSeconds": 0.006621956825256348, + "tick": 77 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0.0065000057220458984, + "tick": 78 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.006595969200134277, + "tick": 79 + }, + { + "renderSeconds": 0.0024460554122924805, + "simulationSeconds": 0.006723999977111816, + "tick": 80 + }, + { + "renderSeconds": 0.0025010108947753906, + "simulationSeconds": 0.006924986839294434, + "tick": 81 + }, + { + "renderSeconds": 0.0024210214614868164, + "simulationSeconds": 0.006445050239562988, + "tick": 82 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.006700992584228516, + "tick": 83 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006443977355957031, + "tick": 84 + }, + { + "renderSeconds": 0.002483963966369629, + "simulationSeconds": 0.006569981575012207, + "tick": 85 + }, + { + "renderSeconds": 0.0027239322662353516, + "simulationSeconds": 0.006533026695251465, + "tick": 86 + }, + { + "renderSeconds": 0.002589106559753418, + "simulationSeconds": 0.006490945816040039, + "tick": 87 + }, + { + "renderSeconds": 0.002703070640563965, + "simulationSeconds": 0.006924033164978027, + "tick": 88 + }, + { + "renderSeconds": 0.0025659799575805664, + "simulationSeconds": 0.012627005577087402, + "tick": 90 + }, + { + "renderSeconds": 0.0030219554901123047, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 90 + }, + { + "renderSeconds": 0.002155900001525879, + "simulationSeconds": 0.006528019905090332, + "tick": 91 + }, + { + "renderSeconds": 0.002749919891357422, + "simulationSeconds": 0.006676077842712402, + "tick": 92 + }, + { + "renderSeconds": 0.002643108367919922, + "simulationSeconds": 0.006286978721618652, + "tick": 93 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.006312966346740723, + "tick": 94 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.006812930107116699, + "tick": 95 + }, + { + "renderSeconds": 0.0028520822525024414, + "simulationSeconds": 0.006338953971862793, + "tick": 96 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.007200002670288086, + "tick": 97 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006415963172912598, + "tick": 98 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.006703019142150879, + "tick": 99 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.0063370466232299805, + "tick": 100 + }, + { + "renderSeconds": 0.0025920867919921875, + "simulationSeconds": 0.006461977958679199, + "tick": 101 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.00692296028137207, + "tick": 102 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.007301926612854004, + "tick": 103 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.014691948890686035, + "tick": 105 + }, + { + "renderSeconds": 0.0028390884399414062, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0.006486058235168457, + "tick": 106 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.006783962249755859, + "tick": 107 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.006340980529785156, + "tick": 108 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.006520986557006836, + "tick": 109 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.0062830448150634766, + "tick": 110 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.006885051727294922, + "tick": 111 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0.006510019302368164, + "tick": 112 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.006631970405578613, + "tick": 113 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.006968021392822266, + "tick": 114 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.006514072418212891, + "tick": 115 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.006615042686462402, + "tick": 116 + }, + { + "renderSeconds": 0.0025550127029418945, + "simulationSeconds": 0.006204009056091309, + "tick": 117 + }, + { + "renderSeconds": 0.0025740861892700195, + "simulationSeconds": 0.006635904312133789, + "tick": 118 + }, + { + "renderSeconds": 0.002496004104614258, + "simulationSeconds": 0.012005925178527832, + "tick": 120 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.002557992935180664, + "simulationSeconds": 0.006169915199279785, + "tick": 121 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.0067130327224731445, + "tick": 122 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006701946258544922, + "tick": 123 + }, + { + "renderSeconds": 0.0025589466094970703, + "simulationSeconds": 0.006394028663635254, + "tick": 124 + }, + { + "renderSeconds": 0.0022770166397094727, + "simulationSeconds": 0.0063800811767578125, + "tick": 125 + }, + { + "renderSeconds": 0.0024889707565307617, + "simulationSeconds": 0.006298065185546875, + "tick": 126 + }, + { + "renderSeconds": 0.002368927001953125, + "simulationSeconds": 0.006862998008728027, + "tick": 127 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.007206082344055176, + "tick": 128 + }, + { + "renderSeconds": 0.002297043800354004, + "simulationSeconds": 0.0064820051193237305, + "tick": 129 + }, + { + "renderSeconds": 0.0026699304580688477, + "simulationSeconds": 0.006553053855895996, + "tick": 130 + }, + { + "renderSeconds": 0.002460002899169922, + "simulationSeconds": 0.006520986557006836, + "tick": 131 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.006434082984924316, + "tick": 132 + }, + { + "renderSeconds": 0.00247800350189209, + "simulationSeconds": 0.006387948989868164, + "tick": 133 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.011927008628845215, + "tick": 135 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0020409822463989258, + "simulationSeconds": 0.0063669681549072266, + "tick": 136 + }, + { + "renderSeconds": 0.0024640560150146484, + "simulationSeconds": 0.0061310529708862305, + "tick": 137 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.006412982940673828, + "tick": 138 + }, + { + "renderSeconds": 0.0024470090866088867, + "simulationSeconds": 0.0062569379806518555, + "tick": 139 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.006294965744018555, + "tick": 140 + }, + { + "renderSeconds": 0.002308964729309082, + "simulationSeconds": 0.006595015525817871, + "tick": 141 + }, + { + "renderSeconds": 0.002030014991760254, + "simulationSeconds": 0.006407022476196289, + "tick": 142 + }, + { + "renderSeconds": 0.002422928810119629, + "simulationSeconds": 0.006260037422180176, + "tick": 143 + }, + { + "renderSeconds": 0.0025479793548583984, + "simulationSeconds": 0.006580948829650879, + "tick": 144 + }, + { + "renderSeconds": 0.002599954605102539, + "simulationSeconds": 0.006124019622802734, + "tick": 145 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.006384015083312988, + "tick": 146 + }, + { + "renderSeconds": 0.0024749040603637695, + "simulationSeconds": 0.006106019020080566, + "tick": 147 + }, + { + "renderSeconds": 0.0019840002059936523, + "simulationSeconds": 0.00610196590423584, + "tick": 148 + }, + { + "renderSeconds": 0.0023859739303588867, + "simulationSeconds": 0.011391043663024902, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04413150000618771, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 240, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005663871765136719, + "preparationSeconds": 0.5500030517578125, + "reducedMotion": true, + "renderSeconds": 0.4075601100921631, + "repetition": 1, + "scenePreparationSeconds": 0.18944597244262695, + "simulationSeconds": 0.9919027090072632, + "snapshotBuildCount": 153, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986, + "postActionRecords": 151, + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.22483062744140625, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0005550384521484375, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006669759750366211, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006959438323974609, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0022219419479370117, + "simulationSeconds": 0.004222989082336426, + "tick": 1 + }, + { + "renderSeconds": 0.0018290281295776367, + "simulationSeconds": 0.00474095344543457, + "tick": 2 + }, + { + "renderSeconds": 0.0018639564514160156, + "simulationSeconds": 0.0047740936279296875, + "tick": 3 + }, + { + "renderSeconds": 0.0022391080856323242, + "simulationSeconds": 0.005589008331298828, + "tick": 4 + }, + { + "renderSeconds": 0.0023859739303588867, + "simulationSeconds": 0.005702972412109375, + "tick": 5 + }, + { + "renderSeconds": 0.0023690462112426758, + "simulationSeconds": 0.005933046340942383, + "tick": 6 + }, + { + "renderSeconds": 0.0021300315856933594, + "simulationSeconds": 0.0063359737396240234, + "tick": 7 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.012814044952392578, + "tick": 9 + }, + { + "renderSeconds": 0.003108978271484375, + "simulationSeconds": 0.006324052810668945, + "tick": 10 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.0072209835052490234, + "tick": 11 + }, + { + "renderSeconds": 0.0024040937423706055, + "simulationSeconds": 0.006821990013122559, + "tick": 12 + }, + { + "renderSeconds": 0.002465963363647461, + "simulationSeconds": 0.006152033805847168, + "tick": 13 + }, + { + "renderSeconds": 0.0030640363693237305, + "simulationSeconds": 0.006971955299377441, + "tick": 14 + }, + { + "renderSeconds": 0.0029450654983520508, + "simulationSeconds": 0.007386922836303711, + "tick": 15 + }, + { + "renderSeconds": 0.0032390356063842773, + "simulationSeconds": 0.007104039192199707, + "tick": 16 + }, + { + "renderSeconds": 0.0038570165634155273, + "simulationSeconds": 0.009250044822692871, + "tick": 17 + }, + { + "renderSeconds": 0.0037620067596435547, + "simulationSeconds": 0.017614006996154785, + "tick": 19 + }, + { + "renderSeconds": 0.0037260055541992188, + "simulationSeconds": 0.008769035339355469, + "tick": 20 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.013871073722839355, + "tick": 22 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.012588024139404297, + "tick": 24 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.012791991233825684, + "tick": 26 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.006327033042907715, + "tick": 27 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.006639003753662109, + "tick": 28 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.0066339969635009766, + "tick": 29 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.0063440799713134766, + "tick": 30 + }, + { + "renderSeconds": 0.0029420852661132812, + "simulationSeconds": 0.006451964378356934, + "tick": 31 + }, + { + "renderSeconds": 0.0031069517135620117, + "simulationSeconds": 0.006431937217712402, + "tick": 32 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0.006556034088134766, + "tick": 33 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.006593942642211914, + "tick": 34 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.006212949752807617, + "tick": 35 + }, + { + "renderSeconds": 0.0030510425567626953, + "simulationSeconds": 0.006451964378356934, + "tick": 36 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.006276965141296387, + "tick": 37 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.012367010116577148, + "tick": 39 + }, + { + "renderSeconds": 0.002808094024658203, + "simulationSeconds": 0.006624937057495117, + "tick": 40 + }, + { + "renderSeconds": 0.0024390220642089844, + "simulationSeconds": 0.007100939750671387, + "tick": 41 + }, + { + "renderSeconds": 0.0021959543228149414, + "simulationSeconds": 0.006782054901123047, + "tick": 42 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.0061560869216918945, + "tick": 43 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.006621956825256348, + "tick": 44 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.00674593448638916, + "tick": 45 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.007422924041748047, + "tick": 46 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.007182002067565918, + "tick": 47 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.007889032363891602, + "tick": 48 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.007239103317260742, + "tick": 49 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0.007990002632141113, + "tick": 50 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.007206082344055176, + "tick": 51 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.007877945899963379, + "tick": 52 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0035659074783325195, + "simulationSeconds": 0.016551971435546875, + "tick": 54 + }, + { + "renderSeconds": 0.0033730268478393555, + "simulationSeconds": 0.007476091384887695, + "tick": 55 + }, + { + "renderSeconds": 0.003352046012878418, + "simulationSeconds": 0.007242918014526367, + "tick": 56 + }, + { + "renderSeconds": 0.0030241012573242188, + "simulationSeconds": 0.007467985153198242, + "tick": 57 + }, + { + "renderSeconds": 0.003268003463745117, + "simulationSeconds": 0.007505893707275391, + "tick": 58 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.01280200481414795, + "tick": 60 + }, + { + "renderSeconds": 0.0027619600296020508, + "simulationSeconds": 0.005970001220703125, + "tick": 61 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.006909012794494629, + "tick": 62 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.006595015525817871, + "tick": 63 + }, + { + "renderSeconds": 0.0033479928970336914, + "simulationSeconds": 0.00648808479309082, + "tick": 64 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.0065729618072509766, + "tick": 65 + }, + { + "renderSeconds": 0.0030739307403564453, + "simulationSeconds": 0.006037116050720215, + "tick": 66 + }, + { + "renderSeconds": 0.0029240846633911133, + "simulationSeconds": 0.00624394416809082, + "tick": 67 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.002808094024658203, + "simulationSeconds": 0.012910962104797363, + "tick": 69 + }, + { + "renderSeconds": 0.0032950639724731445, + "simulationSeconds": 0.006967067718505859, + "tick": 70 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0.006402015686035156, + "tick": 71 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.0071250200271606445, + "tick": 72 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 0.0063239336013793945, + "tick": 73 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.006471991539001465, + "tick": 74 + }, + { + "renderSeconds": 0.0027910470962524414, + "simulationSeconds": 0.006594061851501465, + "tick": 75 + }, + { + "renderSeconds": 0.0024830102920532227, + "simulationSeconds": 0.0064389705657958984, + "tick": 76 + }, + { + "renderSeconds": 0.002762913703918457, + "simulationSeconds": 0.00686800479888916, + "tick": 77 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.006930947303771973, + "tick": 78 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.0066449642181396484, + "tick": 79 + }, + { + "renderSeconds": 0.002743959426879883, + "simulationSeconds": 0.00647890567779541, + "tick": 80 + }, + { + "renderSeconds": 0.0027159452438354492, + "simulationSeconds": 0.00672304630279541, + "tick": 81 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.006579995155334473, + "tick": 82 + }, + { + "renderSeconds": 0.002926945686340332, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.012494087219238281, + "tick": 84 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.006721019744873047, + "tick": 85 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006479978561401367, + "tick": 86 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.006134986877441406, + "tick": 87 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.006089925765991211, + "tick": 88 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.006319999694824219, + "tick": 89 + }, + { + "renderSeconds": 0.002795100212097168, + "simulationSeconds": 0.006816983222961426, + "tick": 90 + }, + { + "renderSeconds": 0.0025649070739746094, + "simulationSeconds": 0.0062639713287353516, + "tick": 91 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0.006765961647033691, + "tick": 92 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.007270097732543945, + "tick": 93 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006821036338806152, + "tick": 94 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.006971001625061035, + "tick": 95 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.007136940956115723, + "tick": 96 + }, + { + "renderSeconds": 0.0031270980834960938, + "simulationSeconds": 0.006605982780456543, + "tick": 97 + }, + { + "renderSeconds": 0.003223896026611328, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0025900602340698242, + "simulationSeconds": 0.012241005897521973, + "tick": 99 + }, + { + "renderSeconds": 0.0031200647354125977, + "simulationSeconds": 0.006701946258544922, + "tick": 100 + }, + { + "renderSeconds": 0.002933025360107422, + "simulationSeconds": 0.006250977516174316, + "tick": 101 + }, + { + "renderSeconds": 0.0031909942626953125, + "simulationSeconds": 0.006203055381774902, + "tick": 102 + }, + { + "renderSeconds": 0.002914905548095703, + "simulationSeconds": 0.0063629150390625, + "tick": 103 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0.006425023078918457, + "tick": 104 + }, + { + "renderSeconds": 0.0034400224685668945, + "simulationSeconds": 0.0063430070877075195, + "tick": 105 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006850004196166992, + "tick": 106 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.008390069007873535, + "tick": 107 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.006976962089538574, + "tick": 108 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0.006430983543395996, + "tick": 109 + }, + { + "renderSeconds": 0.0030840635299682617, + "simulationSeconds": 0.006713986396789551, + "tick": 110 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.007722973823547363, + "tick": 111 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0.006551027297973633, + "tick": 112 + }, + { + "renderSeconds": 0.002819061279296875, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.013024091720581055, + "tick": 114 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.006140947341918945, + "tick": 115 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.006578922271728516, + "tick": 116 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006600022315979004, + "tick": 117 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 0.006332039833068848, + "tick": 118 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.006886005401611328, + "tick": 119 + }, + { + "renderSeconds": 0.0029300451278686523, + "simulationSeconds": 0.006087064743041992, + "tick": 120 + }, + { + "renderSeconds": 0.0031499862670898438, + "simulationSeconds": 0.00612795352935791, + "tick": 121 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.006177067756652832, + "tick": 122 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.006595015525817871, + "tick": 123 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 0.007153034210205078, + "tick": 124 + }, + { + "renderSeconds": 0.00256192684173584, + "simulationSeconds": 0.007213950157165527, + "tick": 125 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.006681084632873535, + "tick": 126 + }, + { + "renderSeconds": 0.0025489330291748047, + "simulationSeconds": 0.00621795654296875, + "tick": 127 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 9.5367431640625e-07, + "tick": 127 + }, + { + "renderSeconds": 0.0024869441986083984, + "simulationSeconds": 0.012127041816711426, + "tick": 129 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.006407976150512695, + "tick": 130 + }, + { + "renderSeconds": 0.0031229257583618164, + "simulationSeconds": 0.00874793529510498, + "tick": 131 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.007831931114196777, + "tick": 132 + }, + { + "renderSeconds": 0.0026270151138305664, + "simulationSeconds": 0.007209897041320801, + "tick": 133 + }, + { + "renderSeconds": 0.0028839111328125, + "simulationSeconds": 0.00642704963684082, + "tick": 134 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.00672304630279541, + "tick": 135 + }, + { + "renderSeconds": 0.0023800134658813477, + "simulationSeconds": 0.006600022315979004, + "tick": 136 + }, + { + "renderSeconds": 0.0029979944229125977, + "simulationSeconds": 0.0073549747467041016, + "tick": 137 + }, + { + "renderSeconds": 0.0032830238342285156, + "simulationSeconds": 0.007281064987182617, + "tick": 138 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.0070149898529052734, + "tick": 139 + }, + { + "renderSeconds": 0.003019094467163086, + "simulationSeconds": 0.006957054138183594, + "tick": 140 + }, + { + "renderSeconds": 0.002931952476501465, + "simulationSeconds": 0.00695192813873291, + "tick": 141 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.006929993629455566, + "tick": 142 + }, + { + "renderSeconds": 0.0033229589462280273, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0029550790786743164, + "simulationSeconds": 0.013776063919067383, + "tick": 144 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.007431983947753906, + "tick": 145 + }, + { + "renderSeconds": 0.003182053565979004, + "simulationSeconds": 0.006948947906494141, + "tick": 146 + }, + { + "renderSeconds": 0.003014087677001953, + "simulationSeconds": 0.007170915603637695, + "tick": 147 + }, + { + "renderSeconds": 0.0032129287719726562, + "simulationSeconds": 0.007319092750549316, + "tick": 148 + }, + { + "renderSeconds": 0.0028069019317626953, + "simulationSeconds": 0.007288098335266113, + "tick": 149 + }, + { + "renderSeconds": 0.0030219554901123047, + "simulationSeconds": 0.006765961647033691, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.0434277500025928, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 230, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.13207697868347168, + "preparationSeconds": 0.5035690069198608, + "reducedMotion": false, + "renderSeconds": 0.41792261600494385, + "repetition": 10, + "scenePreparationSeconds": 0.1549210548400879, + "simulationSeconds": 1.0105680227279663, + "snapshotBuildCount": 148, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 39.56587499123998, + "postActionRecords": 146, + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2412569522857666, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0008180141448974609, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0007690191268920898, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008770227432250977, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.005308985710144043, + "tick": 1 + }, + { + "renderSeconds": 0.0021909475326538086, + "simulationSeconds": 0.00636899471282959, + "tick": 2 + }, + { + "renderSeconds": 0.002454042434692383, + "simulationSeconds": 0.006492018699645996, + "tick": 3 + }, + { + "renderSeconds": 0.0024069547653198242, + "simulationSeconds": 0.006332039833068848, + "tick": 4 + }, + { + "renderSeconds": 0.002195000648498535, + "simulationSeconds": 0.006510019302368164, + "tick": 5 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.006765961647033691, + "tick": 6 + }, + { + "renderSeconds": 0.0032030344009399414, + "simulationSeconds": 0.007310032844543457, + "tick": 7 + }, + { + "renderSeconds": 0.002795100212097168, + "simulationSeconds": 9.5367431640625e-07, + "tick": 7 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 0.012338995933532715, + "tick": 9 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.00692296028137207, + "tick": 10 + }, + { + "renderSeconds": 0.0031909942626953125, + "simulationSeconds": 0.0069200992584228516, + "tick": 11 + }, + { + "renderSeconds": 0.00282895565032959, + "simulationSeconds": 0.006385922431945801, + "tick": 12 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.00660395622253418, + "tick": 13 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006124019622802734, + "tick": 14 + }, + { + "renderSeconds": 0.002581954002380371, + "simulationSeconds": 0.006672024726867676, + "tick": 15 + }, + { + "renderSeconds": 0.002576112747192383, + "simulationSeconds": 0.006574034690856934, + "tick": 16 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0.006666064262390137, + "tick": 17 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.006949067115783691, + "tick": 18 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.006410956382751465, + "tick": 19 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.006432056427001953, + "tick": 20 + }, + { + "renderSeconds": 0.002521991729736328, + "simulationSeconds": 0.006474971771240234, + "tick": 21 + }, + { + "renderSeconds": 0.0032500028610229492, + "simulationSeconds": 0.006116986274719238, + "tick": 22 + }, + { + "renderSeconds": 0.003298044204711914, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0025719404220581055, + "simulationSeconds": 0.01333308219909668, + "tick": 24 + }, + { + "renderSeconds": 0.0034810304641723633, + "simulationSeconds": 0.00748598575592041, + "tick": 25 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.006595015525817871, + "tick": 26 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.006322026252746582, + "tick": 27 + }, + { + "renderSeconds": 0.002865910530090332, + "simulationSeconds": 0.006399035453796387, + "tick": 28 + }, + { + "renderSeconds": 0.00421595573425293, + "simulationSeconds": 0.00704801082611084, + "tick": 29 + }, + { + "renderSeconds": 0.003307938575744629, + "simulationSeconds": 0.007111072540283203, + "tick": 30 + }, + { + "renderSeconds": 0.0028700828552246094, + "simulationSeconds": 0.0068759918212890625, + "tick": 31 + }, + { + "renderSeconds": 0.0025240182876586914, + "simulationSeconds": 0.006536006927490234, + "tick": 32 + }, + { + "renderSeconds": 0.0034099817276000977, + "simulationSeconds": 0.006229043006896973, + "tick": 33 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006504058837890625, + "tick": 34 + }, + { + "renderSeconds": 0.0033440589904785156, + "simulationSeconds": 0.007104039192199707, + "tick": 35 + }, + { + "renderSeconds": 0.003255009651184082, + "simulationSeconds": 0.007497906684875488, + "tick": 36 + }, + { + "renderSeconds": 0.003314971923828125, + "simulationSeconds": 0.007287025451660156, + "tick": 37 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.003404974937438965, + "simulationSeconds": 0.014840960502624512, + "tick": 39 + }, + { + "renderSeconds": 0.0033140182495117188, + "simulationSeconds": 0.007046937942504883, + "tick": 40 + }, + { + "renderSeconds": 0.0037670135498046875, + "simulationSeconds": 0.009066104888916016, + "tick": 41 + }, + { + "renderSeconds": 0.0032519102096557617, + "simulationSeconds": 0.007848024368286133, + "tick": 42 + }, + { + "renderSeconds": 0.0034990310668945312, + "simulationSeconds": 0.013983011245727539, + "tick": 44 + }, + { + "renderSeconds": 0.0031529664993286133, + "simulationSeconds": 0.007884979248046875, + "tick": 45 + }, + { + "renderSeconds": 0.0031930208206176758, + "simulationSeconds": 0.006952047348022461, + "tick": 46 + }, + { + "renderSeconds": 0.003152012825012207, + "simulationSeconds": 0.006994962692260742, + "tick": 47 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.0077860355377197266, + "tick": 48 + }, + { + "renderSeconds": 0.0031560659408569336, + "simulationSeconds": 0.007372021675109863, + "tick": 49 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.007459044456481934, + "tick": 50 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.007200002670288086, + "tick": 51 + }, + { + "renderSeconds": 0.003219008445739746, + "simulationSeconds": 0.008365988731384277, + "tick": 52 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.014330029487609863, + "tick": 54 + }, + { + "renderSeconds": 0.003122091293334961, + "simulationSeconds": 0.007326006889343262, + "tick": 55 + }, + { + "renderSeconds": 0.0030128955841064453, + "simulationSeconds": 0.007072925567626953, + "tick": 56 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.007238984107971191, + "tick": 57 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.007079005241394043, + "tick": 58 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.007035017013549805, + "tick": 59 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0.007058978080749512, + "tick": 60 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.007176995277404785, + "tick": 61 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.006955981254577637, + "tick": 62 + }, + { + "renderSeconds": 0.003314971923828125, + "simulationSeconds": 0.007259011268615723, + "tick": 63 + }, + { + "renderSeconds": 0.0032300949096679688, + "simulationSeconds": 0.007261991500854492, + "tick": 64 + }, + { + "renderSeconds": 0.003072977066040039, + "simulationSeconds": 0.007063031196594238, + "tick": 65 + }, + { + "renderSeconds": 0.0024759769439697266, + "simulationSeconds": 0.00616002082824707, + "tick": 66 + }, + { + "renderSeconds": 0.0023850202560424805, + "simulationSeconds": 0.006338000297546387, + "tick": 67 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.0025000572204589844, + "simulationSeconds": 0.01220095157623291, + "tick": 69 + }, + { + "renderSeconds": 0.0030509233474731445, + "simulationSeconds": 0.0068700313568115234, + "tick": 70 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.0072519779205322266, + "tick": 71 + }, + { + "renderSeconds": 0.0030480623245239258, + "simulationSeconds": 0.007120013236999512, + "tick": 72 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.007352948188781738, + "tick": 73 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.007084012031555176, + "tick": 74 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.007228970527648926, + "tick": 75 + }, + { + "renderSeconds": 0.00295102596282959, + "simulationSeconds": 0.007990002632141113, + "tick": 76 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.007645964622497559, + "tick": 77 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.007974982261657715, + "tick": 78 + }, + { + "renderSeconds": 0.003759026527404785, + "simulationSeconds": 0.008226990699768066, + "tick": 79 + }, + { + "renderSeconds": 0.003648996353149414, + "simulationSeconds": 0.009279966354370117, + "tick": 80 + }, + { + "renderSeconds": 0.0037740468978881836, + "simulationSeconds": 0.00851905345916748, + "tick": 81 + }, + { + "renderSeconds": 0.0031020641326904297, + "simulationSeconds": 0.0071849822998046875, + "tick": 82 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.013649940490722656, + "tick": 84 + }, + { + "renderSeconds": 0.003303050994873047, + "simulationSeconds": 0.006088972091674805, + "tick": 85 + }, + { + "renderSeconds": 0.0027540922164916992, + "simulationSeconds": 0.007339000701904297, + "tick": 86 + }, + { + "renderSeconds": 0.0032979249954223633, + "simulationSeconds": 0.006889939308166504, + "tick": 87 + }, + { + "renderSeconds": 0.0021610260009765625, + "simulationSeconds": 0.006266951560974121, + "tick": 88 + }, + { + "renderSeconds": 0.0026160478591918945, + "simulationSeconds": 0.006147980690002441, + "tick": 89 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.006286025047302246, + "tick": 90 + }, + { + "renderSeconds": 0.0024410486221313477, + "simulationSeconds": 0.006516933441162109, + "tick": 91 + }, + { + "renderSeconds": 0.0030128955841064453, + "simulationSeconds": 0.007357001304626465, + "tick": 92 + }, + { + "renderSeconds": 0.0030019283294677734, + "simulationSeconds": 0.007297039031982422, + "tick": 93 + }, + { + "renderSeconds": 0.0032819509506225586, + "simulationSeconds": 0.007539987564086914, + "tick": 94 + }, + { + "renderSeconds": 0.0036590099334716797, + "simulationSeconds": 0.008959054946899414, + "tick": 95 + }, + { + "renderSeconds": 0.003618001937866211, + "simulationSeconds": 0.009071946144104004, + "tick": 96 + }, + { + "renderSeconds": 0.0037270784378051758, + "simulationSeconds": 0.009008049964904785, + "tick": 97 + }, + { + "renderSeconds": 0.0036890506744384766, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.00297391414642334, + "simulationSeconds": 0.015095949172973633, + "tick": 99 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.013218045234680176, + "tick": 101 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.0063970088958740234, + "tick": 102 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.006593942642211914, + "tick": 103 + }, + { + "renderSeconds": 0.0027619600296020508, + "simulationSeconds": 0.006573915481567383, + "tick": 104 + }, + { + "renderSeconds": 0.0026189088821411133, + "simulationSeconds": 0.006656050682067871, + "tick": 105 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.006532073020935059, + "tick": 106 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.006613016128540039, + "tick": 107 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.006456971168518066, + "tick": 108 + }, + { + "renderSeconds": 0.0026210546493530273, + "simulationSeconds": 0.00677490234375, + "tick": 109 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.006680965423583984, + "tick": 110 + }, + { + "renderSeconds": 0.0027619600296020508, + "simulationSeconds": 0.006433010101318359, + "tick": 111 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.006510019302368164, + "tick": 112 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.012609004974365234, + "tick": 114 + }, + { + "renderSeconds": 0.0037320852279663086, + "simulationSeconds": 0.006502985954284668, + "tick": 115 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.006123065948486328, + "tick": 116 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.0064280033111572266, + "tick": 117 + }, + { + "renderSeconds": 0.0030330419540405273, + "simulationSeconds": 0.006043910980224609, + "tick": 118 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.006528019905090332, + "tick": 119 + }, + { + "renderSeconds": 0.0025910139083862305, + "simulationSeconds": 0.006453037261962891, + "tick": 120 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.006194949150085449, + "tick": 121 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.006549954414367676, + "tick": 122 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.007185935974121094, + "tick": 123 + }, + { + "renderSeconds": 0.0034449100494384766, + "simulationSeconds": 0.007756948471069336, + "tick": 124 + }, + { + "renderSeconds": 0.003327012062072754, + "simulationSeconds": 0.007486939430236816, + "tick": 125 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.007179975509643555, + "tick": 126 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0.0075609683990478516, + "tick": 127 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 0.01243293285369873, + "tick": 129 + }, + { + "renderSeconds": 0.002729058265686035, + "simulationSeconds": 0.006660938262939453, + "tick": 130 + }, + { + "renderSeconds": 0.0026859045028686523, + "simulationSeconds": 0.006909966468811035, + "tick": 131 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.007017970085144043, + "tick": 132 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.006507992744445801, + "tick": 133 + }, + { + "renderSeconds": 0.0027049779891967773, + "simulationSeconds": 0.006615996360778809, + "tick": 134 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.007550954818725586, + "tick": 135 + }, + { + "renderSeconds": 0.0027800798416137695, + "simulationSeconds": 0.006772041320800781, + "tick": 136 + }, + { + "renderSeconds": 0.002652883529663086, + "simulationSeconds": 0.006268024444580078, + "tick": 137 + }, + { + "renderSeconds": 0.0025238990783691406, + "simulationSeconds": 0.0075991153717041016, + "tick": 138 + }, + { + "renderSeconds": 0.002527952194213867, + "simulationSeconds": 0.006067991256713867, + "tick": 139 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.006420016288757324, + "tick": 140 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.006184101104736328, + "tick": 141 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.006479978561401367, + "tick": 142 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0024770498275756836, + "simulationSeconds": 0.01223301887512207, + "tick": 144 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.006235003471374512, + "tick": 145 + }, + { + "renderSeconds": 0.003096938133239746, + "simulationSeconds": 0.005975008010864258, + "tick": 146 + }, + { + "renderSeconds": 0.002628922462463379, + "simulationSeconds": 0.005987048149108887, + "tick": 147 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006352066993713379, + "tick": 148 + }, + { + "renderSeconds": 0.0025510787963867188, + "simulationSeconds": 0.006181001663208008, + "tick": 149 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006106019020080566, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03416154166916385, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 236, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.00607752799987793, + "preparationSeconds": 0.5074869394302368, + "reducedMotion": false, + "renderSeconds": 0.4357149600982666, + "repetition": 2, + "scenePreparationSeconds": 0.18178200721740723, + "simulationSeconds": 1.0332149267196655, + "snapshotBuildCount": 151, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333332557231, + "postActionRecords": 149, + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.23130524158477783, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0009969472885131836, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000659942626953125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007200241088867188, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008159875869750977, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.002599000930786133, + "simulationSeconds": 0.005948901176452637, + "tick": 1 + }, + { + "renderSeconds": 0.002520918846130371, + "simulationSeconds": 0.011974930763244629, + "tick": 3 + }, + { + "renderSeconds": 0.002579927444458008, + "simulationSeconds": 0.006345033645629883, + "tick": 4 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.007053971290588379, + "tick": 5 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.0074710845947265625, + "tick": 6 + }, + { + "renderSeconds": 0.003921985626220703, + "simulationSeconds": 0.009000062942504883, + "tick": 7 + }, + { + "renderSeconds": 0.0038269758224487305, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.003606081008911133, + "simulationSeconds": 0.00988006591796875, + "tick": 8 + }, + { + "renderSeconds": 0.0038629770278930664, + "simulationSeconds": 0.019315004348754883, + "tick": 10 + }, + { + "renderSeconds": 0.0024629831314086914, + "simulationSeconds": 0.014312982559204102, + "tick": 12 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.012542009353637695, + "tick": 14 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.006621003150939941, + "tick": 15 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0.0061490535736083984, + "tick": 16 + }, + { + "renderSeconds": 0.00260007381439209, + "simulationSeconds": 0.012333035469055176, + "tick": 18 + }, + { + "renderSeconds": 0.002849102020263672, + "simulationSeconds": 0.006098031997680664, + "tick": 19 + }, + { + "renderSeconds": 0.0027168989181518555, + "simulationSeconds": 0.006242036819458008, + "tick": 20 + }, + { + "renderSeconds": 0.002619028091430664, + "simulationSeconds": 0.006240963935852051, + "tick": 21 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.006262063980102539, + "tick": 22 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.003545999526977539, + "simulationSeconds": 0.0077179670333862305, + "tick": 23 + }, + { + "renderSeconds": 0.003509044647216797, + "simulationSeconds": 0.01556098461151123, + "tick": 25 + }, + { + "renderSeconds": 0.0035300254821777344, + "simulationSeconds": 0.00713801383972168, + "tick": 26 + }, + { + "renderSeconds": 0.0030559301376342773, + "simulationSeconds": 0.007583975791931152, + "tick": 27 + }, + { + "renderSeconds": 0.0031371116638183594, + "simulationSeconds": 0.007308006286621094, + "tick": 28 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.0071909427642822266, + "tick": 29 + }, + { + "renderSeconds": 0.0031539201736450195, + "simulationSeconds": 0.007485032081604004, + "tick": 30 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.006299018859863281, + "tick": 31 + }, + { + "renderSeconds": 0.0026330947875976562, + "simulationSeconds": 0.01252293586730957, + "tick": 33 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.006049036979675293, + "tick": 34 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.008005023002624512, + "tick": 35 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.006510019302368164, + "tick": 36 + }, + { + "renderSeconds": 0.003019094467163086, + "simulationSeconds": 0.006472945213317871, + "tick": 37 + }, + { + "renderSeconds": 0.0026450157165527344, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.006227970123291016, + "tick": 38 + }, + { + "renderSeconds": 0.0025900602340698242, + "simulationSeconds": 0.012591004371643066, + "tick": 40 + }, + { + "renderSeconds": 0.0028829574584960938, + "simulationSeconds": 0.006451010704040527, + "tick": 41 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0.008121013641357422, + "tick": 42 + }, + { + "renderSeconds": 0.0033750534057617188, + "simulationSeconds": 0.007146000862121582, + "tick": 43 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0.0075380802154541016, + "tick": 44 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0.007323026657104492, + "tick": 45 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0030241012573242188, + "simulationSeconds": 0.007182002067565918, + "tick": 46 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0.015102982521057129, + "tick": 48 + }, + { + "renderSeconds": 0.0033620595932006836, + "simulationSeconds": 0.007274985313415527, + "tick": 49 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0.008360981941223145, + "tick": 50 + }, + { + "renderSeconds": 0.003286004066467285, + "simulationSeconds": 0.007184028625488281, + "tick": 51 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.006204009056091309, + "tick": 52 + }, + { + "renderSeconds": 0.003098011016845703, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.007497072219848633, + "tick": 53 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 0.014876961708068848, + "tick": 55 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.006929993629455566, + "tick": 56 + }, + { + "renderSeconds": 0.002814054489135742, + "simulationSeconds": 0.006225943565368652, + "tick": 57 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0.006646990776062012, + "tick": 58 + }, + { + "renderSeconds": 0.003278017044067383, + "simulationSeconds": 0.007243990898132324, + "tick": 59 + }, + { + "renderSeconds": 0.0024650096893310547, + "simulationSeconds": 0.006654024124145508, + "tick": 60 + }, + { + "renderSeconds": 0.0030890703201293945, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0027910470962524414, + "simulationSeconds": 0.007403016090393066, + "tick": 61 + }, + { + "renderSeconds": 0.0025110244750976562, + "simulationSeconds": 0.012196063995361328, + "tick": 63 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.006714940071105957, + "tick": 64 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.006212949752807617, + "tick": 65 + }, + { + "renderSeconds": 0.00241696834564209, + "simulationSeconds": 0.0063370466232299805, + "tick": 66 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006271958351135254, + "tick": 67 + }, + { + "renderSeconds": 0.0030488967895507812, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.002640962600708008, + "simulationSeconds": 0.006300091743469238, + "tick": 68 + }, + { + "renderSeconds": 0.0026129484176635742, + "simulationSeconds": 0.012696027755737305, + "tick": 70 + }, + { + "renderSeconds": 0.002642035484313965, + "simulationSeconds": 0.0062149763107299805, + "tick": 71 + }, + { + "renderSeconds": 0.0025110244750976562, + "simulationSeconds": 0.0065430402755737305, + "tick": 72 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.006932973861694336, + "tick": 73 + }, + { + "renderSeconds": 0.00285494327545166, + "simulationSeconds": 0.006399989128112793, + "tick": 74 + }, + { + "renderSeconds": 0.0025500059127807617, + "simulationSeconds": 0.0068359375, + "tick": 75 + }, + { + "renderSeconds": 0.0036278963088989258, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 75 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.006496906280517578, + "tick": 76 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.013396978378295898, + "tick": 78 + }, + { + "renderSeconds": 0.0029250383377075195, + "simulationSeconds": 0.006476044654846191, + "tick": 79 + }, + { + "renderSeconds": 0.002618074417114258, + "simulationSeconds": 0.00704801082611084, + "tick": 80 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.006245017051696777, + "tick": 81 + }, + { + "renderSeconds": 0.0028760433197021484, + "simulationSeconds": 0.00621795654296875, + "tick": 82 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 9.5367431640625e-07, + "tick": 82 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.006296038627624512, + "tick": 83 + }, + { + "renderSeconds": 0.0026749372482299805, + "simulationSeconds": 0.012897968292236328, + "tick": 85 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.006381988525390625, + "tick": 86 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 0.0062760114669799805, + "tick": 87 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.0074089765548706055, + "tick": 88 + }, + { + "renderSeconds": 0.0029910802841186523, + "simulationSeconds": 0.007242918014526367, + "tick": 89 + }, + { + "renderSeconds": 0.0033479928970336914, + "simulationSeconds": 0.00752103328704834, + "tick": 90 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.006255030632019043, + "tick": 91 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.012759923934936523, + "tick": 93 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.006950974464416504, + "tick": 94 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.007061004638671875, + "tick": 95 + }, + { + "renderSeconds": 0.0028160810470581055, + "simulationSeconds": 0.006204962730407715, + "tick": 96 + }, + { + "renderSeconds": 0.002816915512084961, + "simulationSeconds": 0.006304025650024414, + "tick": 97 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.00267791748046875, + "simulationSeconds": 0.0064830780029296875, + "tick": 98 + }, + { + "renderSeconds": 0.002588033676147461, + "simulationSeconds": 0.012986063957214355, + "tick": 100 + }, + { + "renderSeconds": 0.003078937530517578, + "simulationSeconds": 0.007120013236999512, + "tick": 101 + }, + { + "renderSeconds": 0.0025910139083862305, + "simulationSeconds": 0.007825970649719238, + "tick": 102 + }, + { + "renderSeconds": 0.003283977508544922, + "simulationSeconds": 0.0069609880447387695, + "tick": 103 + }, + { + "renderSeconds": 0.0024809837341308594, + "simulationSeconds": 0.00663602352142334, + "tick": 104 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.005991935729980469, + "tick": 105 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 105 + }, + { + "renderSeconds": 0.0025110244750976562, + "simulationSeconds": 0.006354928016662598, + "tick": 106 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.012633919715881348, + "tick": 108 + }, + { + "renderSeconds": 0.00309598445892334, + "simulationSeconds": 0.006403088569641113, + "tick": 109 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 0.006112098693847656, + "tick": 110 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.006680965423583984, + "tick": 111 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.006422996520996094, + "tick": 112 + }, + { + "renderSeconds": 0.0031889677047729492, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.0025739669799804688, + "simulationSeconds": 0.006681084632873535, + "tick": 113 + }, + { + "renderSeconds": 0.0025200843811035156, + "simulationSeconds": 0.012280941009521484, + "tick": 115 + }, + { + "renderSeconds": 0.002613067626953125, + "simulationSeconds": 0.006677985191345215, + "tick": 116 + }, + { + "renderSeconds": 0.0026050806045532227, + "simulationSeconds": 0.0065310001373291016, + "tick": 117 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.006104946136474609, + "tick": 118 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.0065490007400512695, + "tick": 119 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.006691932678222656, + "tick": 120 + }, + { + "renderSeconds": 0.0026780366897583008, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006812095642089844, + "tick": 121 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.01154792308807373, + "tick": 123 + }, + { + "renderSeconds": 0.00203704833984375, + "simulationSeconds": 0.006514072418212891, + "tick": 124 + }, + { + "renderSeconds": 0.0020020008087158203, + "simulationSeconds": 0.006312966346740723, + "tick": 125 + }, + { + "renderSeconds": 0.0020220279693603516, + "simulationSeconds": 0.006551027297973633, + "tick": 126 + }, + { + "renderSeconds": 0.006044983863830566, + "simulationSeconds": 0.007024049758911133, + "tick": 127 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0027369260787963867, + "simulationSeconds": 0.006999015808105469, + "tick": 128 + }, + { + "renderSeconds": 0.002628922462463379, + "simulationSeconds": 0.014454960823059082, + "tick": 130 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.006474971771240234, + "tick": 131 + }, + { + "renderSeconds": 0.003206014633178711, + "simulationSeconds": 0.00687098503112793, + "tick": 132 + }, + { + "renderSeconds": 0.0025179386138916016, + "simulationSeconds": 0.00698399543762207, + "tick": 133 + }, + { + "renderSeconds": 0.002770066261291504, + "simulationSeconds": 0.006424903869628906, + "tick": 134 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.0074160099029541016, + "tick": 135 + }, + { + "renderSeconds": 0.002610921859741211, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002563953399658203, + "simulationSeconds": 0.006368041038513184, + "tick": 136 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.012143969535827637, + "tick": 138 + }, + { + "renderSeconds": 0.002635955810546875, + "simulationSeconds": 0.006399035453796387, + "tick": 139 + }, + { + "renderSeconds": 0.0027850866317749023, + "simulationSeconds": 0.006657958030700684, + "tick": 140 + }, + { + "renderSeconds": 0.0021419525146484375, + "simulationSeconds": 0.006785988807678223, + "tick": 141 + }, + { + "renderSeconds": 0.0024449825286865234, + "simulationSeconds": 0.006059050559997559, + "tick": 142 + }, + { + "renderSeconds": 0.0034570693969726562, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0025119781494140625, + "simulationSeconds": 0.00645899772644043, + "tick": 143 + }, + { + "renderSeconds": 0.002447962760925293, + "simulationSeconds": 0.011966943740844727, + "tick": 145 + }, + { + "renderSeconds": 0.0024219751358032227, + "simulationSeconds": 0.0062628984451293945, + "tick": 146 + }, + { + "renderSeconds": 0.00280606746673584, + "simulationSeconds": 0.006345033645629883, + "tick": 147 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006421923637390137, + "tick": 148 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.006773948669433594, + "tick": 149 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.006072998046875, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.034453250002115965, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 234, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005762934684753418, + "preparationSeconds": 0.4979560375213623, + "reducedMotion": true, + "renderSeconds": 0.41912245750427246, + "repetition": 2, + "scenePreparationSeconds": 0.2059561014175415, + "simulationSeconds": 1.0101566314697266, + "snapshotBuildCount": 150, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 38.17766666179523, + "postActionRecords": 148, + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.41264188289642334, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0008119344711303711, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007929801940917969, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006849765777587891, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0006929636001586914, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003188014030456543, + "simulationSeconds": 0.0049790143966674805, + "tick": 1 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.005544066429138184, + "tick": 2 + }, + { + "renderSeconds": 0.0027490854263305664, + "simulationSeconds": 0.005558967590332031, + "tick": 3 + }, + { + "renderSeconds": 0.0028209686279296875, + "simulationSeconds": 0.006296992301940918, + "tick": 4 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0.006577968597412109, + "tick": 5 + }, + { + "renderSeconds": 0.0034499168395996094, + "simulationSeconds": 0.01174008846282959, + "tick": 7 + }, + { + "renderSeconds": 0.0036219358444213867, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0027658939361572266, + "simulationSeconds": 0.006357073783874512, + "tick": 8 + }, + { + "renderSeconds": 0.003719925880432129, + "simulationSeconds": 0.006347060203552246, + "tick": 9 + }, + { + "renderSeconds": 0.003564000129699707, + "simulationSeconds": 0.006649971008300781, + "tick": 10 + }, + { + "renderSeconds": 0.0035660266876220703, + "simulationSeconds": 0.00622105598449707, + "tick": 11 + }, + { + "renderSeconds": 0.0038499832153320312, + "simulationSeconds": 0.006631016731262207, + "tick": 12 + }, + { + "renderSeconds": 0.0035169124603271484, + "simulationSeconds": 0.012372016906738281, + "tick": 14 + }, + { + "renderSeconds": 0.004034996032714844, + "simulationSeconds": 0.006361961364746094, + "tick": 15 + }, + { + "renderSeconds": 0.004557967185974121, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 15 + }, + { + "renderSeconds": 0.0035829544067382812, + "simulationSeconds": 0.006786942481994629, + "tick": 16 + }, + { + "renderSeconds": 0.003714919090270996, + "simulationSeconds": 0.006685018539428711, + "tick": 17 + }, + { + "renderSeconds": 0.003990054130554199, + "simulationSeconds": 0.006067991256713867, + "tick": 18 + }, + { + "renderSeconds": 0.0036509037017822266, + "simulationSeconds": 0.006063938140869141, + "tick": 19 + }, + { + "renderSeconds": 0.0038300752639770508, + "simulationSeconds": 0.006124973297119141, + "tick": 20 + }, + { + "renderSeconds": 0.0035600662231445312, + "simulationSeconds": 0.012349963188171387, + "tick": 22 + }, + { + "renderSeconds": 0.004138946533203125, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.004030942916870117, + "simulationSeconds": 0.007341980934143066, + "tick": 23 + }, + { + "renderSeconds": 0.003491997718811035, + "simulationSeconds": 0.006245017051696777, + "tick": 24 + }, + { + "renderSeconds": 0.0034360885620117188, + "simulationSeconds": 0.006221890449523926, + "tick": 25 + }, + { + "renderSeconds": 0.003714919090270996, + "simulationSeconds": 0.006331086158752441, + "tick": 26 + }, + { + "renderSeconds": 0.0034900903701782227, + "simulationSeconds": 0.00625002384185791, + "tick": 27 + }, + { + "renderSeconds": 0.003394007682800293, + "simulationSeconds": 0.012217998504638672, + "tick": 29 + }, + { + "renderSeconds": 0.003407001495361328, + "simulationSeconds": 0.006679058074951172, + "tick": 30 + }, + { + "renderSeconds": 0.003811955451965332, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.003874063491821289, + "simulationSeconds": 0.0064820051193237305, + "tick": 31 + }, + { + "renderSeconds": 0.0034339427947998047, + "simulationSeconds": 0.006286025047302246, + "tick": 32 + }, + { + "renderSeconds": 0.003466963768005371, + "simulationSeconds": 0.00633394718170166, + "tick": 33 + }, + { + "renderSeconds": 0.003465890884399414, + "simulationSeconds": 0.006575107574462891, + "tick": 34 + }, + { + "renderSeconds": 0.0035229921340942383, + "simulationSeconds": 0.0064890384674072266, + "tick": 35 + }, + { + "renderSeconds": 0.0035669803619384766, + "simulationSeconds": 0.012711048126220703, + "tick": 37 + }, + { + "renderSeconds": 0.00394594669342041, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0029560327529907227, + "simulationSeconds": 0.006485104560852051, + "tick": 38 + }, + { + "renderSeconds": 0.003751993179321289, + "simulationSeconds": 0.006415009498596191, + "tick": 39 + }, + { + "renderSeconds": 0.0034869909286499023, + "simulationSeconds": 0.006106019020080566, + "tick": 40 + }, + { + "renderSeconds": 0.0033179521560668945, + "simulationSeconds": 0.006394028663635254, + "tick": 41 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.006806015968322754, + "tick": 42 + }, + { + "renderSeconds": 0.0034570693969726562, + "simulationSeconds": 0.012063026428222656, + "tick": 44 + }, + { + "renderSeconds": 0.0036249160766601562, + "simulationSeconds": 0.006332993507385254, + "tick": 45 + }, + { + "renderSeconds": 0.003588080406188965, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.003443002700805664, + "simulationSeconds": 0.006920933723449707, + "tick": 46 + }, + { + "renderSeconds": 0.0036220550537109375, + "simulationSeconds": 0.006720900535583496, + "tick": 47 + }, + { + "renderSeconds": 0.0037069320678710938, + "simulationSeconds": 0.006619930267333984, + "tick": 48 + }, + { + "renderSeconds": 0.0033240318298339844, + "simulationSeconds": 0.0065310001373291016, + "tick": 49 + }, + { + "renderSeconds": 0.003618001937866211, + "simulationSeconds": 0.006752967834472656, + "tick": 50 + }, + { + "renderSeconds": 0.003535032272338867, + "simulationSeconds": 0.012115955352783203, + "tick": 52 + }, + { + "renderSeconds": 0.0037859678268432617, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.006815075874328613, + "tick": 53 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.006502032279968262, + "tick": 54 + }, + { + "renderSeconds": 0.003992915153503418, + "simulationSeconds": 0.006526947021484375, + "tick": 55 + }, + { + "renderSeconds": 0.0033169984817504883, + "simulationSeconds": 0.006339907646179199, + "tick": 56 + }, + { + "renderSeconds": 0.003361940383911133, + "simulationSeconds": 0.00622403621673584, + "tick": 57 + }, + { + "renderSeconds": 0.0036330223083496094, + "simulationSeconds": 0.012457966804504395, + "tick": 59 + }, + { + "renderSeconds": 0.004068970680236816, + "simulationSeconds": 0.006605029106140137, + "tick": 60 + }, + { + "renderSeconds": 0.0039060115814208984, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.003636956214904785, + "simulationSeconds": 0.006512999534606934, + "tick": 61 + }, + { + "renderSeconds": 0.004223942756652832, + "simulationSeconds": 0.006487011909484863, + "tick": 62 + }, + { + "renderSeconds": 0.003937959671020508, + "simulationSeconds": 0.006443977355957031, + "tick": 63 + }, + { + "renderSeconds": 0.0037239789962768555, + "simulationSeconds": 0.00613093376159668, + "tick": 64 + }, + { + "renderSeconds": 0.003853917121887207, + "simulationSeconds": 0.006481051445007324, + "tick": 65 + }, + { + "renderSeconds": 0.0036450624465942383, + "simulationSeconds": 0.012607932090759277, + "tick": 67 + }, + { + "renderSeconds": 0.004168987274169922, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0035909414291381836, + "simulationSeconds": 0.006374001502990723, + "tick": 68 + }, + { + "renderSeconds": 0.003553032875061035, + "simulationSeconds": 0.006889939308166504, + "tick": 69 + }, + { + "renderSeconds": 0.0035239458084106445, + "simulationSeconds": 0.006610989570617676, + "tick": 70 + }, + { + "renderSeconds": 0.004089951515197754, + "simulationSeconds": 0.006262063980102539, + "tick": 71 + }, + { + "renderSeconds": 0.003594040870666504, + "simulationSeconds": 0.006389021873474121, + "tick": 72 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.012838006019592285, + "tick": 74 + }, + { + "renderSeconds": 0.0038270950317382812, + "simulationSeconds": 0.006518959999084473, + "tick": 75 + }, + { + "renderSeconds": 0.0037020444869995117, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.0035730600357055664, + "simulationSeconds": 0.0064269304275512695, + "tick": 76 + }, + { + "renderSeconds": 0.003638029098510742, + "simulationSeconds": 0.006610989570617676, + "tick": 77 + }, + { + "renderSeconds": 0.0035910606384277344, + "simulationSeconds": 0.006834983825683594, + "tick": 78 + }, + { + "renderSeconds": 0.0035120248794555664, + "simulationSeconds": 0.006595969200134277, + "tick": 79 + }, + { + "renderSeconds": 0.0035979747772216797, + "simulationSeconds": 0.006905078887939453, + "tick": 80 + }, + { + "renderSeconds": 0.0033990144729614258, + "simulationSeconds": 0.012328028678894043, + "tick": 82 + }, + { + "renderSeconds": 0.003726959228515625, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0035669803619384766, + "simulationSeconds": 0.008244037628173828, + "tick": 83 + }, + { + "renderSeconds": 0.004559040069580078, + "simulationSeconds": 0.006384015083312988, + "tick": 84 + }, + { + "renderSeconds": 0.0039310455322265625, + "simulationSeconds": 0.006901979446411133, + "tick": 85 + }, + { + "renderSeconds": 0.004132986068725586, + "simulationSeconds": 0.006459951400756836, + "tick": 86 + }, + { + "renderSeconds": 0.00407099723815918, + "simulationSeconds": 0.0062760114669799805, + "tick": 87 + }, + { + "renderSeconds": 0.0037120580673217773, + "simulationSeconds": 0.012668967247009277, + "tick": 89 + }, + { + "renderSeconds": 0.004029989242553711, + "simulationSeconds": 0.006682038307189941, + "tick": 90 + }, + { + "renderSeconds": 0.003913998603820801, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.004683971405029297, + "simulationSeconds": 0.0062760114669799805, + "tick": 91 + }, + { + "renderSeconds": 0.0038280487060546875, + "simulationSeconds": 0.006825089454650879, + "tick": 92 + }, + { + "renderSeconds": 0.0036889314651489258, + "simulationSeconds": 0.006152033805847168, + "tick": 93 + }, + { + "renderSeconds": 0.0037790536880493164, + "simulationSeconds": 0.006834983825683594, + "tick": 94 + }, + { + "renderSeconds": 0.0037469863891601562, + "simulationSeconds": 0.006678104400634766, + "tick": 95 + }, + { + "renderSeconds": 0.0033990144729614258, + "simulationSeconds": 0.012819051742553711, + "tick": 97 + }, + { + "renderSeconds": 0.0034220218658447266, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.004019975662231445, + "simulationSeconds": 0.006855010986328125, + "tick": 98 + }, + { + "renderSeconds": 0.0032950639724731445, + "simulationSeconds": 0.006196022033691406, + "tick": 99 + }, + { + "renderSeconds": 0.0036029815673828125, + "simulationSeconds": 0.006621956825256348, + "tick": 100 + }, + { + "renderSeconds": 0.0033500194549560547, + "simulationSeconds": 0.006442904472351074, + "tick": 101 + }, + { + "renderSeconds": 0.0036040544509887695, + "simulationSeconds": 0.006527066230773926, + "tick": 102 + }, + { + "renderSeconds": 0.0034999847412109375, + "simulationSeconds": 0.013415932655334473, + "tick": 104 + }, + { + "renderSeconds": 0.003994941711425781, + "simulationSeconds": 0.006705045700073242, + "tick": 105 + }, + { + "renderSeconds": 0.0036379098892211914, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0039119720458984375, + "simulationSeconds": 0.007806062698364258, + "tick": 106 + }, + { + "renderSeconds": 0.004485011100769043, + "simulationSeconds": 0.006579041481018066, + "tick": 107 + }, + { + "renderSeconds": 0.003701925277709961, + "simulationSeconds": 0.006841063499450684, + "tick": 108 + }, + { + "renderSeconds": 0.0034590959548950195, + "simulationSeconds": 0.0062639713287353516, + "tick": 109 + }, + { + "renderSeconds": 0.003731966018676758, + "simulationSeconds": 0.007078051567077637, + "tick": 110 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.012827038764953613, + "tick": 112 + }, + { + "renderSeconds": 0.003962993621826172, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.004007935523986816, + "simulationSeconds": 0.006910920143127441, + "tick": 113 + }, + { + "renderSeconds": 0.003775954246520996, + "simulationSeconds": 0.006447911262512207, + "tick": 114 + }, + { + "renderSeconds": 0.0033179521560668945, + "simulationSeconds": 0.006712079048156738, + "tick": 115 + }, + { + "renderSeconds": 0.003910064697265625, + "simulationSeconds": 0.0066269636154174805, + "tick": 116 + }, + { + "renderSeconds": 0.0033960342407226562, + "simulationSeconds": 0.006752967834472656, + "tick": 117 + }, + { + "renderSeconds": 0.0034810304641723633, + "simulationSeconds": 0.012696981430053711, + "tick": 119 + }, + { + "renderSeconds": 0.003632068634033203, + "simulationSeconds": 0.006788015365600586, + "tick": 120 + }, + { + "renderSeconds": 0.0038459300994873047, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0036510229110717773, + "simulationSeconds": 0.006674051284790039, + "tick": 121 + }, + { + "renderSeconds": 0.003490924835205078, + "simulationSeconds": 0.006512045860290527, + "tick": 122 + }, + { + "renderSeconds": 0.0035170316696166992, + "simulationSeconds": 0.006672978401184082, + "tick": 123 + }, + { + "renderSeconds": 0.0034009218215942383, + "simulationSeconds": 0.006196022033691406, + "tick": 124 + }, + { + "renderSeconds": 0.002913951873779297, + "simulationSeconds": 0.0068100690841674805, + "tick": 125 + }, + { + "renderSeconds": 0.003690004348754883, + "simulationSeconds": 0.01217496395111084, + "tick": 127 + }, + { + "renderSeconds": 0.0038269758224487305, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0033849477767944336, + "simulationSeconds": 0.006560921669006348, + "tick": 128 + }, + { + "renderSeconds": 0.003576993942260742, + "simulationSeconds": 0.006322026252746582, + "tick": 129 + }, + { + "renderSeconds": 0.0035750865936279297, + "simulationSeconds": 0.00618898868560791, + "tick": 130 + }, + { + "renderSeconds": 0.0035420656204223633, + "simulationSeconds": 0.006017923355102539, + "tick": 131 + }, + { + "renderSeconds": 0.0035909414291381836, + "simulationSeconds": 0.006094098091125488, + "tick": 132 + }, + { + "renderSeconds": 0.0037169456481933594, + "simulationSeconds": 0.012480020523071289, + "tick": 134 + }, + { + "renderSeconds": 0.003443002700805664, + "simulationSeconds": 0.006706953048706055, + "tick": 135 + }, + { + "renderSeconds": 0.0036650896072387695, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0038689374923706055, + "simulationSeconds": 0.006209015846252441, + "tick": 136 + }, + { + "renderSeconds": 0.0036989450454711914, + "simulationSeconds": 0.005938053131103516, + "tick": 137 + }, + { + "renderSeconds": 0.0035359859466552734, + "simulationSeconds": 0.006074070930480957, + "tick": 138 + }, + { + "renderSeconds": 0.003322005271911621, + "simulationSeconds": 0.006052970886230469, + "tick": 139 + }, + { + "renderSeconds": 0.0034999847412109375, + "simulationSeconds": 0.006116032600402832, + "tick": 140 + }, + { + "renderSeconds": 0.004029989242553711, + "simulationSeconds": 0.012558937072753906, + "tick": 142 + }, + { + "renderSeconds": 0.00394892692565918, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.004153013229370117, + "simulationSeconds": 0.007007002830505371, + "tick": 143 + }, + { + "renderSeconds": 0.00400996208190918, + "simulationSeconds": 0.007293105125427246, + "tick": 144 + }, + { + "renderSeconds": 0.003630995750427246, + "simulationSeconds": 0.006889939308166504, + "tick": 145 + }, + { + "renderSeconds": 0.0035599470138549805, + "simulationSeconds": 0.005743980407714844, + "tick": 146 + }, + { + "renderSeconds": 0.003268003463745117, + "simulationSeconds": 0.005824923515319824, + "tick": 147 + }, + { + "renderSeconds": 0.003823995590209961, + "simulationSeconds": 0.011597037315368652, + "tick": 149 + }, + { + "renderSeconds": 0.004163026809692383, + "simulationSeconds": 0.005980014801025391, + "tick": 150 + }, + { + "renderSeconds": 0.003484010696411133, + "simulationSeconds": 0, + "tick": 150 + }, + { + "renderSeconds": 0.003789067268371582, + "simulationSeconds": 0.0064809322357177734, + "tick": 151 + }, + { + "renderSeconds": 0.00398409366607666, + "simulationSeconds": 0.00699305534362793, + "tick": 152 + }, + { + "renderSeconds": 0.00438690185546875, + "simulationSeconds": 0.00669097900390625, + "tick": 153 + }, + { + "renderSeconds": 0.004065036773681641, + "simulationSeconds": 0.006610989570617676, + "tick": 154 + }, + { + "renderSeconds": 0.003994107246398926, + "simulationSeconds": 0.006569027900695801, + "tick": 155 + }, + { + "renderSeconds": 0.00397491455078125, + "simulationSeconds": 0.013261914253234863, + "tick": 157 + }, + { + "renderSeconds": 0.004391074180603027, + "simulationSeconds": 0.0071179866790771484, + "tick": 158 + }, + { + "renderSeconds": 0.004538059234619141, + "simulationSeconds": 0.006673932075500488, + "tick": 159 + }, + { + "renderSeconds": 0.004823923110961914, + "simulationSeconds": 0.008372068405151367, + "tick": 160 + }, + { + "renderSeconds": 0.0038050413131713867, + "simulationSeconds": 0.007671952247619629, + "tick": 161 + }, + { + "renderSeconds": 0.003704071044921875, + "simulationSeconds": 0.006090998649597168, + "tick": 162 + }, + { + "renderSeconds": 0.0035680532455444336, + "simulationSeconds": 0.011813044548034668, + "tick": 164 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.005908966064453125, + "tick": 165 + }, + { + "renderSeconds": 0.0030149221420288086, + "simulationSeconds": 0.005988955497741699, + "tick": 166 + }, + { + "renderSeconds": 0.0030480623245239258, + "simulationSeconds": 0.006912946701049805, + "tick": 167 + }, + { + "renderSeconds": 0.003640890121459961, + "simulationSeconds": 0.006176114082336426, + "tick": 168 + }, + { + "renderSeconds": 0.0035849809646606445, + "simulationSeconds": 0.0070760250091552734, + "tick": 169 + }, + { + "renderSeconds": 0.004317045211791992, + "simulationSeconds": 0.006492018699645996, + "tick": 170 + }, + { + "renderSeconds": 0.0036019086837768555, + "simulationSeconds": 0.012579083442687988, + "tick": 172 + }, + { + "renderSeconds": 0.003473997116088867, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.003916025161743164, + "simulationSeconds": 0.006574034690856934, + "tick": 173 + }, + { + "renderSeconds": 0.0036679506301879883, + "simulationSeconds": 0.006201028823852539, + "tick": 174 + }, + { + "renderSeconds": 0.0036700963973999023, + "simulationSeconds": 0.006140947341918945, + "tick": 175 + }, + { + "renderSeconds": 0.0037180185317993164, + "simulationSeconds": 0.00672602653503418, + "tick": 176 + }, + { + "renderSeconds": 0.0037980079650878906, + "simulationSeconds": 0.007010936737060547, + "tick": 177 + }, + { + "renderSeconds": 0.0038269758224487305, + "simulationSeconds": 0.014028072357177734, + "tick": 179 + }, + { + "renderSeconds": 0.004083037376403809, + "simulationSeconds": 0.006898999214172363, + "tick": 180 + }, + { + "renderSeconds": 0.004374027252197266, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.004073977470397949, + "simulationSeconds": 0.006945013999938965, + "tick": 181 + }, + { + "renderSeconds": 0.0036460161209106445, + "simulationSeconds": 0.007929086685180664, + "tick": 182 + }, + { + "renderSeconds": 0.0037260055541992188, + "simulationSeconds": 0.00609898567199707, + "tick": 183 + }, + { + "renderSeconds": 0.0034929513931274414, + "simulationSeconds": 0.006213068962097168, + "tick": 184 + }, + { + "renderSeconds": 0.0036960840225219727, + "simulationSeconds": 0.006373047828674316, + "tick": 185 + }, + { + "renderSeconds": 0.0035889148712158203, + "simulationSeconds": 0.01226198673248291, + "tick": 187 + }, + { + "renderSeconds": 0.00365602970123291, + "simulationSeconds": 0.006538987159729004, + "tick": 188 + }, + { + "renderSeconds": 0.003576040267944336, + "simulationSeconds": 0.006385922431945801, + "tick": 189 + }, + { + "renderSeconds": 0.0035479068756103516, + "simulationSeconds": 0.006435036659240723, + "tick": 190 + }, + { + "renderSeconds": 0.00353395938873291, + "simulationSeconds": 0.006407976150512695, + "tick": 191 + }, + { + "renderSeconds": 0.003910064697265625, + "simulationSeconds": 0.006831049919128418, + "tick": 192 + }, + { + "renderSeconds": 0.0035539865493774414, + "simulationSeconds": 0.012441039085388184, + "tick": 194 + }, + { + "renderSeconds": 0.003407001495361328, + "simulationSeconds": 0.0061119794845581055, + "tick": 195 + }, + { + "renderSeconds": 0.004102945327758789, + "simulationSeconds": 0, + "tick": 195 + }, + { + "renderSeconds": 0.003307938575744629, + "simulationSeconds": 0.006289005279541016, + "tick": 196 + }, + { + "renderSeconds": 0.003448009490966797, + "simulationSeconds": 0.006494998931884766, + "tick": 197 + }, + { + "renderSeconds": 0.0033589601516723633, + "simulationSeconds": 0.0060689449310302734, + "tick": 198 + }, + { + "renderSeconds": 0.0037729740142822266, + "simulationSeconds": 0.007297992706298828, + "tick": 199 + }, + { + "renderSeconds": 0.004036903381347656, + "simulationSeconds": 0.007217049598693848, + "tick": 200 + }, + { + "renderSeconds": 0.0041429996490478516, + "simulationSeconds": 0.014155983924865723, + "tick": 202 + }, + { + "renderSeconds": 0.003993988037109375, + "simulationSeconds": 9.5367431640625e-07, + "tick": 202 + }, + { + "renderSeconds": 0.0038770437240600586, + "simulationSeconds": 0.00966799259185791, + "tick": 203 + }, + { + "renderSeconds": 0.004202008247375488, + "simulationSeconds": 0.007189035415649414, + "tick": 204 + }, + { + "renderSeconds": 0.0043790340423583984, + "simulationSeconds": 0.007005095481872559, + "tick": 205 + }, + { + "renderSeconds": 0.003641963005065918, + "simulationSeconds": 0.012709975242614746, + "tick": 207 + }, + { + "renderSeconds": 0.003553032875061035, + "simulationSeconds": 0.012549042701721191, + "tick": 209 + }, + { + "renderSeconds": 0.003961086273193359, + "simulationSeconds": 0.006211996078491211, + "tick": 210 + }, + { + "renderSeconds": 0.003940939903259277, + "simulationSeconds": 0, + "tick": 210 + }, + { + "renderSeconds": 0.0038919448852539062, + "simulationSeconds": 0.006502985954284668, + "tick": 211 + }, + { + "renderSeconds": 0.00392305850982666, + "simulationSeconds": 0.0062400102615356445, + "tick": 212 + }, + { + "renderSeconds": 0.004108071327209473, + "simulationSeconds": 0.006487011909484863, + "tick": 213 + }, + { + "renderSeconds": 0.003885984420776367, + "simulationSeconds": 0.006700038909912109, + "tick": 214 + }, + { + "renderSeconds": 0.003965973854064941, + "simulationSeconds": 0.0061969757080078125, + "tick": 215 + }, + { + "renderSeconds": 0.0034259557723999023, + "simulationSeconds": 0.012751936912536621, + "tick": 217 + }, + { + "renderSeconds": 0.0035229921340942383, + "simulationSeconds": 0.0130079984664917, + "tick": 219 + }, + { + "renderSeconds": 0.00360107421875, + "simulationSeconds": 0.012776970863342285, + "tick": 221 + }, + { + "renderSeconds": 0.0040090084075927734, + "simulationSeconds": 0.005916953086853027, + "tick": 222 + }, + { + "renderSeconds": 0.0036280155181884766, + "simulationSeconds": 0.01230001449584961, + "tick": 224 + }, + { + "renderSeconds": 0.003916025161743164, + "simulationSeconds": 0.006370067596435547, + "tick": 225 + }, + { + "renderSeconds": 0.004212021827697754, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.003965020179748535, + "simulationSeconds": 0.010189056396484375, + "tick": 226 + }, + { + "renderSeconds": 0.0035729408264160156, + "simulationSeconds": 0.007736086845397949, + "tick": 227 + }, + { + "renderSeconds": 0.0038330554962158203, + "simulationSeconds": 0.012673020362854004, + "tick": 229 + }, + { + "renderSeconds": 0.003918051719665527, + "simulationSeconds": 0.0064580440521240234, + "tick": 230 + }, + { + "renderSeconds": 0.003638029098510742, + "simulationSeconds": 0.01229405403137207, + "tick": 232 + }, + { + "renderSeconds": 0.0038280487060546875, + "simulationSeconds": 0, + "tick": 232 + }, + { + "renderSeconds": 0.003756999969482422, + "simulationSeconds": 0.007037997245788574, + "tick": 233 + }, + { + "renderSeconds": 0.0036929845809936523, + "simulationSeconds": 0.006651043891906738, + "tick": 234 + }, + { + "renderSeconds": 0.0036699771881103516, + "simulationSeconds": 0.006327033042907715, + "tick": 235 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.006429076194763184, + "tick": 236 + }, + { + "renderSeconds": 0.0038520097732543945, + "simulationSeconds": 0.006163954734802246, + "tick": 237 + }, + { + "renderSeconds": 0.0038269758224487305, + "simulationSeconds": 0.012771964073181152, + "tick": 239 + }, + { + "renderSeconds": 0.0037779808044433594, + "simulationSeconds": 0.0063970088958740234, + "tick": 240 + }, + { + "renderSeconds": 0.0029059648513793945, + "simulationSeconds": 0.0062400102615356445, + "tick": 241 + }, + { + "renderSeconds": 0.0024570226669311523, + "simulationSeconds": 0.006829977035522461, + "tick": 242 + }, + { + "renderSeconds": 0.00229799747467041, + "simulationSeconds": 0.006443023681640625, + "tick": 243 + }, + { + "renderSeconds": 0.0024690628051757812, + "simulationSeconds": 0.006613016128540039, + "tick": 244 + }, + { + "renderSeconds": 0.002357006072998047, + "simulationSeconds": 0.0066100358963012695, + "tick": 245 + }, + { + "renderSeconds": 0.0026149749755859375, + "simulationSeconds": 0.012333989143371582, + "tick": 247 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.007084012031555176, + "tick": 248 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.006358981132507324, + "tick": 249 + }, + { + "renderSeconds": 0.0027060508728027344, + "simulationSeconds": 0.0065000057220458984, + "tick": 250 + }, + { + "renderSeconds": 0.0021820068359375, + "simulationSeconds": 0.006840944290161133, + "tick": 251 + }, + { + "renderSeconds": 0.0020829439163208008, + "simulationSeconds": 0.006806015968322754, + "tick": 252 + }, + { + "renderSeconds": 0.0025049448013305664, + "simulationSeconds": 0.012872934341430664, + "tick": 254 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.006631016731262207, + "tick": 255 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0, + "tick": 255 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.006729006767272949, + "tick": 256 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.00648808479309082, + "tick": 257 + }, + { + "renderSeconds": 0.002162933349609375, + "simulationSeconds": 0.006509065628051758, + "tick": 258 + }, + { + "renderSeconds": 0.0022469758987426758, + "simulationSeconds": 0.006610989570617676, + "tick": 259 + }, + { + "renderSeconds": 0.0022989511489868164, + "simulationSeconds": 0.006924986839294434, + "tick": 260 + }, + { + "renderSeconds": 0.0025669336318969727, + "simulationSeconds": 0.012634992599487305, + "tick": 262 + }, + { + "renderSeconds": 0.00297391414642334, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 262 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.007075071334838867, + "tick": 263 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.006242036819458008, + "tick": 264 + }, + { + "renderSeconds": 0.00247800350189209, + "simulationSeconds": 0.006474018096923828, + "tick": 265 + }, + { + "renderSeconds": 0.0025320053100585938, + "simulationSeconds": 0.006248950958251953, + "tick": 266 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0.006492972373962402, + "tick": 267 + }, + { + "renderSeconds": 0.00244903564453125, + "simulationSeconds": 0.012109041213989258, + "tick": 269 + }, + { + "renderSeconds": 0.0028810501098632812, + "simulationSeconds": 0.006090998649597168, + "tick": 270 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.039490208349889144, + "moveTicks": 240, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 462, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.2296081781387329, + "preparationSeconds": 0.4691230058670044, + "reducedMotion": false, + "renderSeconds": 0.9314336776733398, + "repetition": 20, + "scenePreparationSeconds": 0.15856397151947021, + "simulationSeconds": 1.7529274225234985, + "snapshotBuildCount": 264, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 39.85162501339801, + "postActionRecords": 262, + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.3588970899581909, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.001047968864440918, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.000964045524597168, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008829832077026367, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000886082649230957, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.004414081573486328, + "simulationSeconds": 0.005637049674987793, + "tick": 1 + }, + { + "renderSeconds": 0.003486037254333496, + "simulationSeconds": 0.006328940391540527, + "tick": 2 + }, + { + "renderSeconds": 0.003683924674987793, + "simulationSeconds": 0.006126999855041504, + "tick": 3 + }, + { + "renderSeconds": 0.0035420656204223633, + "simulationSeconds": 0.00917196273803711, + "tick": 4 + }, + { + "renderSeconds": 0.0037020444869995117, + "simulationSeconds": 0.012523055076599121, + "tick": 6 + }, + { + "renderSeconds": 0.004528999328613281, + "simulationSeconds": 0.010587930679321289, + "tick": 7 + }, + { + "renderSeconds": 0.0037909746170043945, + "simulationSeconds": 0.00752103328704834, + "tick": 8 + }, + { + "renderSeconds": 0.0034890174865722656, + "simulationSeconds": 0.006872057914733887, + "tick": 9 + }, + { + "renderSeconds": 0.003637075424194336, + "simulationSeconds": 0.006300926208496094, + "tick": 10 + }, + { + "renderSeconds": 0.0036200284957885742, + "simulationSeconds": 0.006018996238708496, + "tick": 11 + }, + { + "renderSeconds": 0.003515958786010742, + "simulationSeconds": 0.012830972671508789, + "tick": 13 + }, + { + "renderSeconds": 0.003956913948059082, + "simulationSeconds": 0.0066869258880615234, + "tick": 14 + }, + { + "renderSeconds": 0.003793001174926758, + "simulationSeconds": 0.0067719221115112305, + "tick": 15 + }, + { + "renderSeconds": 0.003921985626220703, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.003926992416381836, + "simulationSeconds": 0.0061730146408081055, + "tick": 16 + }, + { + "renderSeconds": 0.004388093948364258, + "simulationSeconds": 0.006667971611022949, + "tick": 17 + }, + { + "renderSeconds": 0.004431009292602539, + "simulationSeconds": 0.006618022918701172, + "tick": 18 + }, + { + "renderSeconds": 0.004140973091125488, + "simulationSeconds": 0.006206035614013672, + "tick": 19 + }, + { + "renderSeconds": 0.0035740137100219727, + "simulationSeconds": 0.01468193531036377, + "tick": 21 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.013396024703979492, + "tick": 23 + }, + { + "renderSeconds": 0.004089951515197754, + "simulationSeconds": 0.006466031074523926, + "tick": 24 + }, + { + "renderSeconds": 0.0036960840225219727, + "simulationSeconds": 0.006290912628173828, + "tick": 25 + }, + { + "renderSeconds": 0.0037589073181152344, + "simulationSeconds": 0.006246089935302734, + "tick": 26 + }, + { + "renderSeconds": 0.0036339759826660156, + "simulationSeconds": 0.012441039085388184, + "tick": 28 + }, + { + "renderSeconds": 0.003697037696838379, + "simulationSeconds": 0.012212991714477539, + "tick": 30 + }, + { + "renderSeconds": 0.003733038902282715, + "simulationSeconds": 0.012572050094604492, + "tick": 32 + }, + { + "renderSeconds": 0.003412008285522461, + "simulationSeconds": 0.00642704963684082, + "tick": 33 + }, + { + "renderSeconds": 0.003442049026489258, + "simulationSeconds": 0.006042003631591797, + "tick": 34 + }, + { + "renderSeconds": 0.003834962844848633, + "simulationSeconds": 0.013055086135864258, + "tick": 36 + }, + { + "renderSeconds": 0.0036820173263549805, + "simulationSeconds": 0.012785077095031738, + "tick": 38 + }, + { + "renderSeconds": 0.003997921943664551, + "simulationSeconds": 0, + "tick": 38 + }, + { + "renderSeconds": 0.0033539533615112305, + "simulationSeconds": 0.006547093391418457, + "tick": 39 + }, + { + "renderSeconds": 0.004176020622253418, + "simulationSeconds": 0.006162047386169434, + "tick": 40 + }, + { + "renderSeconds": 0.0033609867095947266, + "simulationSeconds": 0.006237983703613281, + "tick": 41 + }, + { + "renderSeconds": 0.0037549734115600586, + "simulationSeconds": 0.015506982803344727, + "tick": 43 + }, + { + "renderSeconds": 0.0037369728088378906, + "simulationSeconds": 0.019720077514648438, + "tick": 45 + }, + { + "renderSeconds": 0.003924965858459473, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.004214048385620117, + "simulationSeconds": 0.006107926368713379, + "tick": 46 + }, + { + "renderSeconds": 0.0038700103759765625, + "simulationSeconds": 0.0065920352935791016, + "tick": 47 + }, + { + "renderSeconds": 0.0035649538040161133, + "simulationSeconds": 0.006361961364746094, + "tick": 48 + }, + { + "renderSeconds": 0.004232048988342285, + "simulationSeconds": 0.006546974182128906, + "tick": 49 + }, + { + "renderSeconds": 0.0035659074783325195, + "simulationSeconds": 0.012747049331665039, + "tick": 51 + }, + { + "renderSeconds": 0.003877997398376465, + "simulationSeconds": 0.013323068618774414, + "tick": 53 + }, + { + "renderSeconds": 0.005062103271484375, + "simulationSeconds": 0.012798905372619629, + "tick": 55 + }, + { + "renderSeconds": 0.004472017288208008, + "simulationSeconds": 0.0063010454177856445, + "tick": 56 + }, + { + "renderSeconds": 0.0038040876388549805, + "simulationSeconds": 0.020565032958984375, + "tick": 58 + }, + { + "renderSeconds": 0.0037440061569213867, + "simulationSeconds": 0.013289928436279297, + "tick": 60 + }, + { + "renderSeconds": 0.003794074058532715, + "simulationSeconds": 0.006613969802856445, + "tick": 61 + }, + { + "renderSeconds": 0.0038210153579711914, + "simulationSeconds": 0.006273984909057617, + "tick": 62 + }, + { + "renderSeconds": 0.004091024398803711, + "simulationSeconds": 0.0064580440521240234, + "tick": 63 + }, + { + "renderSeconds": 0.004173994064331055, + "simulationSeconds": 0.00660395622253418, + "tick": 64 + }, + { + "renderSeconds": 0.0036859512329101562, + "simulationSeconds": 0.013051986694335938, + "tick": 66 + }, + { + "renderSeconds": 0.003854990005493164, + "simulationSeconds": 0.012459993362426758, + "tick": 68 + }, + { + "renderSeconds": 0.003988981246948242, + "simulationSeconds": 0.012475967407226562, + "tick": 70 + }, + { + "renderSeconds": 0.0038210153579711914, + "simulationSeconds": 0.0061789751052856445, + "tick": 71 + }, + { + "renderSeconds": 0.003630995750427246, + "simulationSeconds": 0.012402057647705078, + "tick": 73 + }, + { + "renderSeconds": 0.0041168928146362305, + "simulationSeconds": 0.006732940673828125, + "tick": 74 + }, + { + "renderSeconds": 0.0037850141525268555, + "simulationSeconds": 0.00645899772644043, + "tick": 75 + }, + { + "renderSeconds": 0.005021929740905762, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0038230419158935547, + "simulationSeconds": 0.008493900299072266, + "tick": 76 + }, + { + "renderSeconds": 0.003834962844848633, + "simulationSeconds": 0.01920902729034424, + "tick": 79 + }, + { + "renderSeconds": 0.004004001617431641, + "simulationSeconds": 0, + "tick": 79 + }, + { + "renderSeconds": 0.0036110877990722656, + "simulationSeconds": 0.01285099983215332, + "tick": 81 + }, + { + "renderSeconds": 0.0037690401077270508, + "simulationSeconds": 0.0071790218353271484, + "tick": 82 + }, + { + "renderSeconds": 0.003968000411987305, + "simulationSeconds": 0.006345033645629883, + "tick": 83 + }, + { + "renderSeconds": 0.003721952438354492, + "simulationSeconds": 0.006182074546813965, + "tick": 84 + }, + { + "renderSeconds": 0.0037990808486938477, + "simulationSeconds": 0.006605982780456543, + "tick": 85 + }, + { + "renderSeconds": 0.003804922103881836, + "simulationSeconds": 0.006212949752807617, + "tick": 86 + }, + { + "renderSeconds": 0.0037169456481933594, + "simulationSeconds": 0.01288902759552002, + "tick": 88 + }, + { + "renderSeconds": 0.0036039352416992188, + "simulationSeconds": 0.006125092506408691, + "tick": 89 + }, + { + "renderSeconds": 0.0038759708404541016, + "simulationSeconds": 0.0070879459381103516, + "tick": 90 + }, + { + "renderSeconds": 0.003924012184143066, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0039789676666259766, + "simulationSeconds": 0.00662994384765625, + "tick": 91 + }, + { + "renderSeconds": 0.0035109519958496094, + "simulationSeconds": 0.006011962890625, + "tick": 92 + }, + { + "renderSeconds": 0.003782987594604492, + "simulationSeconds": 0.006865978240966797, + "tick": 93 + }, + { + "renderSeconds": 0.0039359331130981445, + "simulationSeconds": 0.006728053092956543, + "tick": 94 + }, + { + "renderSeconds": 0.003709077835083008, + "simulationSeconds": 0.013203024864196777, + "tick": 96 + }, + { + "renderSeconds": 0.0037499666213989258, + "simulationSeconds": 0.012808084487915039, + "tick": 98 + }, + { + "renderSeconds": 0.003695964813232422, + "simulationSeconds": 0.013607978820800781, + "tick": 100 + }, + { + "renderSeconds": 0.003756999969482422, + "simulationSeconds": 0.00692296028137207, + "tick": 101 + }, + { + "renderSeconds": 0.0036520957946777344, + "simulationSeconds": 0.018913984298706055, + "tick": 103 + }, + { + "renderSeconds": 0.003665924072265625, + "simulationSeconds": 0.013453006744384766, + "tick": 105 + }, + { + "renderSeconds": 0.003983020782470703, + "simulationSeconds": 0.006145954132080078, + "tick": 106 + }, + { + "renderSeconds": 0.003836989402770996, + "simulationSeconds": 0.006635069847106934, + "tick": 107 + }, + { + "renderSeconds": 0.004206061363220215, + "simulationSeconds": 0.006569027900695801, + "tick": 108 + }, + { + "renderSeconds": 0.003715991973876953, + "simulationSeconds": 0.019186019897460938, + "tick": 111 + }, + { + "renderSeconds": 0.004008054733276367, + "simulationSeconds": 0.006324052810668945, + "tick": 112 + }, + { + "renderSeconds": 0.004660964012145996, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.004207015037536621, + "simulationSeconds": 0.0067729949951171875, + "tick": 113 + }, + { + "renderSeconds": 0.0036069154739379883, + "simulationSeconds": 0.00624394416809082, + "tick": 114 + }, + { + "renderSeconds": 0.006948947906494141, + "simulationSeconds": 0.006282925605773926, + "tick": 115 + }, + { + "renderSeconds": 0.004083037376403809, + "simulationSeconds": 0.006286978721618652, + "tick": 116 + }, + { + "renderSeconds": 0.003865957260131836, + "simulationSeconds": 0.012781023979187012, + "tick": 118 + }, + { + "renderSeconds": 0.0038570165634155273, + "simulationSeconds": 0.01221001148223877, + "tick": 120 + }, + { + "renderSeconds": 0.0040130615234375, + "simulationSeconds": 0.012307047843933105, + "tick": 122 + }, + { + "renderSeconds": 0.004060029983520508, + "simulationSeconds": 0.00589299201965332, + "tick": 123 + }, + { + "renderSeconds": 0.0037459135055541992, + "simulationSeconds": 0.006199002265930176, + "tick": 124 + }, + { + "renderSeconds": 0.0037529468536376953, + "simulationSeconds": 0.014997005462646484, + "tick": 126 + }, + { + "renderSeconds": 0.003908991813659668, + "simulationSeconds": 0.012316107749938965, + "tick": 128 + }, + { + "renderSeconds": 0.0037479400634765625, + "simulationSeconds": 0.012997984886169434, + "tick": 130 + }, + { + "renderSeconds": 0.003922939300537109, + "simulationSeconds": 0.006566047668457031, + "tick": 131 + }, + { + "renderSeconds": 0.0035600662231445312, + "simulationSeconds": 0.012479066848754883, + "tick": 133 + }, + { + "renderSeconds": 0.0038080215454101562, + "simulationSeconds": 0.014452934265136719, + "tick": 135 + }, + { + "renderSeconds": 0.00392603874206543, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.0038300752639770508, + "simulationSeconds": 0.006482958793640137, + "tick": 136 + }, + { + "renderSeconds": 0.0037589073181152344, + "simulationSeconds": 0.0068389177322387695, + "tick": 137 + }, + { + "renderSeconds": 0.003738999366760254, + "simulationSeconds": 0.007169008255004883, + "tick": 138 + }, + { + "renderSeconds": 0.003660917282104492, + "simulationSeconds": 0.005993008613586426, + "tick": 139 + }, + { + "renderSeconds": 0.0038580894470214844, + "simulationSeconds": 0.012238025665283203, + "tick": 141 + }, + { + "renderSeconds": 0.004078984260559082, + "simulationSeconds": 0.007469058036804199, + "tick": 142 + }, + { + "renderSeconds": 0.004083037376403809, + "simulationSeconds": 0.006042957305908203, + "tick": 143 + }, + { + "renderSeconds": 0.003428936004638672, + "simulationSeconds": 0.00660395622253418, + "tick": 144 + }, + { + "renderSeconds": 0.0037190914154052734, + "simulationSeconds": 0.006286978721618652, + "tick": 145 + }, + { + "renderSeconds": 0.0037310123443603516, + "simulationSeconds": 0.006528973579406738, + "tick": 146 + }, + { + "renderSeconds": 0.003690004348754883, + "simulationSeconds": 0.012758970260620117, + "tick": 148 + }, + { + "renderSeconds": 0.004073023796081543, + "simulationSeconds": 0.006507992744445801, + "tick": 149 + }, + { + "renderSeconds": 0.003371000289916992, + "simulationSeconds": 0.009801983833312988, + "tick": 150 + }, + { + "renderSeconds": 0.0037620067596435547, + "simulationSeconds": 0, + "tick": 150 + }, + { + "renderSeconds": 0.004065036773681641, + "simulationSeconds": 0.006030082702636719, + "tick": 151 + }, + { + "renderSeconds": 0.004446983337402344, + "simulationSeconds": 0.005849003791809082, + "tick": 152 + }, + { + "renderSeconds": 0.004150032997131348, + "simulationSeconds": 0.006494045257568359, + "tick": 153 + }, + { + "renderSeconds": 0.0037790536880493164, + "simulationSeconds": 0.0062400102615356445, + "tick": 154 + }, + { + "renderSeconds": 0.003672957420349121, + "simulationSeconds": 0.015336990356445312, + "tick": 156 + }, + { + "renderSeconds": 0.00380098819732666, + "simulationSeconds": 0.012048959732055664, + "tick": 158 + }, + { + "renderSeconds": 0.0037380456924438477, + "simulationSeconds": 0.01256096363067627, + "tick": 160 + }, + { + "renderSeconds": 0.0042389631271362305, + "simulationSeconds": 0.006927967071533203, + "tick": 161 + }, + { + "renderSeconds": 0.0036869049072265625, + "simulationSeconds": 0.013010978698730469, + "tick": 163 + }, + { + "renderSeconds": 0.003872990608215332, + "simulationSeconds": 0.01232302188873291, + "tick": 165 + }, + { + "renderSeconds": 0.003924965858459473, + "simulationSeconds": 0, + "tick": 165 + }, + { + "renderSeconds": 0.0038110017776489258, + "simulationSeconds": 0.007447004318237305, + "tick": 166 + }, + { + "renderSeconds": 0.003672003746032715, + "simulationSeconds": 0.006593942642211914, + "tick": 167 + }, + { + "renderSeconds": 0.0039980411529541016, + "simulationSeconds": 0.006374955177307129, + "tick": 168 + }, + { + "renderSeconds": 0.004081010818481445, + "simulationSeconds": 0.006356000900268555, + "tick": 169 + }, + { + "renderSeconds": 0.0037670135498046875, + "simulationSeconds": 0.013055920600891113, + "tick": 171 + }, + { + "renderSeconds": 0.003728032112121582, + "simulationSeconds": 0.011338949203491211, + "tick": 172 + }, + { + "renderSeconds": 0.0038219690322875977, + "simulationSeconds": 0.006564974784851074, + "tick": 173 + }, + { + "renderSeconds": 0.0038559436798095703, + "simulationSeconds": 0.009791016578674316, + "tick": 174 + }, + { + "renderSeconds": 0.003885984420776367, + "simulationSeconds": 0.00643002986907959, + "tick": 175 + }, + { + "renderSeconds": 0.0037720203399658203, + "simulationSeconds": 0.006255984306335449, + "tick": 176 + }, + { + "renderSeconds": 0.0038040876388549805, + "simulationSeconds": 0.012627005577087402, + "tick": 178 + }, + { + "renderSeconds": 0.003969073295593262, + "simulationSeconds": 0.0167539119720459, + "tick": 180 + }, + { + "renderSeconds": 0.004346966743469238, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.0038510560989379883, + "simulationSeconds": 0.006535053253173828, + "tick": 181 + }, + { + "renderSeconds": 0.004186034202575684, + "simulationSeconds": 0.006587982177734375, + "tick": 182 + }, + { + "renderSeconds": 0.004106998443603516, + "simulationSeconds": 0.006468057632446289, + "tick": 183 + }, + { + "renderSeconds": 0.003694891929626465, + "simulationSeconds": 0.006168961524963379, + "tick": 184 + }, + { + "renderSeconds": 0.003936052322387695, + "simulationSeconds": 0.01311802864074707, + "tick": 186 + }, + { + "renderSeconds": 0.003880023956298828, + "simulationSeconds": 0.006411910057067871, + "tick": 187 + }, + { + "renderSeconds": 0.004131913185119629, + "simulationSeconds": 0.00627899169921875, + "tick": 188 + }, + { + "renderSeconds": 0.0037169456481933594, + "simulationSeconds": 0.006260991096496582, + "tick": 189 + }, + { + "renderSeconds": 0.0037289857864379883, + "simulationSeconds": 0.0064460039138793945, + "tick": 190 + }, + { + "renderSeconds": 0.0037679672241210938, + "simulationSeconds": 0.0064809322357177734, + "tick": 191 + }, + { + "renderSeconds": 0.0038230419158935547, + "simulationSeconds": 0.012007951736450195, + "tick": 193 + }, + { + "renderSeconds": 0.004073977470397949, + "simulationSeconds": 0.006811022758483887, + "tick": 194 + }, + { + "renderSeconds": 0.003940105438232422, + "simulationSeconds": 0.006783962249755859, + "tick": 195 + }, + { + "renderSeconds": 0.0036259889602661133, + "simulationSeconds": 0.006898999214172363, + "tick": 196 + }, + { + "renderSeconds": 0.0034530162811279297, + "simulationSeconds": 0.006506919860839844, + "tick": 197 + }, + { + "renderSeconds": 0.0038279294967651367, + "simulationSeconds": 0.006237030029296875, + "tick": 198 + }, + { + "renderSeconds": 0.0035309791564941406, + "simulationSeconds": 0.007236957550048828, + "tick": 199 + }, + { + "renderSeconds": 0.0036389827728271484, + "simulationSeconds": 0.012753963470458984, + "tick": 201 + }, + { + "renderSeconds": 0.003661036491394043, + "simulationSeconds": 0.008275032043457031, + "tick": 202 + }, + { + "renderSeconds": 0.0037859678268432617, + "simulationSeconds": 9.5367431640625e-07, + "tick": 202 + }, + { + "renderSeconds": 0.003892064094543457, + "simulationSeconds": 0.006551027297973633, + "tick": 203 + }, + { + "renderSeconds": 0.0038869380950927734, + "simulationSeconds": 0.0063370466232299805, + "tick": 204 + }, + { + "renderSeconds": 0.003934025764465332, + "simulationSeconds": 0.005915045738220215, + "tick": 205 + }, + { + "renderSeconds": 0.0038930177688598633, + "simulationSeconds": 0.0063860416412353516, + "tick": 206 + }, + { + "renderSeconds": 0.0039359331130981445, + "simulationSeconds": 0.012392044067382812, + "tick": 208 + }, + { + "renderSeconds": 0.0036699771881103516, + "simulationSeconds": 0.00645601749420166, + "tick": 209 + }, + { + "renderSeconds": 0.0041120052337646484, + "simulationSeconds": 0.006390929222106934, + "tick": 210 + }, + { + "renderSeconds": 0.004086017608642578, + "simulationSeconds": 0, + "tick": 210 + }, + { + "renderSeconds": 0.0046759843826293945, + "simulationSeconds": 0.006674051284790039, + "tick": 211 + }, + { + "renderSeconds": 0.00362396240234375, + "simulationSeconds": 0.00642704963684082, + "tick": 212 + }, + { + "renderSeconds": 0.004125118255615234, + "simulationSeconds": 0.006520986557006836, + "tick": 213 + }, + { + "renderSeconds": 0.004016995429992676, + "simulationSeconds": 0.006289005279541016, + "tick": 214 + }, + { + "renderSeconds": 0.00394892692565918, + "simulationSeconds": 0.01290905475616455, + "tick": 216 + }, + { + "renderSeconds": 0.0036040544509887695, + "simulationSeconds": 0.022761940956115723, + "tick": 218 + }, + { + "renderSeconds": 0.0040520429611206055, + "simulationSeconds": 0.019416093826293945, + "tick": 221 + }, + { + "renderSeconds": 0.0040819644927978516, + "simulationSeconds": 0.024824023246765137, + "tick": 224 + }, + { + "renderSeconds": 0.0036840438842773438, + "simulationSeconds": 0.01962101459503174, + "tick": 227 + }, + { + "renderSeconds": 0.003683924674987793, + "simulationSeconds": 0.012685060501098633, + "tick": 229 + }, + { + "renderSeconds": 0.004091978073120117, + "simulationSeconds": 0.013252019882202148, + "tick": 231 + }, + { + "renderSeconds": 0.0044100284576416016, + "simulationSeconds": 0.0066519975662231445, + "tick": 232 + }, + { + "renderSeconds": 0.0036840438842773438, + "simulationSeconds": 0.00678408145904541, + "tick": 233 + }, + { + "renderSeconds": 0.0038579702377319336, + "simulationSeconds": 0.00643002986907959, + "tick": 234 + }, + { + "renderSeconds": 0.0035380125045776367, + "simulationSeconds": 0.006495952606201172, + "tick": 235 + }, + { + "renderSeconds": 0.0037870407104492188, + "simulationSeconds": 0.00672304630279541, + "tick": 236 + }, + { + "renderSeconds": 0.00371396541595459, + "simulationSeconds": 0.012623906135559082, + "tick": 238 + }, + { + "renderSeconds": 0.004077911376953125, + "simulationSeconds": 0.006255984306335449, + "tick": 239 + }, + { + "renderSeconds": 0.003702998161315918, + "simulationSeconds": 0.007341980934143066, + "tick": 240 + }, + { + "renderSeconds": 0.003943920135498047, + "simulationSeconds": 0, + "tick": 240 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0.005995988845825195, + "tick": 241 + }, + { + "renderSeconds": 0.004763960838317871, + "simulationSeconds": 0.005854964256286621, + "tick": 242 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006348967552185059, + "tick": 243 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006096005439758301, + "tick": 244 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.013215065002441406, + "tick": 246 + }, + { + "renderSeconds": 0.002805948257446289, + "simulationSeconds": 0.006866931915283203, + "tick": 247 + }, + { + "renderSeconds": 0.0025409460067749023, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.0023789405822753906, + "simulationSeconds": 0.007403016090393066, + "tick": 248 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006958961486816406, + "tick": 249 + }, + { + "renderSeconds": 0.0027219057083129883, + "simulationSeconds": 0.006242990493774414, + "tick": 250 + }, + { + "renderSeconds": 0.0029898881912231445, + "simulationSeconds": 0.006906986236572266, + "tick": 251 + }, + { + "renderSeconds": 0.0025260448455810547, + "simulationSeconds": 0.012910962104797363, + "tick": 253 + }, + { + "renderSeconds": 0.0041539669036865234, + "simulationSeconds": 0.006785988807678223, + "tick": 254 + }, + { + "renderSeconds": 0.0024880170822143555, + "simulationSeconds": 0.006968021392822266, + "tick": 255 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0, + "tick": 255 + }, + { + "renderSeconds": 0.0029550790786743164, + "simulationSeconds": 0.0072939395904541016, + "tick": 256 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0.007189035415649414, + "tick": 257 + }, + { + "renderSeconds": 0.0035240650177001953, + "simulationSeconds": 0.007466912269592285, + "tick": 258 + }, + { + "renderSeconds": 0.0032799243927001953, + "simulationSeconds": 0.0072280168533325195, + "tick": 259 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.014744043350219727, + "tick": 261 + }, + { + "renderSeconds": 0.003431081771850586, + "simulationSeconds": 0.007187962532043457, + "tick": 262 + }, + { + "renderSeconds": 0.002978086471557617, + "simulationSeconds": 0, + "tick": 262 + }, + { + "renderSeconds": 0.002914905548095703, + "simulationSeconds": 0.00840902328491211, + "tick": 263 + }, + { + "renderSeconds": 0.0030480623245239258, + "simulationSeconds": 0.007153987884521484, + "tick": 264 + }, + { + "renderSeconds": 0.0028760433197021484, + "simulationSeconds": 0.006070971488952637, + "tick": 265 + }, + { + "renderSeconds": 0.0025750398635864258, + "simulationSeconds": 0.0064580440521240234, + "tick": 266 + }, + { + "renderSeconds": 0.0025070905685424805, + "simulationSeconds": 0.013164997100830078, + "tick": 268 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006476044654846191, + "tick": 269 + }, + { + "renderSeconds": 0.00289309024810791, + "simulationSeconds": 0.006698966026306152, + "tick": 270 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.033250041684368625, + "moveTicks": 240, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 380, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.20842111110687256, + "preparationSeconds": 0.5995640754699707, + "reducedMotion": true, + "renderSeconds": 0.8280929327011108, + "repetition": 20, + "scenePreparationSeconds": 0.23417401313781738, + "simulationSeconds": 1.8207708597183228, + "snapshotBuildCount": 223, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 38.1563333212398, + "callbackMaxMS": 53.19495833828114, + "postActionRecords": 221, + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.21290433406829834, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0009909868240356445, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007010698318481445, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007510185241699219, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007770061492919922, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003371000289916992, + "simulationSeconds": 0.005771040916442871, + "tick": 1 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.011713027954101562, + "tick": 3 + }, + { + "renderSeconds": 0.003569960594177246, + "simulationSeconds": 0.006579995155334473, + "tick": 4 + }, + { + "renderSeconds": 0.004000067710876465, + "simulationSeconds": 0.006644010543823242, + "tick": 5 + }, + { + "renderSeconds": 0.0034350156784057617, + "simulationSeconds": 0.006388068199157715, + "tick": 6 + }, + { + "renderSeconds": 0.004030942916870117, + "simulationSeconds": 0.00657498836517334, + "tick": 7 + }, + { + "renderSeconds": 0.0037250518798828125, + "simulationSeconds": 9.5367431640625e-07, + "tick": 7 + }, + { + "renderSeconds": 0.004176020622253418, + "simulationSeconds": 0.0063430070877075195, + "tick": 8 + }, + { + "renderSeconds": 0.004503011703491211, + "simulationSeconds": 0.00684201717376709, + "tick": 9 + }, + { + "renderSeconds": 0.003659963607788086, + "simulationSeconds": 0.021136999130249023, + "tick": 12 + }, + { + "renderSeconds": 0.003249049186706543, + "simulationSeconds": 0.012326955795288086, + "tick": 14 + }, + { + "renderSeconds": 0.0034949779510498047, + "simulationSeconds": 0.01212608814239502, + "tick": 16 + }, + { + "renderSeconds": 0.0036230087280273438, + "simulationSeconds": 0.013167023658752441, + "tick": 18 + }, + { + "renderSeconds": 0.003997087478637695, + "simulationSeconds": 0.006956934928894043, + "tick": 19 + }, + { + "renderSeconds": 0.0039010047912597656, + "simulationSeconds": 0.006586909294128418, + "tick": 20 + }, + { + "renderSeconds": 0.0038319826126098633, + "simulationSeconds": 0.006206035614013672, + "tick": 21 + }, + { + "renderSeconds": 0.0034400224685668945, + "simulationSeconds": 0.006886005401611328, + "tick": 22 + }, + { + "renderSeconds": 0.004518985748291016, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.004601955413818359, + "simulationSeconds": 0.006448030471801758, + "tick": 23 + }, + { + "renderSeconds": 0.0040329694747924805, + "simulationSeconds": 0.006812930107116699, + "tick": 24 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.013242959976196289, + "tick": 26 + }, + { + "renderSeconds": 0.004139065742492676, + "simulationSeconds": 0.0063970088958740234, + "tick": 27 + }, + { + "renderSeconds": 0.003654003143310547, + "simulationSeconds": 0.0065479278564453125, + "tick": 28 + }, + { + "renderSeconds": 0.003831028938293457, + "simulationSeconds": 0.006407022476196289, + "tick": 29 + }, + { + "renderSeconds": 0.004378080368041992, + "simulationSeconds": 0.0064089298248291016, + "tick": 30 + }, + { + "renderSeconds": 0.003980040550231934, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.00365293025970459, + "simulationSeconds": 0.006164908409118652, + "tick": 31 + }, + { + "renderSeconds": 0.0035859346389770508, + "simulationSeconds": 0.012682080268859863, + "tick": 33 + }, + { + "renderSeconds": 0.0034030675888061523, + "simulationSeconds": 0.006634950637817383, + "tick": 34 + }, + { + "renderSeconds": 0.003605961799621582, + "simulationSeconds": 0.006417036056518555, + "tick": 35 + }, + { + "renderSeconds": 0.003818988800048828, + "simulationSeconds": 0.006219029426574707, + "tick": 36 + }, + { + "renderSeconds": 0.0033599138259887695, + "simulationSeconds": 0.00630497932434082, + "tick": 37 + }, + { + "renderSeconds": 0.0036330223083496094, + "simulationSeconds": 9.5367431640625e-07, + "tick": 37 + }, + { + "renderSeconds": 0.003340005874633789, + "simulationSeconds": 0.006168961524963379, + "tick": 38 + }, + { + "renderSeconds": 0.0034409761428833008, + "simulationSeconds": 0.005963921546936035, + "tick": 39 + }, + { + "renderSeconds": 0.0033719539642333984, + "simulationSeconds": 0.01209104061126709, + "tick": 41 + }, + { + "renderSeconds": 0.0033049583435058594, + "simulationSeconds": 0.006147027015686035, + "tick": 42 + }, + { + "renderSeconds": 0.0039070844650268555, + "simulationSeconds": 0.00687098503112793, + "tick": 43 + }, + { + "renderSeconds": 0.00345611572265625, + "simulationSeconds": 0.006201028823852539, + "tick": 44 + }, + { + "renderSeconds": 0.003551959991455078, + "simulationSeconds": 0.00651705265045166, + "tick": 45 + }, + { + "renderSeconds": 0.003596067428588867, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0033919811248779297, + "simulationSeconds": 0.006477952003479004, + "tick": 46 + }, + { + "renderSeconds": 0.0032619237899780273, + "simulationSeconds": 0.012092947959899902, + "tick": 48 + }, + { + "renderSeconds": 0.0035889148712158203, + "simulationSeconds": 0.006801009178161621, + "tick": 49 + }, + { + "renderSeconds": 0.0034399032592773438, + "simulationSeconds": 0.006268024444580078, + "tick": 50 + }, + { + "renderSeconds": 0.0033990144729614258, + "simulationSeconds": 0.006445050239562988, + "tick": 51 + }, + { + "renderSeconds": 0.003949999809265137, + "simulationSeconds": 0.007357954978942871, + "tick": 52 + }, + { + "renderSeconds": 0.004115939140319824, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 52 + }, + { + "renderSeconds": 0.003841996192932129, + "simulationSeconds": 0.007252931594848633, + "tick": 53 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0.005928993225097656, + "tick": 54 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 0.011830925941467285, + "tick": 56 + }, + { + "renderSeconds": 0.0036889314651489258, + "simulationSeconds": 0.00619196891784668, + "tick": 57 + }, + { + "renderSeconds": 0.003435969352722168, + "simulationSeconds": 0.006965041160583496, + "tick": 58 + }, + { + "renderSeconds": 0.003527045249938965, + "simulationSeconds": 0.006741046905517578, + "tick": 59 + }, + { + "renderSeconds": 0.004181027412414551, + "simulationSeconds": 0.007142066955566406, + "tick": 60 + }, + { + "renderSeconds": 0.003957986831665039, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.003834962844848633, + "simulationSeconds": 0.007212042808532715, + "tick": 61 + }, + { + "renderSeconds": 0.003980040550231934, + "simulationSeconds": 0.014101982116699219, + "tick": 63 + }, + { + "renderSeconds": 0.0038050413131713867, + "simulationSeconds": 0.0070760250091552734, + "tick": 64 + }, + { + "renderSeconds": 0.0038399696350097656, + "simulationSeconds": 0.007423996925354004, + "tick": 65 + }, + { + "renderSeconds": 0.004011988639831543, + "simulationSeconds": 0.0068149566650390625, + "tick": 66 + }, + { + "renderSeconds": 0.00394892692565918, + "simulationSeconds": 0.0071370601654052734, + "tick": 67 + }, + { + "renderSeconds": 0.004316926002502441, + "simulationSeconds": 0.007040977478027344, + "tick": 68 + }, + { + "renderSeconds": 0.003672003746032715, + "simulationSeconds": 0.006453990936279297, + "tick": 69 + }, + { + "renderSeconds": 0.0038928985595703125, + "simulationSeconds": 0.013842105865478516, + "tick": 71 + }, + { + "renderSeconds": 0.003238081932067871, + "simulationSeconds": 0.005897045135498047, + "tick": 72 + }, + { + "renderSeconds": 0.0041179656982421875, + "simulationSeconds": 0.008628010749816895, + "tick": 73 + }, + { + "renderSeconds": 0.004059910774230957, + "simulationSeconds": 0.007121920585632324, + "tick": 74 + }, + { + "renderSeconds": 0.00407099723815918, + "simulationSeconds": 0.006986021995544434, + "tick": 75 + }, + { + "renderSeconds": 0.004199028015136719, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.003927946090698242, + "simulationSeconds": 0.008026957511901855, + "tick": 76 + }, + { + "renderSeconds": 0.0036519765853881836, + "simulationSeconds": 0.012603044509887695, + "tick": 78 + }, + { + "renderSeconds": 0.0035179853439331055, + "simulationSeconds": 0.012495040893554688, + "tick": 80 + }, + { + "renderSeconds": 0.0035359859466552734, + "simulationSeconds": 0.006803035736083984, + "tick": 81 + }, + { + "renderSeconds": 0.003551006317138672, + "simulationSeconds": 0.00660395622253418, + "tick": 82 + }, + { + "renderSeconds": 0.003955960273742676, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.006451010704040527, + "tick": 83 + }, + { + "renderSeconds": 0.003654003143310547, + "simulationSeconds": 0.006952047348022461, + "tick": 84 + }, + { + "renderSeconds": 0.0035610198974609375, + "simulationSeconds": 0.0125199556350708, + "tick": 86 + }, + { + "renderSeconds": 0.003728032112121582, + "simulationSeconds": 0.006168961524963379, + "tick": 87 + }, + { + "renderSeconds": 0.003800034523010254, + "simulationSeconds": 0.006985068321228027, + "tick": 88 + }, + { + "renderSeconds": 0.003765106201171875, + "simulationSeconds": 0.007023930549621582, + "tick": 89 + }, + { + "renderSeconds": 0.0035200119018554688, + "simulationSeconds": 0.006411910057067871, + "tick": 90 + }, + { + "renderSeconds": 0.0038080215454101562, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0028399229049682617, + "simulationSeconds": 0.0063669681549072266, + "tick": 91 + }, + { + "renderSeconds": 0.0034259557723999023, + "simulationSeconds": 0.011907100677490234, + "tick": 93 + }, + { + "renderSeconds": 0.0035610198974609375, + "simulationSeconds": 0.00686800479888916, + "tick": 94 + }, + { + "renderSeconds": 0.0033659934997558594, + "simulationSeconds": 0.006800055503845215, + "tick": 95 + }, + { + "renderSeconds": 0.004191040992736816, + "simulationSeconds": 0.006533026695251465, + "tick": 96 + }, + { + "renderSeconds": 0.0037689208984375, + "simulationSeconds": 0.007060050964355469, + "tick": 97 + }, + { + "renderSeconds": 0.003962039947509766, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.00687098503112793, + "tick": 98 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.006740093231201172, + "tick": 99 + }, + { + "renderSeconds": 0.003610968589782715, + "simulationSeconds": 0.012508988380432129, + "tick": 101 + }, + { + "renderSeconds": 0.0038919448852539062, + "simulationSeconds": 0.006589055061340332, + "tick": 102 + }, + { + "renderSeconds": 0.0036590099334716797, + "simulationSeconds": 0.007025003433227539, + "tick": 103 + }, + { + "renderSeconds": 0.003818035125732422, + "simulationSeconds": 0.006487011909484863, + "tick": 104 + }, + { + "renderSeconds": 0.003493070602416992, + "simulationSeconds": 0.006340980529785156, + "tick": 105 + }, + { + "renderSeconds": 0.0035810470581054688, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002847909927368164, + "simulationSeconds": 0.006087064743041992, + "tick": 106 + }, + { + "renderSeconds": 0.0035170316696166992, + "simulationSeconds": 0.012040972709655762, + "tick": 108 + }, + { + "renderSeconds": 0.003860950469970703, + "simulationSeconds": 0.006479978561401367, + "tick": 109 + }, + { + "renderSeconds": 0.0034869909286499023, + "simulationSeconds": 0.006489992141723633, + "tick": 110 + }, + { + "renderSeconds": 0.0036960840225219727, + "simulationSeconds": 0.006465911865234375, + "tick": 111 + }, + { + "renderSeconds": 0.0037059783935546875, + "simulationSeconds": 0.006011009216308594, + "tick": 112 + }, + { + "renderSeconds": 0.004019975662231445, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.003516077995300293, + "simulationSeconds": 0.006292939186096191, + "tick": 113 + }, + { + "renderSeconds": 0.003133058547973633, + "simulationSeconds": 0.0062988996505737305, + "tick": 114 + }, + { + "renderSeconds": 0.0035109519958496094, + "simulationSeconds": 0.012618064880371094, + "tick": 116 + }, + { + "renderSeconds": 0.004004001617431641, + "simulationSeconds": 0.006100058555603027, + "tick": 117 + }, + { + "renderSeconds": 0.0040749311447143555, + "simulationSeconds": 0.006712913513183594, + "tick": 118 + }, + { + "renderSeconds": 0.004048943519592285, + "simulationSeconds": 0.0063790082931518555, + "tick": 119 + }, + { + "renderSeconds": 0.00388491153717041, + "simulationSeconds": 0.006242990493774414, + "tick": 120 + }, + { + "renderSeconds": 0.003795027732849121, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0032919645309448242, + "simulationSeconds": 0.006253957748413086, + "tick": 121 + }, + { + "renderSeconds": 0.0025180578231811523, + "simulationSeconds": 0.012166023254394531, + "tick": 123 + }, + { + "renderSeconds": 0.0024698972702026367, + "simulationSeconds": 0.00630795955657959, + "tick": 124 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.00618290901184082, + "tick": 125 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.007858037948608398, + "tick": 126 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.006554961204528809, + "tick": 127 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002535104751586914, + "simulationSeconds": 0.0063059329986572266, + "tick": 128 + }, + { + "renderSeconds": 0.0026799440383911133, + "simulationSeconds": 0.0060759782791137695, + "tick": 129 + }, + { + "renderSeconds": 0.0025560855865478516, + "simulationSeconds": 0.0130079984664917, + "tick": 131 + }, + { + "renderSeconds": 0.0025800466537475586, + "simulationSeconds": 0.006150007247924805, + "tick": 132 + }, + { + "renderSeconds": 0.0026520490646362305, + "simulationSeconds": 0.0067130327224731445, + "tick": 133 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.006392955780029297, + "tick": 134 + }, + { + "renderSeconds": 0.002630949020385742, + "simulationSeconds": 0.00675809383392334, + "tick": 135 + }, + { + "renderSeconds": 0.0031300783157348633, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006557941436767578, + "tick": 136 + }, + { + "renderSeconds": 0.0028629302978515625, + "simulationSeconds": 0.012289047241210938, + "tick": 138 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006358981132507324, + "tick": 139 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.006317019462585449, + "tick": 140 + }, + { + "renderSeconds": 0.0026799440383911133, + "simulationSeconds": 0.006296038627624512, + "tick": 141 + }, + { + "renderSeconds": 0.0028700828552246094, + "simulationSeconds": 0.0062400102615356445, + "tick": 142 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 142 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.0065010786056518555, + "tick": 143 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.006065964698791504, + "tick": 144 + }, + { + "renderSeconds": 0.002514958381652832, + "simulationSeconds": 0.012537956237792969, + "tick": 146 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006764888763427734, + "tick": 147 + }, + { + "renderSeconds": 0.0024950504302978516, + "simulationSeconds": 0.005908966064453125, + "tick": 148 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.006363034248352051, + "tick": 149 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.006118059158325195, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.0421727083157748, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 228, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.12590491771697998, + "preparationSeconds": 0.4764059782028198, + "reducedMotion": false, + "renderSeconds": 0.502680778503418, + "repetition": 20, + "scenePreparationSeconds": 0.1598440408706665, + "simulationSeconds": 0.9745438098907471, + "snapshotBuildCount": 147, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 39.89887499483302, + "postActionRecords": 145, + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.18212735652923584, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.001181960105895996, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009959936141967773, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008200407028198242, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011169910430908203, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.004521012306213379, + "simulationSeconds": 0.005843997001647949, + "tick": 1 + }, + { + "renderSeconds": 0.00367891788482666, + "simulationSeconds": 0.006111025810241699, + "tick": 2 + }, + { + "renderSeconds": 0.0037599802017211914, + "simulationSeconds": 0.006327033042907715, + "tick": 3 + }, + { + "renderSeconds": 0.003744959831237793, + "simulationSeconds": 0.006496071815490723, + "tick": 4 + }, + { + "renderSeconds": 0.0038149356842041016, + "simulationSeconds": 0.00624394416809082, + "tick": 5 + }, + { + "renderSeconds": 0.003793001174926758, + "simulationSeconds": 0.012724995613098145, + "tick": 7 + }, + { + "renderSeconds": 0.004557013511657715, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 7 + }, + { + "renderSeconds": 0.003950953483581543, + "simulationSeconds": 0.006319999694824219, + "tick": 8 + }, + { + "renderSeconds": 0.00330507755279541, + "simulationSeconds": 0.006515026092529297, + "tick": 9 + }, + { + "renderSeconds": 0.0036450624465942383, + "simulationSeconds": 0.006003022193908691, + "tick": 10 + }, + { + "renderSeconds": 0.0034570693969726562, + "simulationSeconds": 0.0059490203857421875, + "tick": 11 + }, + { + "renderSeconds": 0.00345611572265625, + "simulationSeconds": 0.006053924560546875, + "tick": 12 + }, + { + "renderSeconds": 0.0037550926208496094, + "simulationSeconds": 0.01237499713897705, + "tick": 14 + }, + { + "renderSeconds": 0.003371000289916992, + "simulationSeconds": 0.012813091278076172, + "tick": 16 + }, + { + "renderSeconds": 0.00347900390625, + "simulationSeconds": 0.012367963790893555, + "tick": 18 + }, + { + "renderSeconds": 0.0036939382553100586, + "simulationSeconds": 0.006846904754638672, + "tick": 19 + }, + { + "renderSeconds": 0.003787994384765625, + "simulationSeconds": 0.00636601448059082, + "tick": 20 + }, + { + "renderSeconds": 0.0038950443267822266, + "simulationSeconds": 0.01312100887298584, + "tick": 22 + }, + { + "renderSeconds": 0.003695964813232422, + "simulationSeconds": 0.014101982116699219, + "tick": 24 + }, + { + "renderSeconds": 0.004037022590637207, + "simulationSeconds": 0.006248950958251953, + "tick": 25 + }, + { + "renderSeconds": 0.003965973854064941, + "simulationSeconds": 0.006414055824279785, + "tick": 26 + }, + { + "renderSeconds": 0.0063179731369018555, + "simulationSeconds": 0.006242990493774414, + "tick": 27 + }, + { + "renderSeconds": 0.003972053527832031, + "simulationSeconds": 0.014606952667236328, + "tick": 29 + }, + { + "renderSeconds": 0.003867030143737793, + "simulationSeconds": 0.012543082237243652, + "tick": 31 + }, + { + "renderSeconds": 0.00368499755859375, + "simulationSeconds": 0.006085038185119629, + "tick": 32 + }, + { + "renderSeconds": 0.0038760900497436523, + "simulationSeconds": 0.0062448978424072266, + "tick": 33 + }, + { + "renderSeconds": 0.0040940046310424805, + "simulationSeconds": 0.0065250396728515625, + "tick": 34 + }, + { + "renderSeconds": 0.003674030303955078, + "simulationSeconds": 0.006669044494628906, + "tick": 35 + }, + { + "renderSeconds": 0.00362396240234375, + "simulationSeconds": 0.013307929039001465, + "tick": 37 + }, + { + "renderSeconds": 0.00373995304107666, + "simulationSeconds": 0.012428998947143555, + "tick": 39 + }, + { + "renderSeconds": 0.0039670467376708984, + "simulationSeconds": 0.01262199878692627, + "tick": 41 + }, + { + "renderSeconds": 0.004166007041931152, + "simulationSeconds": 0.006076931953430176, + "tick": 42 + }, + { + "renderSeconds": 0.003892064094543457, + "simulationSeconds": 0.012878060340881348, + "tick": 44 + }, + { + "renderSeconds": 0.0036510229110717773, + "simulationSeconds": 0.008003950119018555, + "tick": 45 + }, + { + "renderSeconds": 0.003865957260131836, + "simulationSeconds": 0.008836984634399414, + "tick": 46 + }, + { + "renderSeconds": 0.0033919811248779297, + "simulationSeconds": 0.0164870023727417, + "tick": 47 + }, + { + "renderSeconds": 0.0037529468536376953, + "simulationSeconds": 0.018998026847839355, + "tick": 50 + }, + { + "renderSeconds": 0.003515005111694336, + "simulationSeconds": 0, + "tick": 50 + }, + { + "renderSeconds": 0.003710031509399414, + "simulationSeconds": 0.012946009635925293, + "tick": 52 + }, + { + "renderSeconds": 0.004073023796081543, + "simulationSeconds": 0.006204962730407715, + "tick": 53 + }, + { + "renderSeconds": 0.0035990476608276367, + "simulationSeconds": 0.006124973297119141, + "tick": 54 + }, + { + "renderSeconds": 0.003906965255737305, + "simulationSeconds": 0.006723999977111816, + "tick": 55 + }, + { + "renderSeconds": 0.003313899040222168, + "simulationSeconds": 0.006579041481018066, + "tick": 56 + }, + { + "renderSeconds": 0.003825068473815918, + "simulationSeconds": 0.009324073791503906, + "tick": 57 + }, + { + "renderSeconds": 0.003587007522583008, + "simulationSeconds": 0.012310028076171875, + "tick": 59 + }, + { + "renderSeconds": 0.0035920143127441406, + "simulationSeconds": 0.008891940116882324, + "tick": 60 + }, + { + "renderSeconds": 0.003775954246520996, + "simulationSeconds": 0.015920042991638184, + "tick": 62 + }, + { + "renderSeconds": 0.004079937934875488, + "simulationSeconds": 0.013131022453308105, + "tick": 64 + }, + { + "renderSeconds": 0.004187941551208496, + "simulationSeconds": 0.006295919418334961, + "tick": 65 + }, + { + "renderSeconds": 0.003618001937866211, + "simulationSeconds": 0.012927055358886719, + "tick": 67 + }, + { + "renderSeconds": 0.0036410093307495117, + "simulationSeconds": 0.012334942817687988, + "tick": 69 + }, + { + "renderSeconds": 0.003970980644226074, + "simulationSeconds": 0.012547969818115234, + "tick": 71 + }, + { + "renderSeconds": 0.003043055534362793, + "simulationSeconds": 0.007967948913574219, + "tick": 72 + }, + { + "renderSeconds": 0.0037099123001098633, + "simulationSeconds": 0.012855052947998047, + "tick": 74 + }, + { + "renderSeconds": 0.0036470890045166016, + "simulationSeconds": 0.012195944786071777, + "tick": 76 + }, + { + "renderSeconds": 0.003672957420349121, + "simulationSeconds": 0.01281595230102539, + "tick": 78 + }, + { + "renderSeconds": 0.0037039518356323242, + "simulationSeconds": 0.015781044960021973, + "tick": 79 + }, + { + "renderSeconds": 0.0037499666213989258, + "simulationSeconds": 0.018226027488708496, + "tick": 82 + }, + { + "renderSeconds": 0.003859996795654297, + "simulationSeconds": 0.012394070625305176, + "tick": 84 + }, + { + "renderSeconds": 0.003461003303527832, + "simulationSeconds": 0.016435980796813965, + "tick": 85 + }, + { + "renderSeconds": 0.003551006317138672, + "simulationSeconds": 0.019906997680664062, + "tick": 88 + }, + { + "renderSeconds": 0.0038439035415649414, + "simulationSeconds": 0.013079047203063965, + "tick": 90 + }, + { + "renderSeconds": 0.004353046417236328, + "simulationSeconds": 0.006777048110961914, + "tick": 91 + }, + { + "renderSeconds": 0.003929018974304199, + "simulationSeconds": 0.006577014923095703, + "tick": 92 + }, + { + "renderSeconds": 0.004260897636413574, + "simulationSeconds": 0.006389021873474121, + "tick": 93 + }, + { + "renderSeconds": 0.004152059555053711, + "simulationSeconds": 0.006199002265930176, + "tick": 94 + }, + { + "renderSeconds": 0.004416108131408691, + "simulationSeconds": 0.006526947021484375, + "tick": 95 + }, + { + "renderSeconds": 0.00374603271484375, + "simulationSeconds": 0.013754010200500488, + "tick": 97 + }, + { + "renderSeconds": 0.0036619901657104492, + "simulationSeconds": 0.012465953826904297, + "tick": 99 + }, + { + "renderSeconds": 0.0035430192947387695, + "simulationSeconds": 0.006753087043762207, + "tick": 100 + }, + { + "renderSeconds": 0.003343939781188965, + "simulationSeconds": 0.006776094436645508, + "tick": 101 + }, + { + "renderSeconds": 0.0037529468536376953, + "simulationSeconds": 0.006356000900268555, + "tick": 102 + }, + { + "renderSeconds": 0.0038090944290161133, + "simulationSeconds": 0.012701988220214844, + "tick": 104 + }, + { + "renderSeconds": 0.0035669803619384766, + "simulationSeconds": 0.006165981292724609, + "tick": 105 + }, + { + "renderSeconds": 0.0038160085678100586, + "simulationSeconds": 0.006358981132507324, + "tick": 106 + }, + { + "renderSeconds": 0.0031659603118896484, + "simulationSeconds": 0.006826996803283691, + "tick": 107 + }, + { + "renderSeconds": 0.003765106201171875, + "simulationSeconds": 0.00651395320892334, + "tick": 108 + }, + { + "renderSeconds": 0.0034379959106445312, + "simulationSeconds": 0.006385922431945801, + "tick": 109 + }, + { + "renderSeconds": 0.0034519433975219727, + "simulationSeconds": 0.006139039993286133, + "tick": 110 + }, + { + "renderSeconds": 0.00371396541595459, + "simulationSeconds": 0.012508034706115723, + "tick": 112 + }, + { + "renderSeconds": 0.0035479068756103516, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.004117012023925781, + "simulationSeconds": 0.006544947624206543, + "tick": 113 + }, + { + "renderSeconds": 0.003677964210510254, + "simulationSeconds": 0.006661057472229004, + "tick": 114 + }, + { + "renderSeconds": 0.004165053367614746, + "simulationSeconds": 0.006306052207946777, + "tick": 115 + }, + { + "renderSeconds": 0.004052996635437012, + "simulationSeconds": 0.007639050483703613, + "tick": 116 + }, + { + "renderSeconds": 0.0037109851837158203, + "simulationSeconds": 0.008027076721191406, + "tick": 117 + }, + { + "renderSeconds": 0.0040819644927978516, + "simulationSeconds": 0.012855052947998047, + "tick": 119 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.013599991798400879, + "tick": 121 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 9.5367431640625e-07, + "tick": 121 + }, + { + "renderSeconds": 0.00256192684173584, + "simulationSeconds": 0.00645899772644043, + "tick": 122 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.00631403923034668, + "tick": 123 + }, + { + "renderSeconds": 0.0028519630432128906, + "simulationSeconds": 0.006757020950317383, + "tick": 124 + }, + { + "renderSeconds": 0.002744913101196289, + "simulationSeconds": 0.006451964378356934, + "tick": 125 + }, + { + "renderSeconds": 0.002569913864135742, + "simulationSeconds": 0.013487100601196289, + "tick": 127 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 127 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.0067179203033447266, + "tick": 128 + }, + { + "renderSeconds": 0.0024650096893310547, + "simulationSeconds": 0.006332993507385254, + "tick": 129 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.006938934326171875, + "tick": 130 + }, + { + "renderSeconds": 0.0025719404220581055, + "simulationSeconds": 0.006758928298950195, + "tick": 131 + }, + { + "renderSeconds": 0.0026439428329467773, + "simulationSeconds": 0.006545066833496094, + "tick": 132 + }, + { + "renderSeconds": 0.0025849342346191406, + "simulationSeconds": 0.01226198673248291, + "tick": 134 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.006141066551208496, + "tick": 135 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0034639835357666016, + "simulationSeconds": 0.0067369937896728516, + "tick": 136 + }, + { + "renderSeconds": 0.0026110410690307617, + "simulationSeconds": 0.0061789751052856445, + "tick": 137 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006776094436645508, + "tick": 138 + }, + { + "renderSeconds": 0.0025229454040527344, + "simulationSeconds": 0.0061119794845581055, + "tick": 139 + }, + { + "renderSeconds": 0.0024590492248535156, + "simulationSeconds": 0.006394028663635254, + "tick": 140 + }, + { + "renderSeconds": 0.0026519298553466797, + "simulationSeconds": 0.012257933616638184, + "tick": 142 + }, + { + "renderSeconds": 0.002919912338256836, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 142 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.00787198543548584, + "tick": 143 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.006194949150085449, + "tick": 144 + }, + { + "renderSeconds": 0.002480030059814453, + "simulationSeconds": 0.006004929542541504, + "tick": 145 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.006454944610595703, + "tick": 146 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.0062819719314575195, + "tick": 147 + }, + { + "renderSeconds": 0.0025140047073364258, + "simulationSeconds": 0.012462973594665527, + "tick": 149 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.006414055824279785, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.0500000000174623, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 174, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.11685466766357422, + "preparationSeconds": 0.612605094909668, + "reducedMotion": true, + "renderSeconds": 0.4158172607421875, + "repetition": 20, + "scenePreparationSeconds": 0.22108900547027588, + "simulationSeconds": 1.0088412761688232, + "snapshotBuildCount": 121, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 40.088916663080454, + "callbackMaxMS": 45.71233331807889, + "postActionRecords": 119, + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.7978321313858032, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0008980035781860352, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007619857788085938, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007460117340087891, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007419586181640625, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003217935562133789, + "simulationSeconds": 0.0056999921798706055, + "tick": 1 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.006358981132507324, + "tick": 2 + }, + { + "renderSeconds": 0.003461003303527832, + "simulationSeconds": 0.006880998611450195, + "tick": 3 + }, + { + "renderSeconds": 0.0034629106521606445, + "simulationSeconds": 0.012385010719299316, + "tick": 5 + }, + { + "renderSeconds": 0.003589034080505371, + "simulationSeconds": 0.006257057189941406, + "tick": 6 + }, + { + "renderSeconds": 0.0034619569778442383, + "simulationSeconds": 0.007461071014404297, + "tick": 7 + }, + { + "renderSeconds": 0.0037850141525268555, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0037180185317993164, + "simulationSeconds": 0.006374955177307129, + "tick": 8 + }, + { + "renderSeconds": 0.0037719011306762695, + "simulationSeconds": 0.006229996681213379, + "tick": 9 + }, + { + "renderSeconds": 0.004251956939697266, + "simulationSeconds": 0.006212949752807617, + "tick": 10 + }, + { + "renderSeconds": 0.003695964813232422, + "simulationSeconds": 0.007355093955993652, + "tick": 11 + }, + { + "renderSeconds": 0.003374934196472168, + "simulationSeconds": 0.01377105712890625, + "tick": 13 + }, + { + "renderSeconds": 0.0036960840225219727, + "simulationSeconds": 0.006404995918273926, + "tick": 14 + }, + { + "renderSeconds": 0.004082083702087402, + "simulationSeconds": 0.007084012031555176, + "tick": 15 + }, + { + "renderSeconds": 0.003751993179321289, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0038909912109375, + "simulationSeconds": 0.006716012954711914, + "tick": 16 + }, + { + "renderSeconds": 0.0044939517974853516, + "simulationSeconds": 0.00671994686126709, + "tick": 17 + }, + { + "renderSeconds": 0.003690958023071289, + "simulationSeconds": 0.006154060363769531, + "tick": 18 + }, + { + "renderSeconds": 0.0037130117416381836, + "simulationSeconds": 0.012830972671508789, + "tick": 20 + }, + { + "renderSeconds": 0.003962993621826172, + "simulationSeconds": 0.006914973258972168, + "tick": 21 + }, + { + "renderSeconds": 0.004284024238586426, + "simulationSeconds": 0.007367968559265137, + "tick": 22 + }, + { + "renderSeconds": 0.0044689178466796875, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.004407048225402832, + "simulationSeconds": 0.008288025856018066, + "tick": 23 + }, + { + "renderSeconds": 0.0035630464553833008, + "simulationSeconds": 0.0060160160064697266, + "tick": 24 + }, + { + "renderSeconds": 0.004171013832092285, + "simulationSeconds": 0.006654977798461914, + "tick": 25 + }, + { + "renderSeconds": 0.00410008430480957, + "simulationSeconds": 0.006816983222961426, + "tick": 26 + }, + { + "renderSeconds": 0.004464983940124512, + "simulationSeconds": 0.013373017311096191, + "tick": 28 + }, + { + "renderSeconds": 0.0037920475006103516, + "simulationSeconds": 0.012987971305847168, + "tick": 30 + }, + { + "renderSeconds": 0.003720998764038086, + "simulationSeconds": 0.01234292984008789, + "tick": 32 + }, + { + "renderSeconds": 0.004112958908081055, + "simulationSeconds": 0.006273031234741211, + "tick": 33 + }, + { + "renderSeconds": 0.003741025924682617, + "simulationSeconds": 0.012812018394470215, + "tick": 35 + }, + { + "renderSeconds": 0.0035909414291381836, + "simulationSeconds": 0.012993097305297852, + "tick": 37 + }, + { + "renderSeconds": 0.003962993621826172, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 37 + }, + { + "renderSeconds": 0.003982067108154297, + "simulationSeconds": 0.006505012512207031, + "tick": 38 + }, + { + "renderSeconds": 0.003654003143310547, + "simulationSeconds": 0.006342053413391113, + "tick": 39 + }, + { + "renderSeconds": 0.003795027732849121, + "simulationSeconds": 0.0063370466232299805, + "tick": 40 + }, + { + "renderSeconds": 0.0035010576248168945, + "simulationSeconds": 0.00669705867767334, + "tick": 41 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.01294100284576416, + "tick": 43 + }, + { + "renderSeconds": 0.010153889656066895, + "simulationSeconds": 0.006649017333984375, + "tick": 44 + }, + { + "renderSeconds": 0.0038260221481323242, + "simulationSeconds": 0.012938976287841797, + "tick": 46 + }, + { + "renderSeconds": 0.0038499832153320312, + "simulationSeconds": 0, + "tick": 46 + }, + { + "renderSeconds": 0.0039789676666259766, + "simulationSeconds": 0.006953001022338867, + "tick": 47 + }, + { + "renderSeconds": 0.0038559436798095703, + "simulationSeconds": 0.006391048431396484, + "tick": 48 + }, + { + "renderSeconds": 0.0037850141525268555, + "simulationSeconds": 0.012678980827331543, + "tick": 50 + }, + { + "renderSeconds": 0.00415802001953125, + "simulationSeconds": 0.006229043006896973, + "tick": 51 + }, + { + "renderSeconds": 0.003835916519165039, + "simulationSeconds": 0.011977076530456543, + "tick": 52 + }, + { + "renderSeconds": 0.0036710500717163086, + "simulationSeconds": 0.012810945510864258, + "tick": 54 + }, + { + "renderSeconds": 0.0037610530853271484, + "simulationSeconds": 0.01243889331817627, + "tick": 56 + }, + { + "renderSeconds": 0.0037289857864379883, + "simulationSeconds": 0.012722969055175781, + "tick": 58 + }, + { + "renderSeconds": 0.003648042678833008, + "simulationSeconds": 0.006460905075073242, + "tick": 59 + }, + { + "renderSeconds": 0.0036950111389160156, + "simulationSeconds": 0.006721019744873047, + "tick": 60 + }, + { + "renderSeconds": 0.0038989782333374023, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0035359859466552734, + "simulationSeconds": 0.006608009338378906, + "tick": 61 + }, + { + "renderSeconds": 0.003908038139343262, + "simulationSeconds": 0.0061370134353637695, + "tick": 62 + }, + { + "renderSeconds": 0.0037050247192382812, + "simulationSeconds": 0.0064849853515625, + "tick": 63 + }, + { + "renderSeconds": 0.003466010093688965, + "simulationSeconds": 0.01222991943359375, + "tick": 65 + }, + { + "renderSeconds": 0.004117012023925781, + "simulationSeconds": 0.006435036659240723, + "tick": 66 + }, + { + "renderSeconds": 0.003464937210083008, + "simulationSeconds": 0.006582021713256836, + "tick": 67 + }, + { + "renderSeconds": 0.003819108009338379, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0038319826126098633, + "simulationSeconds": 0.006766915321350098, + "tick": 68 + }, + { + "renderSeconds": 0.0037970542907714844, + "simulationSeconds": 0.006657958030700684, + "tick": 69 + }, + { + "renderSeconds": 0.003995060920715332, + "simulationSeconds": 0.0065070390701293945, + "tick": 70 + }, + { + "renderSeconds": 0.003913998603820801, + "simulationSeconds": 0.006392002105712891, + "tick": 71 + }, + { + "renderSeconds": 0.0035959482192993164, + "simulationSeconds": 0.012566089630126953, + "tick": 73 + }, + { + "renderSeconds": 0.004426002502441406, + "simulationSeconds": 0.0068100690841674805, + "tick": 74 + }, + { + "renderSeconds": 0.003473997116088867, + "simulationSeconds": 0.006419062614440918, + "tick": 75 + }, + { + "renderSeconds": 0.0037109851837158203, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0037609338760375977, + "simulationSeconds": 0.006479978561401367, + "tick": 76 + }, + { + "renderSeconds": 0.0036559104919433594, + "simulationSeconds": 0.006309032440185547, + "tick": 77 + }, + { + "renderSeconds": 0.003995060920715332, + "simulationSeconds": 0.0062029361724853516, + "tick": 78 + }, + { + "renderSeconds": 0.003775954246520996, + "simulationSeconds": 0.01273202896118164, + "tick": 80 + }, + { + "renderSeconds": 0.0035049915313720703, + "simulationSeconds": 0.006531953811645508, + "tick": 81 + }, + { + "renderSeconds": 0.0038170814514160156, + "simulationSeconds": 0.006830930709838867, + "tick": 82 + }, + { + "renderSeconds": 0.0034819841384887695, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.004012942314147949, + "simulationSeconds": 0.0063610076904296875, + "tick": 83 + }, + { + "renderSeconds": 0.0035730600357055664, + "simulationSeconds": 0.006111025810241699, + "tick": 84 + }, + { + "renderSeconds": 0.003732919692993164, + "simulationSeconds": 0.007444977760314941, + "tick": 85 + }, + { + "renderSeconds": 0.003594040870666504, + "simulationSeconds": 0.006360054016113281, + "tick": 86 + }, + { + "renderSeconds": 0.0037130117416381836, + "simulationSeconds": 0.012125015258789062, + "tick": 88 + }, + { + "renderSeconds": 0.003883957862854004, + "simulationSeconds": 0.006212949752807617, + "tick": 89 + }, + { + "renderSeconds": 0.003939986228942871, + "simulationSeconds": 0.0063800811767578125, + "tick": 90 + }, + { + "renderSeconds": 0.004132986068725586, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0035729408264160156, + "simulationSeconds": 0.006631016731262207, + "tick": 91 + }, + { + "renderSeconds": 0.0035969018936157227, + "simulationSeconds": 0.007143974304199219, + "tick": 92 + }, + { + "renderSeconds": 0.004034996032714844, + "simulationSeconds": 0.007215023040771484, + "tick": 93 + }, + { + "renderSeconds": 0.0034170150756835938, + "simulationSeconds": 0.012355923652648926, + "tick": 95 + }, + { + "renderSeconds": 0.0036319494247436523, + "simulationSeconds": 0.006645917892456055, + "tick": 96 + }, + { + "renderSeconds": 0.0037469863891601562, + "simulationSeconds": 0.006412029266357422, + "tick": 97 + }, + { + "renderSeconds": 0.0039910078048706055, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0032690763473510742, + "simulationSeconds": 0.0067369937896728516, + "tick": 98 + }, + { + "renderSeconds": 0.00365602970123291, + "simulationSeconds": 0.006461024284362793, + "tick": 99 + }, + { + "renderSeconds": 0.0038619041442871094, + "simulationSeconds": 0.006562948226928711, + "tick": 100 + }, + { + "renderSeconds": 0.0036640167236328125, + "simulationSeconds": 0.006139993667602539, + "tick": 101 + }, + { + "renderSeconds": 0.0034559965133666992, + "simulationSeconds": 0.013499975204467773, + "tick": 103 + }, + { + "renderSeconds": 0.003314971923828125, + "simulationSeconds": 0.006507992744445801, + "tick": 104 + }, + { + "renderSeconds": 0.004002094268798828, + "simulationSeconds": 0.006036043167114258, + "tick": 105 + }, + { + "renderSeconds": 0.003824949264526367, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 105 + }, + { + "renderSeconds": 0.003228902816772461, + "simulationSeconds": 0.006696105003356934, + "tick": 106 + }, + { + "renderSeconds": 0.003661036491394043, + "simulationSeconds": 0.006400942802429199, + "tick": 107 + }, + { + "renderSeconds": 0.0036319494247436523, + "simulationSeconds": 0.006800055503845215, + "tick": 108 + }, + { + "renderSeconds": 0.0033949613571166992, + "simulationSeconds": 0.01209104061126709, + "tick": 110 + }, + { + "renderSeconds": 0.0035359859466552734, + "simulationSeconds": 0.0060530900955200195, + "tick": 111 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0.006690025329589844, + "tick": 112 + }, + { + "renderSeconds": 0.0038919448852539062, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0035129785537719727, + "simulationSeconds": 0.006515026092529297, + "tick": 113 + }, + { + "renderSeconds": 0.0033789873123168945, + "simulationSeconds": 0.006415963172912598, + "tick": 114 + }, + { + "renderSeconds": 0.0033670663833618164, + "simulationSeconds": 0.006133913993835449, + "tick": 115 + }, + { + "renderSeconds": 0.003659963607788086, + "simulationSeconds": 0.0059740543365478516, + "tick": 116 + }, + { + "renderSeconds": 0.0033919811248779297, + "simulationSeconds": 0.012389063835144043, + "tick": 118 + }, + { + "renderSeconds": 0.003368973731994629, + "simulationSeconds": 0.007363080978393555, + "tick": 119 + }, + { + "renderSeconds": 0.003990054130554199, + "simulationSeconds": 0.006680011749267578, + "tick": 120 + }, + { + "renderSeconds": 0.0038629770278930664, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003508925437927246, + "simulationSeconds": 0.006494998931884766, + "tick": 121 + }, + { + "renderSeconds": 0.003452897071838379, + "simulationSeconds": 0.006251931190490723, + "tick": 122 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.00633692741394043, + "tick": 123 + }, + { + "renderSeconds": 0.0036640167236328125, + "simulationSeconds": 0.01185297966003418, + "tick": 125 + }, + { + "renderSeconds": 0.0037099123001098633, + "simulationSeconds": 0.006200075149536133, + "tick": 126 + }, + { + "renderSeconds": 0.003949999809265137, + "simulationSeconds": 0.007192015647888184, + "tick": 127 + }, + { + "renderSeconds": 0.003654003143310547, + "simulationSeconds": 9.5367431640625e-07, + "tick": 127 + }, + { + "renderSeconds": 0.003933906555175781, + "simulationSeconds": 0.0064890384674072266, + "tick": 128 + }, + { + "renderSeconds": 0.0036510229110717773, + "simulationSeconds": 0.006247043609619141, + "tick": 129 + }, + { + "renderSeconds": 0.00415194034576416, + "simulationSeconds": 0.006449103355407715, + "tick": 130 + }, + { + "renderSeconds": 0.003538966178894043, + "simulationSeconds": 0.006265044212341309, + "tick": 131 + }, + { + "renderSeconds": 0.003863096237182617, + "simulationSeconds": 0.012498021125793457, + "tick": 133 + }, + { + "renderSeconds": 0.004709005355834961, + "simulationSeconds": 0.007328033447265625, + "tick": 134 + }, + { + "renderSeconds": 0.00377500057220459, + "simulationSeconds": 0.006435036659240723, + "tick": 135 + }, + { + "renderSeconds": 0.0037959814071655273, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.004081010818481445, + "simulationSeconds": 0.006209015846252441, + "tick": 136 + }, + { + "renderSeconds": 0.003832101821899414, + "simulationSeconds": 0.006390929222106934, + "tick": 137 + }, + { + "renderSeconds": 0.003632068634033203, + "simulationSeconds": 0.006170034408569336, + "tick": 138 + }, + { + "renderSeconds": 0.0038580894470214844, + "simulationSeconds": 0.012302041053771973, + "tick": 140 + }, + { + "renderSeconds": 0.0037059783935546875, + "simulationSeconds": 0.00636601448059082, + "tick": 141 + }, + { + "renderSeconds": 0.004341006278991699, + "simulationSeconds": 0.006299018859863281, + "tick": 142 + }, + { + "renderSeconds": 0.003865957260131836, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 142 + }, + { + "renderSeconds": 0.004330992698669434, + "simulationSeconds": 0.00601506233215332, + "tick": 143 + }, + { + "renderSeconds": 0.003995060920715332, + "simulationSeconds": 0.005880951881408691, + "tick": 144 + }, + { + "renderSeconds": 0.0040130615234375, + "simulationSeconds": 0.005970001220703125, + "tick": 145 + }, + { + "renderSeconds": 0.00425410270690918, + "simulationSeconds": 0.005975008010864258, + "tick": 146 + }, + { + "renderSeconds": 0.0039179325103759766, + "simulationSeconds": 0.012552976608276367, + "tick": 148 + }, + { + "renderSeconds": 0.004082918167114258, + "simulationSeconds": 0.0067119598388671875, + "tick": 149 + }, + { + "renderSeconds": 0.00351107120513916, + "simulationSeconds": 0.006278038024902344, + "tick": 150 + }, + { + "renderSeconds": 0.0037720203399658203, + "simulationSeconds": 0.005982041358947754, + "tick": 151 + }, + { + "renderSeconds": 0.0037670135498046875, + "simulationSeconds": 0.0064029693603515625, + "tick": 152 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0.006730914115905762, + "tick": 153 + }, + { + "renderSeconds": 0.003629922866821289, + "simulationSeconds": 0.011340022087097168, + "tick": 155 + }, + { + "renderSeconds": 0.004145026206970215, + "simulationSeconds": 0.006834983825683594, + "tick": 156 + }, + { + "renderSeconds": 0.0040400028228759766, + "simulationSeconds": 0.006542086601257324, + "tick": 157 + }, + { + "renderSeconds": 0.004115939140319824, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 157 + }, + { + "renderSeconds": 0.0034940242767333984, + "simulationSeconds": 0.006275057792663574, + "tick": 158 + }, + { + "renderSeconds": 0.0037790536880493164, + "simulationSeconds": 0.006522059440612793, + "tick": 159 + }, + { + "renderSeconds": 0.0039479732513427734, + "simulationSeconds": 0.0064160823822021484, + "tick": 160 + }, + { + "renderSeconds": 0.003587007522583008, + "simulationSeconds": 0.005975008010864258, + "tick": 161 + }, + { + "renderSeconds": 0.0032529830932617188, + "simulationSeconds": 0.012853026390075684, + "tick": 163 + }, + { + "renderSeconds": 0.00391995906829834, + "simulationSeconds": 0.006265044212341309, + "tick": 164 + }, + { + "renderSeconds": 0.0038759708404541016, + "simulationSeconds": 0.00634002685546875, + "tick": 165 + }, + { + "renderSeconds": 0.003904104232788086, + "simulationSeconds": 9.5367431640625e-07, + "tick": 165 + }, + { + "renderSeconds": 0.0035549402236938477, + "simulationSeconds": 0.006384015083312988, + "tick": 166 + }, + { + "renderSeconds": 0.0033110380172729492, + "simulationSeconds": 0.006142973899841309, + "tick": 167 + }, + { + "renderSeconds": 0.003981947898864746, + "simulationSeconds": 0.0065000057220458984, + "tick": 168 + }, + { + "renderSeconds": 0.003527998924255371, + "simulationSeconds": 0.012698054313659668, + "tick": 170 + }, + { + "renderSeconds": 0.0036510229110717773, + "simulationSeconds": 0.006442070007324219, + "tick": 171 + }, + { + "renderSeconds": 0.0037689208984375, + "simulationSeconds": 0.006197929382324219, + "tick": 172 + }, + { + "renderSeconds": 0.004225969314575195, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.0037980079650878906, + "simulationSeconds": 0.006908059120178223, + "tick": 173 + }, + { + "renderSeconds": 0.004104018211364746, + "simulationSeconds": 0.0063779354095458984, + "tick": 174 + }, + { + "renderSeconds": 0.0037300586700439453, + "simulationSeconds": 0.006338953971862793, + "tick": 175 + }, + { + "renderSeconds": 0.0039910078048706055, + "simulationSeconds": 0.006261944770812988, + "tick": 176 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.012902021408081055, + "tick": 178 + }, + { + "renderSeconds": 0.0035349130630493164, + "simulationSeconds": 0.007023930549621582, + "tick": 179 + }, + { + "renderSeconds": 0.0036219358444213867, + "simulationSeconds": 0.006659984588623047, + "tick": 180 + }, + { + "renderSeconds": 0.003838062286376953, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.003442049026489258, + "simulationSeconds": 0.006619930267333984, + "tick": 181 + }, + { + "renderSeconds": 0.0038080215454101562, + "simulationSeconds": 0.006502032279968262, + "tick": 182 + }, + { + "renderSeconds": 0.0033860206604003906, + "simulationSeconds": 0.006600022315979004, + "tick": 183 + }, + { + "renderSeconds": 0.0039288997650146484, + "simulationSeconds": 0.012728095054626465, + "tick": 185 + }, + { + "renderSeconds": 0.0035740137100219727, + "simulationSeconds": 0.00754094123840332, + "tick": 186 + }, + { + "renderSeconds": 0.003771066665649414, + "simulationSeconds": 0.006788015365600586, + "tick": 187 + }, + { + "renderSeconds": 0.0036820173263549805, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.003674030303955078, + "simulationSeconds": 0.00639498233795166, + "tick": 188 + }, + { + "renderSeconds": 0.00351107120513916, + "simulationSeconds": 0.006544947624206543, + "tick": 189 + }, + { + "renderSeconds": 0.003448963165283203, + "simulationSeconds": 0.00642704963684082, + "tick": 190 + }, + { + "renderSeconds": 0.003818035125732422, + "simulationSeconds": 0.006526947021484375, + "tick": 191 + }, + { + "renderSeconds": 0.0031698942184448242, + "simulationSeconds": 0.01308894157409668, + "tick": 193 + }, + { + "renderSeconds": 0.0041429996490478516, + "simulationSeconds": 0.006658077239990234, + "tick": 194 + }, + { + "renderSeconds": 0.0036590099334716797, + "simulationSeconds": 0.006638050079345703, + "tick": 195 + }, + { + "renderSeconds": 0.003957033157348633, + "simulationSeconds": 0, + "tick": 195 + }, + { + "renderSeconds": 0.003878951072692871, + "simulationSeconds": 0.0065460205078125, + "tick": 196 + }, + { + "renderSeconds": 0.003860950469970703, + "simulationSeconds": 0.0062340497970581055, + "tick": 197 + }, + { + "renderSeconds": 0.003699064254760742, + "simulationSeconds": 0.00636899471282959, + "tick": 198 + }, + { + "renderSeconds": 0.003823995590209961, + "simulationSeconds": 0.01261603832244873, + "tick": 200 + }, + { + "renderSeconds": 0.0038470029830932617, + "simulationSeconds": 0.006471991539001465, + "tick": 201 + }, + { + "renderSeconds": 0.0036280155181884766, + "simulationSeconds": 0.00631105899810791, + "tick": 202 + }, + { + "renderSeconds": 0.004104018211364746, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.0038329362869262695, + "simulationSeconds": 0.006531953811645508, + "tick": 203 + }, + { + "renderSeconds": 0.00371396541595459, + "simulationSeconds": 0.006018996238708496, + "tick": 204 + }, + { + "renderSeconds": 0.0037270784378051758, + "simulationSeconds": 0.006399035453796387, + "tick": 205 + }, + { + "renderSeconds": 0.0034509897232055664, + "simulationSeconds": 0.006179094314575195, + "tick": 206 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.01271200180053711, + "tick": 208 + }, + { + "renderSeconds": 0.003912091255187988, + "simulationSeconds": 0.00678098201751709, + "tick": 209 + }, + { + "renderSeconds": 0.003979086875915527, + "simulationSeconds": 0.0062569379806518555, + "tick": 210 + }, + { + "renderSeconds": 0.0037850141525268555, + "simulationSeconds": 0, + "tick": 210 + }, + { + "renderSeconds": 0.0035730600357055664, + "simulationSeconds": 0.006546974182128906, + "tick": 211 + }, + { + "renderSeconds": 0.0037540197372436523, + "simulationSeconds": 0.006178021430969238, + "tick": 212 + }, + { + "renderSeconds": 0.0031560659408569336, + "simulationSeconds": 0.006688952445983887, + "tick": 213 + }, + { + "renderSeconds": 0.0036879777908325195, + "simulationSeconds": 0.012501001358032227, + "tick": 215 + }, + { + "renderSeconds": 0.0037850141525268555, + "simulationSeconds": 0.006367921829223633, + "tick": 216 + }, + { + "renderSeconds": 0.003630995750427246, + "simulationSeconds": 0.006706953048706055, + "tick": 217 + }, + { + "renderSeconds": 0.003636956214904785, + "simulationSeconds": 0, + "tick": 217 + }, + { + "renderSeconds": 0.003686070442199707, + "simulationSeconds": 0.006595969200134277, + "tick": 218 + }, + { + "renderSeconds": 0.0036079883575439453, + "simulationSeconds": 0.006540060043334961, + "tick": 219 + }, + { + "renderSeconds": 0.0035109519958496094, + "simulationSeconds": 0.00612795352935791, + "tick": 220 + }, + { + "renderSeconds": 0.003242015838623047, + "simulationSeconds": 0.006491899490356445, + "tick": 221 + }, + { + "renderSeconds": 0.003370046615600586, + "simulationSeconds": 0.012745022773742676, + "tick": 223 + }, + { + "renderSeconds": 0.003949999809265137, + "simulationSeconds": 0.006487011909484863, + "tick": 224 + }, + { + "renderSeconds": 0.0038770437240600586, + "simulationSeconds": 0.0067130327224731445, + "tick": 225 + }, + { + "renderSeconds": 0.004140973091125488, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.0039000511169433594, + "simulationSeconds": 0.006507992744445801, + "tick": 226 + }, + { + "renderSeconds": 0.0035910606384277344, + "simulationSeconds": 0.006867051124572754, + "tick": 227 + }, + { + "renderSeconds": 0.003659963607788086, + "simulationSeconds": 0.00615692138671875, + "tick": 228 + }, + { + "renderSeconds": 0.004018902778625488, + "simulationSeconds": 0.014454007148742676, + "tick": 230 + }, + { + "renderSeconds": 0.0033789873123168945, + "simulationSeconds": 0.007388949394226074, + "tick": 231 + }, + { + "renderSeconds": 0.004291892051696777, + "simulationSeconds": 0.007360935211181641, + "tick": 232 + }, + { + "renderSeconds": 0.003920078277587891, + "simulationSeconds": 9.5367431640625e-07, + "tick": 232 + }, + { + "renderSeconds": 0.003522038459777832, + "simulationSeconds": 0.006457924842834473, + "tick": 233 + }, + { + "renderSeconds": 0.0038650035858154297, + "simulationSeconds": 0.0062329769134521484, + "tick": 234 + }, + { + "renderSeconds": 0.003677964210510254, + "simulationSeconds": 0.006189942359924316, + "tick": 235 + }, + { + "renderSeconds": 0.0035129785537719727, + "simulationSeconds": 0.006268978118896484, + "tick": 236 + }, + { + "renderSeconds": 0.0036450624465942383, + "simulationSeconds": 0.012134909629821777, + "tick": 238 + }, + { + "renderSeconds": 0.0037189722061157227, + "simulationSeconds": 0.006449103355407715, + "tick": 239 + }, + { + "renderSeconds": 0.0038890838623046875, + "simulationSeconds": 0.006532907485961914, + "tick": 240 + }, + { + "renderSeconds": 0.003545045852661133, + "simulationSeconds": 0, + "tick": 240 + }, + { + "renderSeconds": 0.003571033477783203, + "simulationSeconds": 0.006425023078918457, + "tick": 241 + }, + { + "renderSeconds": 0.003777027130126953, + "simulationSeconds": 0.006129026412963867, + "tick": 242 + }, + { + "renderSeconds": 0.003509998321533203, + "simulationSeconds": 0.006433963775634766, + "tick": 243 + }, + { + "renderSeconds": 0.0033420324325561523, + "simulationSeconds": 0.012310981750488281, + "tick": 245 + }, + { + "renderSeconds": 0.0036619901657104492, + "simulationSeconds": 0.006090998649597168, + "tick": 246 + }, + { + "renderSeconds": 0.0038979053497314453, + "simulationSeconds": 0.008388042449951172, + "tick": 247 + }, + { + "renderSeconds": 0.0038750171661376953, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.00400698184967041, + "simulationSeconds": 0.006312966346740723, + "tick": 248 + }, + { + "renderSeconds": 0.004007101058959961, + "simulationSeconds": 0.006586909294128418, + "tick": 249 + }, + { + "renderSeconds": 0.004047989845275879, + "simulationSeconds": 0.0064400434494018555, + "tick": 250 + }, + { + "renderSeconds": 0.003629922866821289, + "simulationSeconds": 0.0062819719314575195, + "tick": 251 + }, + { + "renderSeconds": 0.0035779476165771484, + "simulationSeconds": 0.01297605037689209, + "tick": 253 + }, + { + "renderSeconds": 0.0038340091705322266, + "simulationSeconds": 0.012472033500671387, + "tick": 255 + }, + { + "renderSeconds": 0.0037450790405273438, + "simulationSeconds": 0.012481927871704102, + "tick": 257 + }, + { + "renderSeconds": 0.003502964973449707, + "simulationSeconds": 0.00598597526550293, + "tick": 258 + }, + { + "renderSeconds": 0.00400996208190918, + "simulationSeconds": 0.012700080871582031, + "tick": 260 + }, + { + "renderSeconds": 0.004312038421630859, + "simulationSeconds": 0.006738901138305664, + "tick": 261 + }, + { + "renderSeconds": 0.0037800073623657227, + "simulationSeconds": 0.006849050521850586, + "tick": 262 + }, + { + "renderSeconds": 0.0037289857864379883, + "simulationSeconds": 0, + "tick": 262 + }, + { + "renderSeconds": 0.003710031509399414, + "simulationSeconds": 0.00666201114654541, + "tick": 263 + }, + { + "renderSeconds": 0.003885984420776367, + "simulationSeconds": 0.006134986877441406, + "tick": 264 + }, + { + "renderSeconds": 0.0037120580673217773, + "simulationSeconds": 0.006611943244934082, + "tick": 265 + }, + { + "renderSeconds": 0.003942966461181641, + "simulationSeconds": 0.006403923034667969, + "tick": 266 + }, + { + "renderSeconds": 0.00394892692565918, + "simulationSeconds": 0.012614965438842773, + "tick": 268 + }, + { + "renderSeconds": 0.0043801069259643555, + "simulationSeconds": 0.006621956825256348, + "tick": 269 + }, + { + "renderSeconds": 0.0037670135498046875, + "simulationSeconds": 0.006695985794067383, + "tick": 270 + }, + { + "renderSeconds": 0.00383603572845459, + "simulationSeconds": 0, + "tick": 270 + }, + { + "renderSeconds": 0.004066944122314453, + "simulationSeconds": 0.006468057632446289, + "tick": 271 + }, + { + "renderSeconds": 0.0044519901275634766, + "simulationSeconds": 0.006348013877868652, + "tick": 272 + }, + { + "renderSeconds": 0.00392603874206543, + "simulationSeconds": 0.006569981575012207, + "tick": 273 + }, + { + "renderSeconds": 0.0035119056701660156, + "simulationSeconds": 0.012310981750488281, + "tick": 275 + }, + { + "renderSeconds": 0.003759026527404785, + "simulationSeconds": 0.005962967872619629, + "tick": 276 + }, + { + "renderSeconds": 0.003958940505981445, + "simulationSeconds": 0.006672978401184082, + "tick": 277 + }, + { + "renderSeconds": 0.0038820505142211914, + "simulationSeconds": 0, + "tick": 277 + }, + { + "renderSeconds": 0.003877997398376465, + "simulationSeconds": 0.006239056587219238, + "tick": 278 + }, + { + "renderSeconds": 0.0038460493087768555, + "simulationSeconds": 0.006672978401184082, + "tick": 279 + }, + { + "renderSeconds": 0.004052996635437012, + "simulationSeconds": 0.006592988967895508, + "tick": 280 + }, + { + "renderSeconds": 0.003943920135498047, + "simulationSeconds": 0.006357073783874512, + "tick": 281 + }, + { + "renderSeconds": 0.0039010047912597656, + "simulationSeconds": 0.012308955192565918, + "tick": 283 + }, + { + "renderSeconds": 0.003908991813659668, + "simulationSeconds": 0.005796074867248535, + "tick": 284 + }, + { + "renderSeconds": 0.003461003303527832, + "simulationSeconds": 0.00595700740814209, + "tick": 285 + }, + { + "renderSeconds": 0.0034029483795166016, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 285 + }, + { + "renderSeconds": 0.0037380456924438477, + "simulationSeconds": 0.006716012954711914, + "tick": 286 + }, + { + "renderSeconds": 0.004046916961669922, + "simulationSeconds": 0.006245017051696777, + "tick": 287 + }, + { + "renderSeconds": 0.00362396240234375, + "simulationSeconds": 0.0061380863189697266, + "tick": 288 + }, + { + "renderSeconds": 0.0034699440002441406, + "simulationSeconds": 0.012042045593261719, + "tick": 290 + }, + { + "renderSeconds": 0.003520965576171875, + "simulationSeconds": 0.005653977394104004, + "tick": 291 + }, + { + "renderSeconds": 0.00338590145111084, + "simulationSeconds": 0.006444096565246582, + "tick": 292 + }, + { + "renderSeconds": 0.003847956657409668, + "simulationSeconds": 0, + "tick": 292 + }, + { + "renderSeconds": 0.003944993019104004, + "simulationSeconds": 0.006145000457763672, + "tick": 293 + }, + { + "renderSeconds": 0.0037900209426879883, + "simulationSeconds": 0.006147980690002441, + "tick": 294 + }, + { + "renderSeconds": 0.0036410093307495117, + "simulationSeconds": 0.00631105899810791, + "tick": 295 + }, + { + "renderSeconds": 0.0038510560989379883, + "simulationSeconds": 0.006211042404174805, + "tick": 296 + }, + { + "renderSeconds": 0.0036340951919555664, + "simulationSeconds": 0.01226198673248291, + "tick": 298 + }, + { + "renderSeconds": 0.004114985466003418, + "simulationSeconds": 0.006404995918273926, + "tick": 299 + }, + { + "renderSeconds": 0.003636956214904785, + "simulationSeconds": 0.006116032600402832, + "tick": 300 + }, + { + "renderSeconds": 0.003657102584838867, + "simulationSeconds": 0, + "tick": 300 + }, + { + "renderSeconds": 0.003995060920715332, + "simulationSeconds": 0.005728006362915039, + "tick": 301 + }, + { + "renderSeconds": 0.0036439895629882812, + "simulationSeconds": 0.005758047103881836, + "tick": 302 + }, + { + "renderSeconds": 0.0035910606384277344, + "simulationSeconds": 0.006125926971435547, + "tick": 303 + }, + { + "renderSeconds": 0.003453969955444336, + "simulationSeconds": 0.011533975601196289, + "tick": 305 + }, + { + "renderSeconds": 0.00397801399230957, + "simulationSeconds": 0.005959987640380859, + "tick": 306 + }, + { + "renderSeconds": 0.0036079883575439453, + "simulationSeconds": 0.005895018577575684, + "tick": 307 + }, + { + "renderSeconds": 0.003818988800048828, + "simulationSeconds": 0, + "tick": 307 + }, + { + "renderSeconds": 0.003677964210510254, + "simulationSeconds": 0.005865931510925293, + "tick": 308 + }, + { + "renderSeconds": 0.004029035568237305, + "simulationSeconds": 0.005984902381896973, + "tick": 309 + }, + { + "renderSeconds": 0.0037550926208496094, + "simulationSeconds": 0.005978941917419434, + "tick": 310 + }, + { + "renderSeconds": 0.0037589073181152344, + "simulationSeconds": 0.006085991859436035, + "tick": 311 + }, + { + "renderSeconds": 0.0037109851837158203, + "simulationSeconds": 0.011844038963317871, + "tick": 313 + }, + { + "renderSeconds": 0.0036699771881103516, + "simulationSeconds": 0.00604403018951416, + "tick": 314 + }, + { + "renderSeconds": 0.003679037094116211, + "simulationSeconds": 0.006726980209350586, + "tick": 315 + }, + { + "renderSeconds": 0.0037540197372436523, + "simulationSeconds": 0, + "tick": 315 + }, + { + "renderSeconds": 0.003390073776245117, + "simulationSeconds": 0.006374001502990723, + "tick": 316 + }, + { + "renderSeconds": 0.003332972526550293, + "simulationSeconds": 0.006059050559997559, + "tick": 317 + }, + { + "renderSeconds": 0.0035489797592163086, + "simulationSeconds": 0.006235003471374512, + "tick": 318 + }, + { + "renderSeconds": 0.0033559799194335938, + "simulationSeconds": 0.012356042861938477, + "tick": 320 + }, + { + "renderSeconds": 0.003534078598022461, + "simulationSeconds": 0.006283998489379883, + "tick": 321 + }, + { + "renderSeconds": 0.0033910274505615234, + "simulationSeconds": 0.006884932518005371, + "tick": 322 + }, + { + "renderSeconds": 0.004014015197753906, + "simulationSeconds": 0, + "tick": 322 + }, + { + "renderSeconds": 0.0032750368118286133, + "simulationSeconds": 0.006322979927062988, + "tick": 323 + }, + { + "renderSeconds": 0.0032459497451782227, + "simulationSeconds": 0.006192922592163086, + "tick": 324 + }, + { + "renderSeconds": 0.0035170316696166992, + "simulationSeconds": 0.006466984748840332, + "tick": 325 + }, + { + "renderSeconds": 0.0033960342407226562, + "simulationSeconds": 0.006326079368591309, + "tick": 326 + }, + { + "renderSeconds": 0.003491044044494629, + "simulationSeconds": 0.012469053268432617, + "tick": 328 + }, + { + "renderSeconds": 0.003777027130126953, + "simulationSeconds": 0.006286978721618652, + "tick": 329 + }, + { + "renderSeconds": 0.0036020278930664062, + "simulationSeconds": 0.00696408748626709, + "tick": 330 + }, + { + "renderSeconds": 0.0035849809646606445, + "simulationSeconds": 0, + "tick": 330 + }, + { + "renderSeconds": 0.003710031509399414, + "simulationSeconds": 0.0065460205078125, + "tick": 331 + }, + { + "renderSeconds": 0.003630995750427246, + "simulationSeconds": 0.006348013877868652, + "tick": 332 + }, + { + "renderSeconds": 0.003551006317138672, + "simulationSeconds": 0.00639498233795166, + "tick": 333 + }, + { + "renderSeconds": 0.0034819841384887695, + "simulationSeconds": 0.011954069137573242, + "tick": 335 + }, + { + "renderSeconds": 0.003648996353149414, + "simulationSeconds": 0.006732940673828125, + "tick": 336 + }, + { + "renderSeconds": 0.003644108772277832, + "simulationSeconds": 0.0062029361724853516, + "tick": 337 + }, + { + "renderSeconds": 0.003853917121887207, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 337 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.006412029266357422, + "tick": 338 + }, + { + "renderSeconds": 0.0029768943786621094, + "simulationSeconds": 0.006921052932739258, + "tick": 339 + }, + { + "renderSeconds": 0.0029789209365844727, + "simulationSeconds": 0.006808042526245117, + "tick": 340 + }, + { + "renderSeconds": 0.0036350488662719727, + "simulationSeconds": 0.006533980369567871, + "tick": 341 + }, + { + "renderSeconds": 0.0033360719680786133, + "simulationSeconds": 0.013132929801940918, + "tick": 343 + }, + { + "renderSeconds": 0.003763914108276367, + "simulationSeconds": 0.0060089826583862305, + "tick": 344 + }, + { + "renderSeconds": 0.0036590099334716797, + "simulationSeconds": 0.007019996643066406, + "tick": 345 + }, + { + "renderSeconds": 0.004201054573059082, + "simulationSeconds": 0, + "tick": 345 + }, + { + "renderSeconds": 0.0035300254821777344, + "simulationSeconds": 0.006781935691833496, + "tick": 346 + }, + { + "renderSeconds": 0.003571033477783203, + "simulationSeconds": 0.006656050682067871, + "tick": 347 + }, + { + "renderSeconds": 0.003680109977722168, + "simulationSeconds": 0.006641030311584473, + "tick": 348 + }, + { + "renderSeconds": 0.0035181045532226562, + "simulationSeconds": 0.012105941772460938, + "tick": 350 + }, + { + "renderSeconds": 0.004088997840881348, + "simulationSeconds": 0.006222963333129883, + "tick": 351 + }, + { + "renderSeconds": 0.0038329362869262695, + "simulationSeconds": 0.005983948707580566, + "tick": 352 + }, + { + "renderSeconds": 0.0041849613189697266, + "simulationSeconds": 0, + "tick": 352 + }, + { + "renderSeconds": 0.003769993782043457, + "simulationSeconds": 0.006936907768249512, + "tick": 353 + }, + { + "renderSeconds": 0.004320979118347168, + "simulationSeconds": 0.006824016571044922, + "tick": 354 + }, + { + "renderSeconds": 0.003666996955871582, + "simulationSeconds": 0.006288051605224609, + "tick": 355 + }, + { + "renderSeconds": 0.0037130117416381836, + "simulationSeconds": 0.006072998046875, + "tick": 356 + }, + { + "renderSeconds": 0.0035630464553833008, + "simulationSeconds": 0.012935996055603027, + "tick": 358 + }, + { + "renderSeconds": 0.0036950111389160156, + "simulationSeconds": 0.0062329769134521484, + "tick": 359 + }, + { + "renderSeconds": 0.0038340091705322266, + "simulationSeconds": 0.006738066673278809, + "tick": 360 + }, + { + "renderSeconds": 0.003702998161315918, + "simulationSeconds": 0, + "tick": 360 + }, + { + "renderSeconds": 0.0038100481033325195, + "simulationSeconds": 0.006670951843261719, + "tick": 361 + }, + { + "renderSeconds": 0.003679990768432617, + "simulationSeconds": 0.006247043609619141, + "tick": 362 + }, + { + "renderSeconds": 0.0038100481033325195, + "simulationSeconds": 0.006515979766845703, + "tick": 363 + }, + { + "renderSeconds": 0.0033680200576782227, + "simulationSeconds": 0.012605905532836914, + "tick": 365 + }, + { + "renderSeconds": 0.004055976867675781, + "simulationSeconds": 0.0063779354095458984, + "tick": 366 + }, + { + "renderSeconds": 0.0034780502319335938, + "simulationSeconds": 0.006407976150512695, + "tick": 367 + }, + { + "renderSeconds": 0.004075050354003906, + "simulationSeconds": 0, + "tick": 367 + }, + { + "renderSeconds": 0.00391697883605957, + "simulationSeconds": 0.006445050239562988, + "tick": 368 + }, + { + "renderSeconds": 0.0036029815673828125, + "simulationSeconds": 0.006229043006896973, + "tick": 369 + }, + { + "renderSeconds": 0.0037659406661987305, + "simulationSeconds": 0.006152033805847168, + "tick": 370 + }, + { + "renderSeconds": 0.003529071807861328, + "simulationSeconds": 0.006363034248352051, + "tick": 371 + }, + { + "renderSeconds": 0.0036989450454711914, + "simulationSeconds": 0.012151956558227539, + "tick": 373 + }, + { + "renderSeconds": 0.003690958023071289, + "simulationSeconds": 0.006466984748840332, + "tick": 374 + }, + { + "renderSeconds": 0.003404974937438965, + "simulationSeconds": 0.006415963172912598, + "tick": 375 + }, + { + "renderSeconds": 0.003919005393981934, + "simulationSeconds": 9.5367431640625e-07, + "tick": 375 + }, + { + "renderSeconds": 0.0034940242767333984, + "simulationSeconds": 0.006577968597412109, + "tick": 376 + }, + { + "renderSeconds": 0.0036039352416992188, + "simulationSeconds": 0.0069119930267333984, + "tick": 377 + }, + { + "renderSeconds": 0.0035560131072998047, + "simulationSeconds": 0.006751060485839844, + "tick": 378 + }, + { + "renderSeconds": 0.0035599470138549805, + "simulationSeconds": 0.012266993522644043, + "tick": 380 + }, + { + "renderSeconds": 0.0034569501876831055, + "simulationSeconds": 0.006507992744445801, + "tick": 381 + }, + { + "renderSeconds": 0.0041970014572143555, + "simulationSeconds": 0.0075958967208862305, + "tick": 382 + }, + { + "renderSeconds": 0.003733038902282715, + "simulationSeconds": 9.5367431640625e-07, + "tick": 382 + }, + { + "renderSeconds": 0.004951953887939453, + "simulationSeconds": 0.006672978401184082, + "tick": 383 + }, + { + "renderSeconds": 0.003580927848815918, + "simulationSeconds": 0.007057070732116699, + "tick": 384 + }, + { + "renderSeconds": 0.004075050354003906, + "simulationSeconds": 0.006350040435791016, + "tick": 385 + }, + { + "renderSeconds": 0.003408074378967285, + "simulationSeconds": 0.005878925323486328, + "tick": 386 + }, + { + "renderSeconds": 0.0043489933013916016, + "simulationSeconds": 0.014561057090759277, + "tick": 388 + }, + { + "renderSeconds": 0.003944993019104004, + "simulationSeconds": 0.013118982315063477, + "tick": 390 + }, + { + "renderSeconds": 0.003952980041503906, + "simulationSeconds": 9.5367431640625e-07, + "tick": 390 + }, + { + "renderSeconds": 0.0037310123443603516, + "simulationSeconds": 0.006803035736083984, + "tick": 391 + }, + { + "renderSeconds": 0.004701972007751465, + "simulationSeconds": 0.0069429874420166016, + "tick": 392 + }, + { + "renderSeconds": 0.00563502311706543, + "simulationSeconds": 0.0066869258880615234, + "tick": 393 + }, + { + "renderSeconds": 0.004570960998535156, + "simulationSeconds": 0.017040014266967773, + "tick": 395 + }, + { + "renderSeconds": 0.003928065299987793, + "simulationSeconds": 0.012692928314208984, + "tick": 397 + }, + { + "renderSeconds": 0.0036110877990722656, + "simulationSeconds": 0.012389898300170898, + "tick": 399 + }, + { + "renderSeconds": 0.004087924957275391, + "simulationSeconds": 0.006712913513183594, + "tick": 400 + }, + { + "renderSeconds": 0.0038880109786987305, + "simulationSeconds": 0.007007956504821777, + "tick": 401 + }, + { + "renderSeconds": 0.010051965713500977, + "simulationSeconds": 0.015897035598754883, + "tick": 403 + }, + { + "renderSeconds": 0.003495931625366211, + "simulationSeconds": 0.020303010940551758, + "tick": 405 + }, + { + "renderSeconds": 0.003331899642944336, + "simulationSeconds": 0.013275980949401855, + "tick": 407 + }, + { + "renderSeconds": 0.003975033760070801, + "simulationSeconds": 0.00669097900390625, + "tick": 408 + }, + { + "renderSeconds": 0.0037540197372436523, + "simulationSeconds": 0.012386918067932129, + "tick": 410 + }, + { + "renderSeconds": 0.003699064254760742, + "simulationSeconds": 0.014215946197509766, + "tick": 412 + }, + { + "renderSeconds": 0.003509998321533203, + "simulationSeconds": 0, + "tick": 412 + }, + { + "renderSeconds": 0.003793001174926758, + "simulationSeconds": 0.006991028785705566, + "tick": 413 + }, + { + "renderSeconds": 0.003854036331176758, + "simulationSeconds": 0.005877971649169922, + "tick": 414 + }, + { + "renderSeconds": 0.003728032112121582, + "simulationSeconds": 0.0065659284591674805, + "tick": 415 + }, + { + "renderSeconds": 0.0038570165634155273, + "simulationSeconds": 0.006265997886657715, + "tick": 416 + }, + { + "renderSeconds": 0.003913998603820801, + "simulationSeconds": 0.012408018112182617, + "tick": 418 + }, + { + "renderSeconds": 0.003936052322387695, + "simulationSeconds": 0.006557941436767578, + "tick": 419 + }, + { + "renderSeconds": 0.003972053527832031, + "simulationSeconds": 0.006950974464416504, + "tick": 420 + }, + { + "renderSeconds": 0.004134058952331543, + "simulationSeconds": 0, + "tick": 420 + }, + { + "renderSeconds": 0.0036890506744384766, + "simulationSeconds": 0.00631403923034668, + "tick": 421 + }, + { + "renderSeconds": 0.003765106201171875, + "simulationSeconds": 0.006065964698791504, + "tick": 422 + }, + { + "renderSeconds": 0.004387021064758301, + "simulationSeconds": 0.006498932838439941, + "tick": 423 + }, + { + "renderSeconds": 0.004264950752258301, + "simulationSeconds": 0.012940049171447754, + "tick": 425 + }, + { + "renderSeconds": 0.0041370391845703125, + "simulationSeconds": 0.01421201229095459, + "tick": 427 + }, + { + "renderSeconds": 0.004027009010314941, + "simulationSeconds": 0, + "tick": 427 + }, + { + "renderSeconds": 0.003573894500732422, + "simulationSeconds": 0.006193995475769043, + "tick": 428 + }, + { + "renderSeconds": 0.0035349130630493164, + "simulationSeconds": 0.007060050964355469, + "tick": 429 + }, + { + "renderSeconds": 0.003616929054260254, + "simulationSeconds": 0.006136059761047363, + "tick": 430 + }, + { + "renderSeconds": 0.003997921943664551, + "simulationSeconds": 0.006065964698791504, + "tick": 431 + }, + { + "renderSeconds": 0.004548072814941406, + "simulationSeconds": 0.014135003089904785, + "tick": 433 + }, + { + "renderSeconds": 0.00415802001953125, + "simulationSeconds": 0.01429903507232666, + "tick": 435 + }, + { + "renderSeconds": 0.004181981086730957, + "simulationSeconds": 0, + "tick": 435 + }, + { + "renderSeconds": 0.004619002342224121, + "simulationSeconds": 0.008689045906066895, + "tick": 436 + }, + { + "renderSeconds": 0.00400698184967041, + "simulationSeconds": 0.007747054100036621, + "tick": 437 + }, + { + "renderSeconds": 0.004377961158752441, + "simulationSeconds": 0.007047057151794434, + "tick": 438 + }, + { + "renderSeconds": 0.004190921783447266, + "simulationSeconds": 0.014195084571838379, + "tick": 440 + }, + { + "renderSeconds": 0.003587007522583008, + "simulationSeconds": 0.012585997581481934, + "tick": 442 + }, + { + "renderSeconds": 0.0036280155181884766, + "simulationSeconds": 0.006625056266784668, + "tick": 443 + }, + { + "renderSeconds": 0.004050016403198242, + "simulationSeconds": 0.005998015403747559, + "tick": 444 + }, + { + "renderSeconds": 0.0039550065994262695, + "simulationSeconds": 0.006669044494628906, + "tick": 445 + }, + { + "renderSeconds": 0.0036929845809936523, + "simulationSeconds": 0.006096005439758301, + "tick": 446 + }, + { + "renderSeconds": 0.003872990608215332, + "simulationSeconds": 0.013459086418151855, + "tick": 448 + }, + { + "renderSeconds": 0.004412055015563965, + "simulationSeconds": 0.006492018699645996, + "tick": 449 + }, + { + "renderSeconds": 0.0035049915313720703, + "simulationSeconds": 0.006334066390991211, + "tick": 450 + }, + { + "renderSeconds": 0.0034699440002441406, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 450 + }, + { + "renderSeconds": 0.0033720731735229492, + "simulationSeconds": 0.006039023399353027, + "tick": 451 + }, + { + "renderSeconds": 0.004029035568237305, + "simulationSeconds": 0.00734400749206543, + "tick": 452 + }, + { + "renderSeconds": 0.004019021987915039, + "simulationSeconds": 0.006942033767700195, + "tick": 453 + }, + { + "renderSeconds": 0.004878997802734375, + "simulationSeconds": 0.017058968544006348, + "tick": 455 + }, + { + "renderSeconds": 0.00374603271484375, + "simulationSeconds": 0.013257026672363281, + "tick": 457 + }, + { + "renderSeconds": 0.0035248994827270508, + "simulationSeconds": 0.0057860612869262695, + "tick": 458 + }, + { + "renderSeconds": 0.0037909746170043945, + "simulationSeconds": 0.005839943885803223, + "tick": 459 + }, + { + "renderSeconds": 0.003733992576599121, + "simulationSeconds": 0.005690932273864746, + "tick": 460 + }, + { + "renderSeconds": 0.003924965858459473, + "simulationSeconds": 0.0061560869216918945, + "tick": 461 + }, + { + "renderSeconds": 0.0036400556564331055, + "simulationSeconds": 0.011514902114868164, + "tick": 463 + }, + { + "renderSeconds": 0.00432896614074707, + "simulationSeconds": 0.005833029747009277, + "tick": 464 + }, + { + "renderSeconds": 0.0036879777908325195, + "simulationSeconds": 0.005937933921813965, + "tick": 465 + }, + { + "renderSeconds": 0.003648042678833008, + "simulationSeconds": 0, + "tick": 465 + }, + { + "renderSeconds": 0.003654003143310547, + "simulationSeconds": 0.006126046180725098, + "tick": 466 + }, + { + "renderSeconds": 0.0035119056701660156, + "simulationSeconds": 0.007018089294433594, + "tick": 467 + }, + { + "renderSeconds": 0.0037970542907714844, + "simulationSeconds": 0.006083965301513672, + "tick": 468 + }, + { + "renderSeconds": 0.003587961196899414, + "simulationSeconds": 0.011957049369812012, + "tick": 470 + }, + { + "renderSeconds": 0.0035920143127441406, + "simulationSeconds": 0.0060770511627197266, + "tick": 471 + }, + { + "renderSeconds": 0.004058957099914551, + "simulationSeconds": 0.005960941314697266, + "tick": 472 + }, + { + "renderSeconds": 0.0036580562591552734, + "simulationSeconds": 0, + "tick": 472 + }, + { + "renderSeconds": 0.0036699771881103516, + "simulationSeconds": 0.0064460039138793945, + "tick": 473 + }, + { + "renderSeconds": 0.003412008285522461, + "simulationSeconds": 0.005952954292297363, + "tick": 474 + }, + { + "renderSeconds": 0.0038909912109375, + "simulationSeconds": 0.006199002265930176, + "tick": 475 + }, + { + "renderSeconds": 0.0041120052337646484, + "simulationSeconds": 0.0058220624923706055, + "tick": 476 + }, + { + "renderSeconds": 0.0035229921340942383, + "simulationSeconds": 0.011960029602050781, + "tick": 478 + }, + { + "renderSeconds": 0.003751039505004883, + "simulationSeconds": 0.00645899772644043, + "tick": 479 + }, + { + "renderSeconds": 0.0037380456924438477, + "simulationSeconds": 0.011364936828613281, + "tick": 480 + }, + { + "renderSeconds": 0.0029289722442626953, + "simulationSeconds": 0.006381988525390625, + "tick": 481 + }, + { + "renderSeconds": 0.0025479793548583984, + "simulationSeconds": 0.006094932556152344, + "tick": 482 + }, + { + "renderSeconds": 0.0025910139083862305, + "simulationSeconds": 0.006070971488952637, + "tick": 483 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.012031912803649902, + "tick": 485 + }, + { + "renderSeconds": 0.005931973457336426, + "simulationSeconds": 0.0057680606842041016, + "tick": 486 + }, + { + "renderSeconds": 0.0026880502700805664, + "simulationSeconds": 0.01675701141357422, + "tick": 487 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0.008658051490783691, + "tick": 488 + }, + { + "renderSeconds": 0.0028009414672851562, + "simulationSeconds": 0.0065490007400512695, + "tick": 489 + }, + { + "renderSeconds": 0.0030869245529174805, + "simulationSeconds": 0.006680011749267578, + "tick": 490 + }, + { + "renderSeconds": 0.0028901100158691406, + "simulationSeconds": 0.007054924964904785, + "tick": 491 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.012079000473022461, + "tick": 493 + }, + { + "renderSeconds": 0.005782961845397949, + "simulationSeconds": 0.008000969886779785, + "tick": 494 + }, + { + "renderSeconds": 0.002811908721923828, + "simulationSeconds": 0.0069550275802612305, + "tick": 495 + }, + { + "renderSeconds": 0.002688884735107422, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 495 + }, + { + "renderSeconds": 0.0027670860290527344, + "simulationSeconds": 0.006803989410400391, + "tick": 496 + }, + { + "renderSeconds": 0.007822036743164062, + "simulationSeconds": 0.00639498233795166, + "tick": 497 + }, + { + "renderSeconds": 0.002496957778930664, + "simulationSeconds": 0.006236076354980469, + "tick": 498 + }, + { + "renderSeconds": 0.0026268959045410156, + "simulationSeconds": 0.014553070068359375, + "tick": 500 + }, + { + "renderSeconds": 0.002483963966369629, + "simulationSeconds": 0.006515979766845703, + "tick": 501 + }, + { + "renderSeconds": 0.0029219388961791992, + "simulationSeconds": 0.006367087364196777, + "tick": 502 + }, + { + "renderSeconds": 0.0032329559326171875, + "simulationSeconds": 0, + "tick": 502 + }, + { + "renderSeconds": 0.002989053726196289, + "simulationSeconds": 0.006500959396362305, + "tick": 503 + }, + { + "renderSeconds": 0.0029240846633911133, + "simulationSeconds": 0.00674593448638916, + "tick": 504 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.006443977355957031, + "tick": 505 + }, + { + "renderSeconds": 0.002659916877746582, + "simulationSeconds": 0.006371021270751953, + "tick": 506 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.013837099075317383, + "tick": 508 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006399989128112793, + "tick": 509 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.0072040557861328125, + "tick": 510 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03843762501492165, + "moveTicks": 480, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 906, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.42982983589172363, + "preparationSeconds": 0.48120999336242676, + "reducedMotion": false, + "renderSeconds": 1.8121355772018433, + "repetition": 20, + "scenePreparationSeconds": 0.17254102230072021, + "simulationSeconds": 3.3261759281158447, + "snapshotBuildCount": 485, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 26.632166642230004, + "callbackMaxMS": 44.77391665568575, + "postActionRecords": 483, + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.7348557710647583, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0012799501419067383, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0009039640426635742, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0010859966278076172, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0037889480590820312, + "simulationSeconds": 0.005882978439331055, + "tick": 1 + }, + { + "renderSeconds": 0.003782033920288086, + "simulationSeconds": 0.006612062454223633, + "tick": 2 + }, + { + "renderSeconds": 0.0035129785537719727, + "simulationSeconds": 0.006345987319946289, + "tick": 3 + }, + { + "renderSeconds": 0.00424802303314209, + "simulationSeconds": 0.007117033004760742, + "tick": 4 + }, + { + "renderSeconds": 0.004148960113525391, + "simulationSeconds": 0.007228970527648926, + "tick": 5 + }, + { + "renderSeconds": 0.004091024398803711, + "simulationSeconds": 0.006976008415222168, + "tick": 6 + }, + { + "renderSeconds": 0.004279017448425293, + "simulationSeconds": 0.007118940353393555, + "tick": 7 + }, + { + "renderSeconds": 0.0037189722061157227, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.004045009613037109, + "simulationSeconds": 0.01327204704284668, + "tick": 9 + }, + { + "renderSeconds": 0.004775881767272949, + "simulationSeconds": 0.007872939109802246, + "tick": 10 + }, + { + "renderSeconds": 0.003932952880859375, + "simulationSeconds": 0.015575885772705078, + "tick": 12 + }, + { + "renderSeconds": 0.004168987274169922, + "simulationSeconds": 0.0074999332427978516, + "tick": 13 + }, + { + "renderSeconds": 0.0037959814071655273, + "simulationSeconds": 0.006278038024902344, + "tick": 14 + }, + { + "renderSeconds": 0.004271984100341797, + "simulationSeconds": 0, + "tick": 14 + }, + { + "renderSeconds": 0.003795027732849121, + "simulationSeconds": 0.013219952583312988, + "tick": 16 + }, + { + "renderSeconds": 0.0037440061569213867, + "simulationSeconds": 0.014407038688659668, + "tick": 18 + }, + { + "renderSeconds": 0.004760026931762695, + "simulationSeconds": 0.010040998458862305, + "tick": 19 + }, + { + "renderSeconds": 0.0036079883575439453, + "simulationSeconds": 0.006175994873046875, + "tick": 20 + }, + { + "renderSeconds": 0.0034439563751220703, + "simulationSeconds": 0.006985068321228027, + "tick": 21 + }, + { + "renderSeconds": 0.004052996635437012, + "simulationSeconds": 0.00651705265045166, + "tick": 22 + }, + { + "renderSeconds": 0.0037080049514770508, + "simulationSeconds": 9.5367431640625e-07, + "tick": 22 + }, + { + "renderSeconds": 0.0037239789962768555, + "simulationSeconds": 0.013100981712341309, + "tick": 24 + }, + { + "renderSeconds": 0.00348508358001709, + "simulationSeconds": 0.013614892959594727, + "tick": 26 + }, + { + "renderSeconds": 0.00477910041809082, + "simulationSeconds": 0.006293892860412598, + "tick": 27 + }, + { + "renderSeconds": 0.003515958786010742, + "simulationSeconds": 0.01279902458190918, + "tick": 29 + }, + { + "renderSeconds": 0.004261016845703125, + "simulationSeconds": 0.006317019462585449, + "tick": 30 + }, + { + "renderSeconds": 0.0036690235137939453, + "simulationSeconds": 0.006382942199707031, + "tick": 31 + }, + { + "renderSeconds": 0.004621982574462891, + "simulationSeconds": 0.007257938385009766, + "tick": 32 + }, + { + "renderSeconds": 0.003515005111694336, + "simulationSeconds": 0.006943941116333008, + "tick": 33 + }, + { + "renderSeconds": 0.0044329166412353516, + "simulationSeconds": 0.006422996520996094, + "tick": 34 + }, + { + "renderSeconds": 0.0036739110946655273, + "simulationSeconds": 0.006946921348571777, + "tick": 35 + }, + { + "renderSeconds": 0.0038089752197265625, + "simulationSeconds": 0.006647944450378418, + "tick": 36 + }, + { + "renderSeconds": 0.0040340423583984375, + "simulationSeconds": 0.006110072135925293, + "tick": 37 + }, + { + "renderSeconds": 0.004222989082336426, + "simulationSeconds": 9.5367431640625e-07, + "tick": 37 + }, + { + "renderSeconds": 0.004016995429992676, + "simulationSeconds": 0.014917969703674316, + "tick": 39 + }, + { + "renderSeconds": 0.0039299726486206055, + "simulationSeconds": 0.01230001449584961, + "tick": 41 + }, + { + "renderSeconds": 0.0035439729690551758, + "simulationSeconds": 0.012268900871276855, + "tick": 43 + }, + { + "renderSeconds": 0.003980040550231934, + "simulationSeconds": 0.013146042823791504, + "tick": 45 + }, + { + "renderSeconds": 0.003975033760070801, + "simulationSeconds": 0.006657004356384277, + "tick": 46 + }, + { + "renderSeconds": 0.0035430192947387695, + "simulationSeconds": 0.012865066528320312, + "tick": 48 + }, + { + "renderSeconds": 0.003435969352722168, + "simulationSeconds": 0.013628005981445312, + "tick": 50 + }, + { + "renderSeconds": 0.003721952438354492, + "simulationSeconds": 0.012816905975341797, + "tick": 52 + }, + { + "renderSeconds": 0.005604982376098633, + "simulationSeconds": 0.012601971626281738, + "tick": 54 + }, + { + "renderSeconds": 0.0035049915313720703, + "simulationSeconds": 0.013405084609985352, + "tick": 56 + }, + { + "renderSeconds": 0.003612995147705078, + "simulationSeconds": 0.013105988502502441, + "tick": 58 + }, + { + "renderSeconds": 0.0034540891647338867, + "simulationSeconds": 0.006204009056091309, + "tick": 59 + }, + { + "renderSeconds": 0.004050016403198242, + "simulationSeconds": 0.006392002105712891, + "tick": 60 + }, + { + "renderSeconds": 0.0046329498291015625, + "simulationSeconds": 0.007856965065002441, + "tick": 61 + }, + { + "renderSeconds": 0.004598021507263184, + "simulationSeconds": 0.007256984710693359, + "tick": 62 + }, + { + "renderSeconds": 0.004257082939147949, + "simulationSeconds": 0.014818906784057617, + "tick": 64 + }, + { + "renderSeconds": 0.004994988441467285, + "simulationSeconds": 0.0092850923538208, + "tick": 65 + }, + { + "renderSeconds": 0.0047539472579956055, + "simulationSeconds": 0.01621699333190918, + "tick": 67 + }, + { + "renderSeconds": 0.0046269893646240234, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.004140019416809082, + "simulationSeconds": 0.014541029930114746, + "tick": 69 + }, + { + "renderSeconds": 0.0036460161209106445, + "simulationSeconds": 0.013586044311523438, + "tick": 71 + }, + { + "renderSeconds": 0.0038819313049316406, + "simulationSeconds": 0.013124942779541016, + "tick": 73 + }, + { + "renderSeconds": 0.010277986526489258, + "simulationSeconds": 0.021625995635986328, + "tick": 75 + }, + { + "renderSeconds": 0.0035920143127441406, + "simulationSeconds": 0.0121229887008667, + "tick": 77 + }, + { + "renderSeconds": 0.0037039518356323242, + "simulationSeconds": 0.013416051864624023, + "tick": 79 + }, + { + "renderSeconds": 0.003865957260131836, + "simulationSeconds": 0.013162016868591309, + "tick": 81 + }, + { + "renderSeconds": 0.0037720203399658203, + "simulationSeconds": 0.0062580108642578125, + "tick": 82 + }, + { + "renderSeconds": 0.0039899349212646484, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 82 + }, + { + "renderSeconds": 0.004236936569213867, + "simulationSeconds": 0.013339996337890625, + "tick": 84 + }, + { + "renderSeconds": 0.0041849613189697266, + "simulationSeconds": 0.006560087203979492, + "tick": 85 + }, + { + "renderSeconds": 0.004132986068725586, + "simulationSeconds": 0.006474018096923828, + "tick": 86 + }, + { + "renderSeconds": 0.0038208961486816406, + "simulationSeconds": 0.01360011100769043, + "tick": 88 + }, + { + "renderSeconds": 0.00433504581451416, + "simulationSeconds": 0.008481025695800781, + "tick": 89 + }, + { + "renderSeconds": 0.00421297550201416, + "simulationSeconds": 0.0068759918212890625, + "tick": 90 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.00672602653503418, + "tick": 91 + }, + { + "renderSeconds": 0.004201054573059082, + "simulationSeconds": 0.0065419673919677734, + "tick": 92 + }, + { + "renderSeconds": 0.004402041435241699, + "simulationSeconds": 0.0077849626541137695, + "tick": 93 + }, + { + "renderSeconds": 0.004973053932189941, + "simulationSeconds": 0.01577901840209961, + "tick": 95 + }, + { + "renderSeconds": 0.0050629377365112305, + "simulationSeconds": 0.00864100456237793, + "tick": 96 + }, + { + "renderSeconds": 0.003988981246948242, + "simulationSeconds": 0.014593958854675293, + "tick": 98 + }, + { + "renderSeconds": 0.003771066665649414, + "simulationSeconds": 0.013023018836975098, + "tick": 100 + }, + { + "renderSeconds": 0.003733038902282715, + "simulationSeconds": 0.013185977935791016, + "tick": 102 + }, + { + "renderSeconds": 0.003840923309326172, + "simulationSeconds": 0.013316035270690918, + "tick": 104 + }, + { + "renderSeconds": 0.0040819644927978516, + "simulationSeconds": 0.006415009498596191, + "tick": 105 + }, + { + "renderSeconds": 0.003477931022644043, + "simulationSeconds": 0.0069550275802612305, + "tick": 106 + }, + { + "renderSeconds": 0.0039288997650146484, + "simulationSeconds": 0.006863951683044434, + "tick": 107 + }, + { + "renderSeconds": 0.004242062568664551, + "simulationSeconds": 0.0065670013427734375, + "tick": 108 + }, + { + "renderSeconds": 0.004101991653442383, + "simulationSeconds": 0.0067729949951171875, + "tick": 109 + }, + { + "renderSeconds": 0.0037239789962768555, + "simulationSeconds": 0.007205009460449219, + "tick": 110 + }, + { + "renderSeconds": 0.004207015037536621, + "simulationSeconds": 0.015226006507873535, + "tick": 112 + }, + { + "renderSeconds": 0.004418015480041504, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.003986954689025879, + "simulationSeconds": 0.014554023742675781, + "tick": 114 + }, + { + "renderSeconds": 0.004378914833068848, + "simulationSeconds": 0.014519095420837402, + "tick": 116 + }, + { + "renderSeconds": 0.004500985145568848, + "simulationSeconds": 0.007592916488647461, + "tick": 117 + }, + { + "renderSeconds": 0.003618001937866211, + "simulationSeconds": 0.006663918495178223, + "tick": 118 + }, + { + "renderSeconds": 0.003708958625793457, + "simulationSeconds": 0.006826996803283691, + "tick": 119 + }, + { + "renderSeconds": 0.004407048225402832, + "simulationSeconds": 0.0065190792083740234, + "tick": 120 + }, + { + "renderSeconds": 0.0036439895629882812, + "simulationSeconds": 0.006430983543395996, + "tick": 121 + }, + { + "renderSeconds": 0.0040090084075927734, + "simulationSeconds": 0.012959003448486328, + "tick": 123 + }, + { + "renderSeconds": 0.00421905517578125, + "simulationSeconds": 0.007542014122009277, + "tick": 124 + }, + { + "renderSeconds": 0.003982067108154297, + "simulationSeconds": 0.006399989128112793, + "tick": 125 + }, + { + "renderSeconds": 0.0039310455322265625, + "simulationSeconds": 0.006101012229919434, + "tick": 126 + }, + { + "renderSeconds": 0.003965973854064941, + "simulationSeconds": 0.006558060646057129, + "tick": 127 + }, + { + "renderSeconds": 0.0035839080810546875, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.003576040267944336, + "simulationSeconds": 0.012582063674926758, + "tick": 129 + }, + { + "renderSeconds": 0.0047789812088012695, + "simulationSeconds": 0.0068100690841674805, + "tick": 130 + }, + { + "renderSeconds": 0.0036770105361938477, + "simulationSeconds": 0.006747007369995117, + "tick": 131 + }, + { + "renderSeconds": 0.00410008430480957, + "simulationSeconds": 0.006314992904663086, + "tick": 132 + }, + { + "renderSeconds": 0.0037189722061157227, + "simulationSeconds": 0.006276965141296387, + "tick": 133 + }, + { + "renderSeconds": 0.00398099422454834, + "simulationSeconds": 0.007001996040344238, + "tick": 134 + }, + { + "renderSeconds": 0.0039060115814208984, + "simulationSeconds": 0.006203889846801758, + "tick": 135 + }, + { + "renderSeconds": 0.004022002220153809, + "simulationSeconds": 0.0067719221115112305, + "tick": 136 + }, + { + "renderSeconds": 0.0036749839782714844, + "simulationSeconds": 0.006392002105712891, + "tick": 137 + }, + { + "renderSeconds": 0.0038809776306152344, + "simulationSeconds": 0.006152033805847168, + "tick": 138 + }, + { + "renderSeconds": 0.00394594669342041, + "simulationSeconds": 0.007206082344055176, + "tick": 139 + }, + { + "renderSeconds": 0.004085898399353027, + "simulationSeconds": 0.006560921669006348, + "tick": 140 + }, + { + "renderSeconds": 0.004175066947937012, + "simulationSeconds": 0.0061789751052856445, + "tick": 141 + }, + { + "renderSeconds": 0.00439000129699707, + "simulationSeconds": 0.008126974105834961, + "tick": 142 + }, + { + "renderSeconds": 0.004089951515197754, + "simulationSeconds": 0.013563036918640137, + "tick": 144 + }, + { + "renderSeconds": 0.004904031753540039, + "simulationSeconds": 0.009477972984313965, + "tick": 145 + }, + { + "renderSeconds": 0.004485011100769043, + "simulationSeconds": 0.015835046768188477, + "tick": 147 + }, + { + "renderSeconds": 0.004611968994140625, + "simulationSeconds": 0.007302999496459961, + "tick": 148 + }, + { + "renderSeconds": 0.003980040550231934, + "simulationSeconds": 0.014094948768615723, + "tick": 150 + }, + { + "renderSeconds": 0.004486083984375, + "simulationSeconds": 0.006796002388000488, + "tick": 151 + }, + { + "renderSeconds": 0.00427699089050293, + "simulationSeconds": 0.007069945335388184, + "tick": 152 + }, + { + "renderSeconds": 0.0038480758666992188, + "simulationSeconds": 0.00657498836517334, + "tick": 153 + }, + { + "renderSeconds": 0.004752993583679199, + "simulationSeconds": 0.007120966911315918, + "tick": 154 + }, + { + "renderSeconds": 0.003430008888244629, + "simulationSeconds": 0.011577963829040527, + "tick": 156 + }, + { + "renderSeconds": 0.0036100149154663086, + "simulationSeconds": 0.006232023239135742, + "tick": 157 + }, + { + "renderSeconds": 0.0037850141525268555, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 157 + }, + { + "renderSeconds": 0.0035709142684936523, + "simulationSeconds": 0.012238025665283203, + "tick": 159 + }, + { + "renderSeconds": 0.003901958465576172, + "simulationSeconds": 0.006657004356384277, + "tick": 160 + }, + { + "renderSeconds": 0.006109952926635742, + "simulationSeconds": 0.006012916564941406, + "tick": 161 + }, + { + "renderSeconds": 0.0041359663009643555, + "simulationSeconds": 0.0060880184173583984, + "tick": 162 + }, + { + "renderSeconds": 0.003695964813232422, + "simulationSeconds": 0.006260037422180176, + "tick": 163 + }, + { + "renderSeconds": 0.004380941390991211, + "simulationSeconds": 0.006090044975280762, + "tick": 164 + }, + { + "renderSeconds": 0.004083037376403809, + "simulationSeconds": 0.006951093673706055, + "tick": 165 + }, + { + "renderSeconds": 0.004112958908081055, + "simulationSeconds": 0.006929993629455566, + "tick": 166 + }, + { + "renderSeconds": 0.004032015800476074, + "simulationSeconds": 0.006227970123291016, + "tick": 167 + }, + { + "renderSeconds": 0.0034600496292114258, + "simulationSeconds": 0.006760954856872559, + "tick": 168 + }, + { + "renderSeconds": 0.0041849613189697266, + "simulationSeconds": 0.006477952003479004, + "tick": 169 + }, + { + "renderSeconds": 0.003661036491394043, + "simulationSeconds": 0.006179928779602051, + "tick": 170 + }, + { + "renderSeconds": 0.0037959814071655273, + "simulationSeconds": 0.006278038024902344, + "tick": 171 + }, + { + "renderSeconds": 0.0035550594329833984, + "simulationSeconds": 0.006137967109680176, + "tick": 172 + }, + { + "renderSeconds": 0.004866957664489746, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.003842949867248535, + "simulationSeconds": 0.012810945510864258, + "tick": 174 + }, + { + "renderSeconds": 0.003435969352722168, + "simulationSeconds": 0.013285994529724121, + "tick": 175 + }, + { + "renderSeconds": 0.003872990608215332, + "simulationSeconds": 0.012192964553833008, + "tick": 177 + }, + { + "renderSeconds": 0.0036760568618774414, + "simulationSeconds": 0.012519001960754395, + "tick": 179 + }, + { + "renderSeconds": 0.0036400556564331055, + "simulationSeconds": 0.01301109790802002, + "tick": 181 + }, + { + "renderSeconds": 0.003908991813659668, + "simulationSeconds": 0.006209015846252441, + "tick": 182 + }, + { + "renderSeconds": 0.0043430328369140625, + "simulationSeconds": 0.006504058837890625, + "tick": 183 + }, + { + "renderSeconds": 0.0036170482635498047, + "simulationSeconds": 0.006393909454345703, + "tick": 184 + }, + { + "renderSeconds": 0.0037980079650878906, + "simulationSeconds": 0.012869000434875488, + "tick": 186 + }, + { + "renderSeconds": 0.004012107849121094, + "simulationSeconds": 0.006551980972290039, + "tick": 187 + }, + { + "renderSeconds": 0.0038219690322875977, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.0037080049514770508, + "simulationSeconds": 0.014087915420532227, + "tick": 189 + }, + { + "renderSeconds": 0.004008054733276367, + "simulationSeconds": 0.006327986717224121, + "tick": 190 + }, + { + "renderSeconds": 0.004168987274169922, + "simulationSeconds": 0.0060520172119140625, + "tick": 191 + }, + { + "renderSeconds": 0.0036330223083496094, + "simulationSeconds": 0.0062628984451293945, + "tick": 192 + }, + { + "renderSeconds": 0.004015088081359863, + "simulationSeconds": 0.006685972213745117, + "tick": 193 + }, + { + "renderSeconds": 0.0037920475006103516, + "simulationSeconds": 0.006788969039916992, + "tick": 194 + }, + { + "renderSeconds": 0.006924033164978027, + "simulationSeconds": 0.0066030025482177734, + "tick": 195 + }, + { + "renderSeconds": 0.004034996032714844, + "simulationSeconds": 0.007375955581665039, + "tick": 196 + }, + { + "renderSeconds": 0.003988027572631836, + "simulationSeconds": 0.013067007064819336, + "tick": 198 + }, + { + "renderSeconds": 0.0036330223083496094, + "simulationSeconds": 0.007977962493896484, + "tick": 199 + }, + { + "renderSeconds": 0.004019975662231445, + "simulationSeconds": 0.00719904899597168, + "tick": 200 + }, + { + "renderSeconds": 0.003643035888671875, + "simulationSeconds": 0.006196022033691406, + "tick": 201 + }, + { + "renderSeconds": 0.0039370059967041016, + "simulationSeconds": 0.006281018257141113, + "tick": 202 + }, + { + "renderSeconds": 0.0038739442825317383, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.003619074821472168, + "simulationSeconds": 0.012570023536682129, + "tick": 204 + }, + { + "renderSeconds": 0.003818035125732422, + "simulationSeconds": 0.0077370405197143555, + "tick": 205 + }, + { + "renderSeconds": 0.003843069076538086, + "simulationSeconds": 0.007259011268615723, + "tick": 206 + }, + { + "renderSeconds": 0.003710031509399414, + "simulationSeconds": 0.006245017051696777, + "tick": 207 + }, + { + "renderSeconds": 0.003659963607788086, + "simulationSeconds": 0.00609898567199707, + "tick": 208 + }, + { + "renderSeconds": 0.0035549402236938477, + "simulationSeconds": 0.006195068359375, + "tick": 209 + }, + { + "renderSeconds": 0.0034720897674560547, + "simulationSeconds": 0.006314992904663086, + "tick": 210 + }, + { + "renderSeconds": 0.0035359859466552734, + "simulationSeconds": 0.006108999252319336, + "tick": 211 + }, + { + "renderSeconds": 0.003757953643798828, + "simulationSeconds": 0.00636601448059082, + "tick": 212 + }, + { + "renderSeconds": 0.003853917121887207, + "simulationSeconds": 0.006352066993713379, + "tick": 213 + }, + { + "renderSeconds": 0.004104018211364746, + "simulationSeconds": 0.0066030025482177734, + "tick": 214 + }, + { + "renderSeconds": 0.004436016082763672, + "simulationSeconds": 0.007308006286621094, + "tick": 215 + }, + { + "renderSeconds": 0.0034450292587280273, + "simulationSeconds": 0.006829023361206055, + "tick": 216 + }, + { + "renderSeconds": 0.004068970680236816, + "simulationSeconds": 0.007099032402038574, + "tick": 217 + }, + { + "renderSeconds": 0.004055023193359375, + "simulationSeconds": 9.5367431640625e-07, + "tick": 217 + }, + { + "renderSeconds": 0.00427091121673584, + "simulationSeconds": 0.014155030250549316, + "tick": 219 + }, + { + "renderSeconds": 0.004230022430419922, + "simulationSeconds": 0.014389991760253906, + "tick": 221 + }, + { + "renderSeconds": 0.0036410093307495117, + "simulationSeconds": 0.007074952125549316, + "tick": 222 + }, + { + "renderSeconds": 0.0039789676666259766, + "simulationSeconds": 0.007084012031555176, + "tick": 223 + }, + { + "renderSeconds": 0.0035560131072998047, + "simulationSeconds": 0.006103992462158203, + "tick": 224 + }, + { + "renderSeconds": 0.003636002540588379, + "simulationSeconds": 0.006564021110534668, + "tick": 225 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.006266951560974121, + "tick": 226 + }, + { + "renderSeconds": 0.0033769607543945312, + "simulationSeconds": 0.006411910057067871, + "tick": 227 + }, + { + "renderSeconds": 0.0040100812911987305, + "simulationSeconds": 0.006088972091674805, + "tick": 228 + }, + { + "renderSeconds": 0.004007935523986816, + "simulationSeconds": 0.006451010704040527, + "tick": 229 + }, + { + "renderSeconds": 0.003921985626220703, + "simulationSeconds": 0.0064029693603515625, + "tick": 230 + }, + { + "renderSeconds": 0.0045059919357299805, + "simulationSeconds": 0.007459044456481934, + "tick": 231 + }, + { + "renderSeconds": 0.003972053527832031, + "simulationSeconds": 0.0071430206298828125, + "tick": 232 + }, + { + "renderSeconds": 0.004019975662231445, + "simulationSeconds": 0, + "tick": 232 + }, + { + "renderSeconds": 0.0042209625244140625, + "simulationSeconds": 0.014196991920471191, + "tick": 234 + }, + { + "renderSeconds": 0.003744959831237793, + "simulationSeconds": 0.014079093933105469, + "tick": 236 + }, + { + "renderSeconds": 0.0038330554962158203, + "simulationSeconds": 0.013630032539367676, + "tick": 238 + }, + { + "renderSeconds": 0.003618955612182617, + "simulationSeconds": 0.01278698444366455, + "tick": 240 + }, + { + "renderSeconds": 0.0037169456481933594, + "simulationSeconds": 0.012331962585449219, + "tick": 242 + }, + { + "renderSeconds": 0.003732919692993164, + "simulationSeconds": 0.013101935386657715, + "tick": 244 + }, + { + "renderSeconds": 0.0036870241165161133, + "simulationSeconds": 0.012856006622314453, + "tick": 246 + }, + { + "renderSeconds": 0.004026889801025391, + "simulationSeconds": 0.006186008453369141, + "tick": 247 + }, + { + "renderSeconds": 0.0036890506744384766, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.003741025924682617, + "simulationSeconds": 0.015761971473693848, + "tick": 249 + }, + { + "renderSeconds": 0.0037180185317993164, + "simulationSeconds": 0.012619972229003906, + "tick": 251 + }, + { + "renderSeconds": 0.003679037094116211, + "simulationSeconds": 0.013019919395446777, + "tick": 253 + }, + { + "renderSeconds": 0.0036159753799438477, + "simulationSeconds": 0.006506085395812988, + "tick": 254 + }, + { + "renderSeconds": 0.003903985023498535, + "simulationSeconds": 0.006254076957702637, + "tick": 255 + }, + { + "renderSeconds": 0.0037680864334106445, + "simulationSeconds": 0.012568950653076172, + "tick": 257 + }, + { + "renderSeconds": 0.004163026809692383, + "simulationSeconds": 0.007124066352844238, + "tick": 258 + }, + { + "renderSeconds": 0.003805994987487793, + "simulationSeconds": 0.006755948066711426, + "tick": 259 + }, + { + "renderSeconds": 0.004041910171508789, + "simulationSeconds": 0.007670998573303223, + "tick": 260 + }, + { + "renderSeconds": 0.004330992698669434, + "simulationSeconds": 0.006089925765991211, + "tick": 261 + }, + { + "renderSeconds": 0.003919005393981934, + "simulationSeconds": 0.0070569515228271484, + "tick": 262 + }, + { + "renderSeconds": 0.003545045852661133, + "simulationSeconds": 0.013271093368530273, + "tick": 264 + }, + { + "renderSeconds": 0.005061030387878418, + "simulationSeconds": 0.0066568851470947266, + "tick": 265 + }, + { + "renderSeconds": 0.003917098045349121, + "simulationSeconds": 0.007017970085144043, + "tick": 266 + }, + { + "renderSeconds": 0.003813028335571289, + "simulationSeconds": 0.007485032081604004, + "tick": 267 + }, + { + "renderSeconds": 0.004088997840881348, + "simulationSeconds": 0.00696110725402832, + "tick": 268 + }, + { + "renderSeconds": 0.004146933555603027, + "simulationSeconds": 0.007645010948181152, + "tick": 269 + }, + { + "renderSeconds": 0.004022955894470215, + "simulationSeconds": 0.014177083969116211, + "tick": 271 + }, + { + "renderSeconds": 0.004114985466003418, + "simulationSeconds": 0.007692933082580566, + "tick": 272 + }, + { + "renderSeconds": 0.004045963287353516, + "simulationSeconds": 0.0072640180587768555, + "tick": 273 + }, + { + "renderSeconds": 0.003939032554626465, + "simulationSeconds": 0.006199002265930176, + "tick": 274 + }, + { + "renderSeconds": 0.00415802001953125, + "simulationSeconds": 0.007160067558288574, + "tick": 275 + }, + { + "renderSeconds": 0.004130005836486816, + "simulationSeconds": 0.014199018478393555, + "tick": 277 + }, + { + "renderSeconds": 0.004182100296020508, + "simulationSeconds": 0, + "tick": 277 + }, + { + "renderSeconds": 0.004119992256164551, + "simulationSeconds": 0.01426994800567627, + "tick": 279 + }, + { + "renderSeconds": 0.003977060317993164, + "simulationSeconds": 0.006932973861694336, + "tick": 280 + }, + { + "renderSeconds": 0.00406801700592041, + "simulationSeconds": 0.0076220035552978516, + "tick": 281 + }, + { + "renderSeconds": 0.003961920738220215, + "simulationSeconds": 0.01743900775909424, + "tick": 283 + }, + { + "renderSeconds": 0.0046160221099853516, + "simulationSeconds": 0.006998896598815918, + "tick": 284 + }, + { + "renderSeconds": 0.004060029983520508, + "simulationSeconds": 0.00740504264831543, + "tick": 285 + }, + { + "renderSeconds": 0.004051923751831055, + "simulationSeconds": 0.012595057487487793, + "tick": 287 + }, + { + "renderSeconds": 0.0041120052337646484, + "simulationSeconds": 0.0062400102615356445, + "tick": 288 + }, + { + "renderSeconds": 0.0035970211029052734, + "simulationSeconds": 0.005979061126708984, + "tick": 289 + }, + { + "renderSeconds": 0.0041429996490478516, + "simulationSeconds": 0.006209969520568848, + "tick": 290 + }, + { + "renderSeconds": 0.003812074661254883, + "simulationSeconds": 0.006211042404174805, + "tick": 291 + }, + { + "renderSeconds": 0.004438042640686035, + "simulationSeconds": 0.006474971771240234, + "tick": 292 + }, + { + "renderSeconds": 0.0038520097732543945, + "simulationSeconds": 0, + "tick": 292 + }, + { + "renderSeconds": 0.0034559965133666992, + "simulationSeconds": 0.012606024742126465, + "tick": 294 + }, + { + "renderSeconds": 0.004116058349609375, + "simulationSeconds": 0.0059479475021362305, + "tick": 295 + }, + { + "renderSeconds": 0.003944993019104004, + "simulationSeconds": 0.007102012634277344, + "tick": 296 + }, + { + "renderSeconds": 0.0038950443267822266, + "simulationSeconds": 0.00639796257019043, + "tick": 297 + }, + { + "renderSeconds": 0.004418015480041504, + "simulationSeconds": 0.006821036338806152, + "tick": 298 + }, + { + "renderSeconds": 0.003926992416381836, + "simulationSeconds": 0.0065670013427734375, + "tick": 299 + }, + { + "renderSeconds": 0.0038579702377319336, + "simulationSeconds": 0.013872981071472168, + "tick": 301 + }, + { + "renderSeconds": 0.003997087478637695, + "simulationSeconds": 0.007542967796325684, + "tick": 302 + }, + { + "renderSeconds": 0.003999948501586914, + "simulationSeconds": 0.006818056106567383, + "tick": 303 + }, + { + "renderSeconds": 0.004241943359375, + "simulationSeconds": 0.00677800178527832, + "tick": 304 + }, + { + "renderSeconds": 0.004024028778076172, + "simulationSeconds": 0.006623983383178711, + "tick": 305 + }, + { + "renderSeconds": 0.00418698787689209, + "simulationSeconds": 0.00669097900390625, + "tick": 306 + }, + { + "renderSeconds": 0.004022002220153809, + "simulationSeconds": 0.007696986198425293, + "tick": 307 + }, + { + "renderSeconds": 0.004130959510803223, + "simulationSeconds": 0.01355600357055664, + "tick": 309 + }, + { + "renderSeconds": 0.0038759708404541016, + "simulationSeconds": 0.008020997047424316, + "tick": 310 + }, + { + "renderSeconds": 0.0044869184494018555, + "simulationSeconds": 0.006745100021362305, + "tick": 311 + }, + { + "renderSeconds": 0.004295945167541504, + "simulationSeconds": 0.006784915924072266, + "tick": 312 + }, + { + "renderSeconds": 0.003966093063354492, + "simulationSeconds": 0.013513922691345215, + "tick": 314 + }, + { + "renderSeconds": 0.00413203239440918, + "simulationSeconds": 0.00722503662109375, + "tick": 315 + }, + { + "renderSeconds": 0.004311084747314453, + "simulationSeconds": 0.006569981575012207, + "tick": 316 + }, + { + "renderSeconds": 0.004194974899291992, + "simulationSeconds": 0.006021022796630859, + "tick": 317 + }, + { + "renderSeconds": 0.0038290023803710938, + "simulationSeconds": 0.0064018964767456055, + "tick": 318 + }, + { + "renderSeconds": 0.0042639970779418945, + "simulationSeconds": 0.0065460205078125, + "tick": 319 + }, + { + "renderSeconds": 0.00380098819732666, + "simulationSeconds": 0.006340980529785156, + "tick": 320 + }, + { + "renderSeconds": 0.004160046577453613, + "simulationSeconds": 0.006846904754638672, + "tick": 321 + }, + { + "renderSeconds": 0.0038460493087768555, + "simulationSeconds": 0.0061550140380859375, + "tick": 322 + }, + { + "renderSeconds": 0.003782987594604492, + "simulationSeconds": 0, + "tick": 322 + }, + { + "renderSeconds": 0.003598928451538086, + "simulationSeconds": 0.012379050254821777, + "tick": 324 + }, + { + "renderSeconds": 0.0039049386978149414, + "simulationSeconds": 0.007028937339782715, + "tick": 325 + }, + { + "renderSeconds": 0.003860950469970703, + "simulationSeconds": 0.006096959114074707, + "tick": 326 + }, + { + "renderSeconds": 0.004073023796081543, + "simulationSeconds": 0.006342053413391113, + "tick": 327 + }, + { + "renderSeconds": 0.0037889480590820312, + "simulationSeconds": 0.006288051605224609, + "tick": 328 + }, + { + "renderSeconds": 0.0036749839782714844, + "simulationSeconds": 0.006573081016540527, + "tick": 329 + }, + { + "renderSeconds": 0.003878951072692871, + "simulationSeconds": 0.01588296890258789, + "tick": 331 + }, + { + "renderSeconds": 0.004469037055969238, + "simulationSeconds": 0.006322026252746582, + "tick": 332 + }, + { + "renderSeconds": 0.00365293025970459, + "simulationSeconds": 0.006561994552612305, + "tick": 333 + }, + { + "renderSeconds": 0.0034259557723999023, + "simulationSeconds": 0.011559009552001953, + "tick": 334 + }, + { + "renderSeconds": 0.0036760568618774414, + "simulationSeconds": 0.011983990669250488, + "tick": 336 + }, + { + "renderSeconds": 0.003787994384765625, + "simulationSeconds": 0.013340950012207031, + "tick": 338 + }, + { + "renderSeconds": 0.0037440061569213867, + "simulationSeconds": 0.012778997421264648, + "tick": 340 + }, + { + "renderSeconds": 0.004241943359375, + "simulationSeconds": 0.006730079650878906, + "tick": 341 + }, + { + "renderSeconds": 0.0035409927368164062, + "simulationSeconds": 0.012661933898925781, + "tick": 343 + }, + { + "renderSeconds": 0.003957986831665039, + "simulationSeconds": 0.006176948547363281, + "tick": 344 + }, + { + "renderSeconds": 0.0037740468978881836, + "simulationSeconds": 0.006083011627197266, + "tick": 345 + }, + { + "renderSeconds": 0.003915905952453613, + "simulationSeconds": 0.006575107574462891, + "tick": 346 + }, + { + "renderSeconds": 0.0061550140380859375, + "simulationSeconds": 0.006073951721191406, + "tick": 347 + }, + { + "renderSeconds": 0.0038770437240600586, + "simulationSeconds": 0.008183002471923828, + "tick": 348 + }, + { + "renderSeconds": 0.0039920806884765625, + "simulationSeconds": 0.006493926048278809, + "tick": 349 + }, + { + "renderSeconds": 0.003983020782470703, + "simulationSeconds": 0.006500959396362305, + "tick": 350 + }, + { + "renderSeconds": 0.0036859512329101562, + "simulationSeconds": 0.006434082984924316, + "tick": 351 + }, + { + "renderSeconds": 0.00400090217590332, + "simulationSeconds": 0.006338953971862793, + "tick": 352 + }, + { + "renderSeconds": 0.0038640499114990234, + "simulationSeconds": 0, + "tick": 352 + }, + { + "renderSeconds": 0.0036039352416992188, + "simulationSeconds": 0.012699007987976074, + "tick": 354 + }, + { + "renderSeconds": 0.003783106803894043, + "simulationSeconds": 0.006499052047729492, + "tick": 355 + }, + { + "renderSeconds": 0.0038019418716430664, + "simulationSeconds": 0.007225990295410156, + "tick": 356 + }, + { + "renderSeconds": 0.004180908203125, + "simulationSeconds": 0.0061560869216918945, + "tick": 357 + }, + { + "renderSeconds": 0.003776073455810547, + "simulationSeconds": 0.00643002986907959, + "tick": 358 + }, + { + "renderSeconds": 0.00398707389831543, + "simulationSeconds": 0.007009983062744141, + "tick": 359 + }, + { + "renderSeconds": 0.003733992576599121, + "simulationSeconds": 0.006710052490234375, + "tick": 360 + }, + { + "renderSeconds": 0.004044055938720703, + "simulationSeconds": 0.01234900951385498, + "tick": 362 + }, + { + "renderSeconds": 0.00400996208190918, + "simulationSeconds": 0.0061730146408081055, + "tick": 363 + }, + { + "renderSeconds": 0.0038770437240600586, + "simulationSeconds": 0.00716400146484375, + "tick": 364 + }, + { + "renderSeconds": 0.0037549734115600586, + "simulationSeconds": 0.0065729618072509766, + "tick": 365 + }, + { + "renderSeconds": 0.00432896614074707, + "simulationSeconds": 0.006466984748840332, + "tick": 366 + }, + { + "renderSeconds": 0.0037039518356323242, + "simulationSeconds": 0.006373047828674316, + "tick": 367 + }, + { + "renderSeconds": 0.003813028335571289, + "simulationSeconds": 9.5367431640625e-07, + "tick": 367 + }, + { + "renderSeconds": 0.0037320852279663086, + "simulationSeconds": 0.012803912162780762, + "tick": 369 + }, + { + "renderSeconds": 0.0035070180892944336, + "simulationSeconds": 0.010571002960205078, + "tick": 370 + }, + { + "renderSeconds": 0.0037180185317993164, + "simulationSeconds": 0.013062000274658203, + "tick": 372 + }, + { + "renderSeconds": 0.0038520097732543945, + "simulationSeconds": 0.006594061851501465, + "tick": 373 + }, + { + "renderSeconds": 0.004030942916870117, + "simulationSeconds": 0.006189107894897461, + "tick": 374 + }, + { + "renderSeconds": 0.0037480592727661133, + "simulationSeconds": 0.006235003471374512, + "tick": 375 + }, + { + "renderSeconds": 0.0038570165634155273, + "simulationSeconds": 0.00657200813293457, + "tick": 376 + }, + { + "renderSeconds": 0.003964900970458984, + "simulationSeconds": 0.006579995155334473, + "tick": 377 + }, + { + "renderSeconds": 0.004303932189941406, + "simulationSeconds": 0.006824970245361328, + "tick": 378 + }, + { + "renderSeconds": 0.004427909851074219, + "simulationSeconds": 0.007292032241821289, + "tick": 379 + }, + { + "renderSeconds": 0.003763914108276367, + "simulationSeconds": 0.012852072715759277, + "tick": 381 + }, + { + "renderSeconds": 0.004078984260559082, + "simulationSeconds": 0.006294965744018555, + "tick": 382 + }, + { + "renderSeconds": 0.0035610198974609375, + "simulationSeconds": 0, + "tick": 382 + }, + { + "renderSeconds": 0.003782033920288086, + "simulationSeconds": 0.013326048851013184, + "tick": 384 + }, + { + "renderSeconds": 0.004444003105163574, + "simulationSeconds": 0.007532000541687012, + "tick": 385 + }, + { + "renderSeconds": 0.0035179853439331055, + "simulationSeconds": 0.007122993469238281, + "tick": 386 + }, + { + "renderSeconds": 0.0037909746170043945, + "simulationSeconds": 0.00607907772064209, + "tick": 387 + }, + { + "renderSeconds": 0.003764033317565918, + "simulationSeconds": 0.012984037399291992, + "tick": 389 + }, + { + "renderSeconds": 0.004144072532653809, + "simulationSeconds": 0.0063250064849853516, + "tick": 390 + }, + { + "renderSeconds": 0.004109025001525879, + "simulationSeconds": 0.00618898868560791, + "tick": 391 + }, + { + "renderSeconds": 0.004538059234619141, + "simulationSeconds": 0.0065000057220458984, + "tick": 392 + }, + { + "renderSeconds": 0.0037049055099487305, + "simulationSeconds": 0.006253957748413086, + "tick": 393 + }, + { + "renderSeconds": 0.004396915435791016, + "simulationSeconds": 0.006547093391418457, + "tick": 394 + }, + { + "renderSeconds": 0.0035969018936157227, + "simulationSeconds": 0.0063860416412353516, + "tick": 395 + }, + { + "renderSeconds": 0.00439298152923584, + "simulationSeconds": 0.006711006164550781, + "tick": 396 + }, + { + "renderSeconds": 0.003908038139343262, + "simulationSeconds": 0.006559967994689941, + "tick": 397 + }, + { + "renderSeconds": 0.0035439729690551758, + "simulationSeconds": 0.013306021690368652, + "tick": 399 + }, + { + "renderSeconds": 0.004119992256164551, + "simulationSeconds": 0.006349921226501465, + "tick": 400 + }, + { + "renderSeconds": 0.003949999809265137, + "simulationSeconds": 0.006392002105712891, + "tick": 401 + }, + { + "renderSeconds": 0.0034950971603393555, + "simulationSeconds": 0.0062639713287353516, + "tick": 402 + }, + { + "renderSeconds": 0.003823995590209961, + "simulationSeconds": 0.00637209415435791, + "tick": 403 + }, + { + "renderSeconds": 0.0035849809646606445, + "simulationSeconds": 0.006260037422180176, + "tick": 404 + }, + { + "renderSeconds": 0.0036809444427490234, + "simulationSeconds": 0.006387114524841309, + "tick": 405 + }, + { + "renderSeconds": 0.0035730600357055664, + "simulationSeconds": 0.0069010257720947266, + "tick": 406 + }, + { + "renderSeconds": 0.0036460161209106445, + "simulationSeconds": 0.006551027297973633, + "tick": 407 + }, + { + "renderSeconds": 0.003877997398376465, + "simulationSeconds": 0.0063359737396240234, + "tick": 408 + }, + { + "renderSeconds": 0.0036619901657104492, + "simulationSeconds": 0.006901979446411133, + "tick": 409 + }, + { + "renderSeconds": 0.003922939300537109, + "simulationSeconds": 0.007409930229187012, + "tick": 410 + }, + { + "renderSeconds": 0.004042983055114746, + "simulationSeconds": 0.0062628984451293945, + "tick": 411 + }, + { + "renderSeconds": 0.003867030143737793, + "simulationSeconds": 0.006621956825256348, + "tick": 412 + }, + { + "renderSeconds": 0.004163980484008789, + "simulationSeconds": 0, + "tick": 412 + }, + { + "renderSeconds": 0.003726959228515625, + "simulationSeconds": 0.016932010650634766, + "tick": 414 + }, + { + "renderSeconds": 0.003629922866821289, + "simulationSeconds": 0.012199044227600098, + "tick": 416 + }, + { + "renderSeconds": 0.004433989524841309, + "simulationSeconds": 0.013575077056884766, + "tick": 418 + }, + { + "renderSeconds": 0.003825068473815918, + "simulationSeconds": 0.012930035591125488, + "tick": 420 + }, + { + "renderSeconds": 0.0037009716033935547, + "simulationSeconds": 0.012763023376464844, + "tick": 422 + }, + { + "renderSeconds": 0.003702998161315918, + "simulationSeconds": 0.006561994552612305, + "tick": 423 + }, + { + "renderSeconds": 0.003648042678833008, + "simulationSeconds": 0.016322016716003418, + "tick": 424 + }, + { + "renderSeconds": 0.003949999809265137, + "simulationSeconds": 0.012771010398864746, + "tick": 426 + }, + { + "renderSeconds": 0.0037660598754882812, + "simulationSeconds": 0.012918949127197266, + "tick": 428 + }, + { + "renderSeconds": 0.0037910938262939453, + "simulationSeconds": 0.013792037963867188, + "tick": 430 + }, + { + "renderSeconds": 0.0034520626068115234, + "simulationSeconds": 0.012411952018737793, + "tick": 432 + }, + { + "renderSeconds": 0.003610968589782715, + "simulationSeconds": 0.006134033203125, + "tick": 433 + }, + { + "renderSeconds": 0.003976941108703613, + "simulationSeconds": 0.007680058479309082, + "tick": 434 + }, + { + "renderSeconds": 0.003942966461181641, + "simulationSeconds": 0.006690025329589844, + "tick": 435 + }, + { + "renderSeconds": 0.003944993019104004, + "simulationSeconds": 0.006680011749267578, + "tick": 436 + }, + { + "renderSeconds": 0.0036339759826660156, + "simulationSeconds": 0.0064820051193237305, + "tick": 437 + }, + { + "renderSeconds": 0.004207015037536621, + "simulationSeconds": 0.006505012512207031, + "tick": 438 + }, + { + "renderSeconds": 0.003787994384765625, + "simulationSeconds": 0.006319999694824219, + "tick": 439 + }, + { + "renderSeconds": 0.00425410270690918, + "simulationSeconds": 0.006464958190917969, + "tick": 440 + }, + { + "renderSeconds": 0.003867030143737793, + "simulationSeconds": 0.006796002388000488, + "tick": 441 + }, + { + "renderSeconds": 0.00403904914855957, + "simulationSeconds": 0.006090044975280762, + "tick": 442 + }, + { + "renderSeconds": 0.0035170316696166992, + "simulationSeconds": 0, + "tick": 442 + }, + { + "renderSeconds": 0.0039969682693481445, + "simulationSeconds": 0.013775944709777832, + "tick": 444 + }, + { + "renderSeconds": 0.004420042037963867, + "simulationSeconds": 0.006726980209350586, + "tick": 445 + }, + { + "renderSeconds": 0.004235982894897461, + "simulationSeconds": 0.01601707935333252, + "tick": 447 + }, + { + "renderSeconds": 0.0037690401077270508, + "simulationSeconds": 0.00658106803894043, + "tick": 448 + }, + { + "renderSeconds": 0.003937959671020508, + "simulationSeconds": 0.006018996238708496, + "tick": 449 + }, + { + "renderSeconds": 0.004088997840881348, + "simulationSeconds": 0.007072925567626953, + "tick": 450 + }, + { + "renderSeconds": 0.004523038864135742, + "simulationSeconds": 0.006326913833618164, + "tick": 451 + }, + { + "renderSeconds": 0.007102012634277344, + "simulationSeconds": 0.006818056106567383, + "tick": 452 + }, + { + "renderSeconds": 0.004025936126708984, + "simulationSeconds": 0.01272892951965332, + "tick": 454 + }, + { + "renderSeconds": 0.003545999526977539, + "simulationSeconds": 0.01231992244720459, + "tick": 456 + }, + { + "renderSeconds": 0.010015010833740234, + "simulationSeconds": 0.005972027778625488, + "tick": 457 + }, + { + "renderSeconds": 0.0034710168838500977, + "simulationSeconds": 0.01317298412322998, + "tick": 459 + }, + { + "renderSeconds": 0.0036100149154663086, + "simulationSeconds": 0.011770009994506836, + "tick": 461 + }, + { + "renderSeconds": 0.003824949264526367, + "simulationSeconds": 0.011638998985290527, + "tick": 463 + }, + { + "renderSeconds": 0.004113912582397461, + "simulationSeconds": 0.01228797435760498, + "tick": 465 + }, + { + "renderSeconds": 0.004189014434814453, + "simulationSeconds": 0.006343960762023926, + "tick": 466 + }, + { + "renderSeconds": 0.003849029541015625, + "simulationSeconds": 0.005787014961242676, + "tick": 467 + }, + { + "renderSeconds": 0.004135012626647949, + "simulationSeconds": 0.006292939186096191, + "tick": 468 + }, + { + "renderSeconds": 0.003965020179748535, + "simulationSeconds": 0.005877971649169922, + "tick": 469 + }, + { + "renderSeconds": 0.004220008850097656, + "simulationSeconds": 0.006437063217163086, + "tick": 470 + }, + { + "renderSeconds": 0.0036619901657104492, + "simulationSeconds": 0.006000995635986328, + "tick": 471 + }, + { + "renderSeconds": 0.004330039024353027, + "simulationSeconds": 0.006168961524963379, + "tick": 472 + }, + { + "renderSeconds": 0.00368499755859375, + "simulationSeconds": 0, + "tick": 472 + }, + { + "renderSeconds": 0.003854990005493164, + "simulationSeconds": 0.01202392578125, + "tick": 474 + }, + { + "renderSeconds": 0.003836989402770996, + "simulationSeconds": 0.012542009353637695, + "tick": 476 + }, + { + "renderSeconds": 0.004369020462036133, + "simulationSeconds": 0.00568699836730957, + "tick": 477 + }, + { + "renderSeconds": 0.0037670135498046875, + "simulationSeconds": 0.0059850215911865234, + "tick": 478 + }, + { + "renderSeconds": 0.005615115165710449, + "simulationSeconds": 0.005921006202697754, + "tick": 479 + }, + { + "renderSeconds": 0.004189014434814453, + "simulationSeconds": 0.006090998649597168, + "tick": 480 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.00598907470703125, + "tick": 481 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0.005655050277709961, + "tick": 482 + }, + { + "renderSeconds": 0.002478957176208496, + "simulationSeconds": 0.006793022155761719, + "tick": 483 + }, + { + "renderSeconds": 0.002400994300842285, + "simulationSeconds": 0.006303071975708008, + "tick": 484 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.005798935890197754, + "tick": 485 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.005823016166687012, + "tick": 486 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.006139039993286133, + "tick": 487 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0, + "tick": 487 + }, + { + "renderSeconds": 0.0026519298553466797, + "simulationSeconds": 0.012406110763549805, + "tick": 489 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006376981735229492, + "tick": 490 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.0068891048431396484, + "tick": 491 + }, + { + "renderSeconds": 0.0026950836181640625, + "simulationSeconds": 0.006716012954711914, + "tick": 492 + }, + { + "renderSeconds": 0.002549886703491211, + "simulationSeconds": 0.00657498836517334, + "tick": 493 + }, + { + "renderSeconds": 0.002788066864013672, + "simulationSeconds": 0.006310939788818359, + "tick": 494 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.0066939592361450195, + "tick": 495 + }, + { + "renderSeconds": 0.0024889707565307617, + "simulationSeconds": 0.00669097900390625, + "tick": 496 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.006345987319946289, + "tick": 497 + }, + { + "renderSeconds": 0.0029599666595458984, + "simulationSeconds": 0.007357954978942871, + "tick": 498 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.007191061973571777, + "tick": 499 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.007628083229064941, + "tick": 500 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0.007673025131225586, + "tick": 501 + }, + { + "renderSeconds": 0.0032120943069458008, + "simulationSeconds": 0.006992936134338379, + "tick": 502 + }, + { + "renderSeconds": 0.00303494930267334, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 502 + }, + { + "renderSeconds": 0.002794981002807617, + "simulationSeconds": 0.014887094497680664, + "tick": 504 + }, + { + "renderSeconds": 0.0035390853881835938, + "simulationSeconds": 0.007132053375244141, + "tick": 505 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.006325960159301758, + "tick": 506 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.006309986114501953, + "tick": 507 + }, + { + "renderSeconds": 0.0025179386138916016, + "simulationSeconds": 0.006229996681213379, + "tick": 508 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.006625056266784668, + "tick": 509 + }, + { + "renderSeconds": 0.002811908721923828, + "simulationSeconds": 0.006781935691833496, + "tick": 510 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03816812500008382, + "moveTicks": 480, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 794, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.40850746631622314, + "preparationSeconds": 0.6337950229644775, + "reducedMotion": true, + "renderSeconds": 1.6819593906402588, + "repetition": 20, + "scenePreparationSeconds": 0.2502419948577881, + "simulationSeconds": 3.444219470024109, + "snapshotBuildCount": 430, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 34.90995833999477, + "callbackMaxMS": 45.649208332179114, + "postActionRecords": 428, + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.42032575607299805, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0007179975509643555, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008879899978637695, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008119344711303711, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000782012939453125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0025109052658081055, + "simulationSeconds": 0.005644083023071289, + "tick": 1 + }, + { + "renderSeconds": 0.002101898193359375, + "simulationSeconds": 0.006126046180725098, + "tick": 2 + }, + { + "renderSeconds": 0.002532958984375, + "simulationSeconds": 0.006115078926086426, + "tick": 3 + }, + { + "renderSeconds": 0.0025560855865478516, + "simulationSeconds": 0.006314992904663086, + "tick": 4 + }, + { + "renderSeconds": 0.002496957778930664, + "simulationSeconds": 0.012304902076721191, + "tick": 6 + }, + { + "renderSeconds": 0.002474069595336914, + "simulationSeconds": 0.006325960159301758, + "tick": 7 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.0066149234771728516, + "tick": 8 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006361961364746094, + "tick": 9 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.00727391242980957, + "tick": 10 + }, + { + "renderSeconds": 0.002969980239868164, + "simulationSeconds": 0.007350921630859375, + "tick": 11 + }, + { + "renderSeconds": 0.002601027488708496, + "simulationSeconds": 0.006338000297546387, + "tick": 12 + }, + { + "renderSeconds": 0.0024759769439697266, + "simulationSeconds": 0.012048006057739258, + "tick": 14 + }, + { + "renderSeconds": 0.0026140213012695312, + "simulationSeconds": 0.006254076957702637, + "tick": 15 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0021179914474487305, + "simulationSeconds": 0.006322026252746582, + "tick": 16 + }, + { + "renderSeconds": 0.0022439956665039062, + "simulationSeconds": 0.006553053855895996, + "tick": 17 + }, + { + "renderSeconds": 0.002660989761352539, + "simulationSeconds": 0.006412982940673828, + "tick": 18 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.006579041481018066, + "tick": 19 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.012230992317199707, + "tick": 21 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.007007002830505371, + "tick": 22 + }, + { + "renderSeconds": 0.0030210018157958984, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.002279996871948242, + "simulationSeconds": 0.006742000579833984, + "tick": 23 + }, + { + "renderSeconds": 0.0024300813674926758, + "simulationSeconds": 0.006573915481567383, + "tick": 24 + }, + { + "renderSeconds": 0.002620100975036621, + "simulationSeconds": 0.00713193416595459, + "tick": 25 + }, + { + "renderSeconds": 0.0029571056365966797, + "simulationSeconds": 0.006224989891052246, + "tick": 26 + }, + { + "renderSeconds": 0.0023239850997924805, + "simulationSeconds": 0.006721019744873047, + "tick": 27 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.01175999641418457, + "tick": 29 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.0067909955978393555, + "tick": 30 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.006740927696228027, + "tick": 31 + }, + { + "renderSeconds": 0.0025429725646972656, + "simulationSeconds": 0.006407976150512695, + "tick": 32 + }, + { + "renderSeconds": 0.0025049448013305664, + "simulationSeconds": 0.006518959999084473, + "tick": 33 + }, + { + "renderSeconds": 0.0021120309829711914, + "simulationSeconds": 0.006389021873474121, + "tick": 34 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.01200103759765625, + "tick": 36 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.006851077079772949, + "tick": 37 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.002191901206970215, + "simulationSeconds": 0.006555080413818359, + "tick": 38 + }, + { + "renderSeconds": 0.002550959587097168, + "simulationSeconds": 0.006750941276550293, + "tick": 39 + }, + { + "renderSeconds": 0.00253903865814209, + "simulationSeconds": 0.006483912467956543, + "tick": 40 + }, + { + "renderSeconds": 0.0025060176849365234, + "simulationSeconds": 0.006466984748840332, + "tick": 41 + }, + { + "renderSeconds": 0.0022619962692260742, + "simulationSeconds": 0.00659489631652832, + "tick": 42 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.012712955474853516, + "tick": 44 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.006538987159729004, + "tick": 45 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.002341032028198242, + "simulationSeconds": 0.007059931755065918, + "tick": 46 + }, + { + "renderSeconds": 0.0021899938583374023, + "simulationSeconds": 0.00675201416015625, + "tick": 47 + }, + { + "renderSeconds": 0.0021930932998657227, + "simulationSeconds": 0.006827950477600098, + "tick": 48 + }, + { + "renderSeconds": 0.0022870302200317383, + "simulationSeconds": 0.006682038307189941, + "tick": 49 + }, + { + "renderSeconds": 0.00267791748046875, + "simulationSeconds": 0.012000083923339844, + "tick": 51 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 0.006680965423583984, + "tick": 52 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.00247800350189209, + "simulationSeconds": 0.006675004959106445, + "tick": 53 + }, + { + "renderSeconds": 0.0022110939025878906, + "simulationSeconds": 0.006788969039916992, + "tick": 54 + }, + { + "renderSeconds": 0.0020599365234375, + "simulationSeconds": 0.006844043731689453, + "tick": 55 + }, + { + "renderSeconds": 0.0022929906845092773, + "simulationSeconds": 0.006684064865112305, + "tick": 56 + }, + { + "renderSeconds": 0.0020939111709594727, + "simulationSeconds": 0.006718039512634277, + "tick": 57 + }, + { + "renderSeconds": 0.0025429725646972656, + "simulationSeconds": 0.011696934700012207, + "tick": 59 + }, + { + "renderSeconds": 0.0022840499877929688, + "simulationSeconds": 0.0068138837814331055, + "tick": 60 + }, + { + "renderSeconds": 0.003222942352294922, + "simulationSeconds": 1.0967254638671875e-05, + "tick": 60 + }, + { + "renderSeconds": 0.002690911293029785, + "simulationSeconds": 0.0069550275802612305, + "tick": 61 + }, + { + "renderSeconds": 0.002277970314025879, + "simulationSeconds": 0.006796002388000488, + "tick": 62 + }, + { + "renderSeconds": 0.0021920204162597656, + "simulationSeconds": 0.006897926330566406, + "tick": 63 + }, + { + "renderSeconds": 0.002267003059387207, + "simulationSeconds": 0.006660103797912598, + "tick": 64 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0.011387944221496582, + "tick": 66 + }, + { + "renderSeconds": 0.0021489858627319336, + "simulationSeconds": 0.006410956382751465, + "tick": 67 + }, + { + "renderSeconds": 0.003000974655151367, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.002201080322265625, + "simulationSeconds": 0.006536006927490234, + "tick": 68 + }, + { + "renderSeconds": 0.002196073532104492, + "simulationSeconds": 0.006475925445556641, + "tick": 69 + }, + { + "renderSeconds": 0.0024889707565307617, + "simulationSeconds": 0.006275057792663574, + "tick": 70 + }, + { + "renderSeconds": 0.0022339820861816406, + "simulationSeconds": 0.0067108869552612305, + "tick": 71 + }, + { + "renderSeconds": 0.002557992935180664, + "simulationSeconds": 0.006638050079345703, + "tick": 72 + }, + { + "renderSeconds": 0.002515077590942383, + "simulationSeconds": 0.012632012367248535, + "tick": 74 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.006211996078491211, + "tick": 75 + }, + { + "renderSeconds": 0.0027289390563964844, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.006430983543395996, + "tick": 76 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.006562948226928711, + "tick": 77 + }, + { + "renderSeconds": 0.0025409460067749023, + "simulationSeconds": 0.006126046180725098, + "tick": 78 + }, + { + "renderSeconds": 0.0028400421142578125, + "simulationSeconds": 0.006762981414794922, + "tick": 79 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.01202392578125, + "tick": 81 + }, + { + "renderSeconds": 0.0029169321060180664, + "simulationSeconds": 0.006539106369018555, + "tick": 82 + }, + { + "renderSeconds": 0.0025649070739746094, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0024660825729370117, + "simulationSeconds": 0.006257891654968262, + "tick": 83 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006402015686035156, + "tick": 84 + }, + { + "renderSeconds": 0.0024459362030029297, + "simulationSeconds": 0.0067070722579956055, + "tick": 85 + }, + { + "renderSeconds": 0.0020819902420043945, + "simulationSeconds": 0.006731986999511719, + "tick": 86 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.006927967071533203, + "tick": 87 + }, + { + "renderSeconds": 0.002599954605102539, + "simulationSeconds": 0.012548089027404785, + "tick": 89 + }, + { + "renderSeconds": 0.002278923988342285, + "simulationSeconds": 0.006637096405029297, + "tick": 90 + }, + { + "renderSeconds": 0.003080010414123535, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0024260282516479492, + "simulationSeconds": 0.006611943244934082, + "tick": 91 + }, + { + "renderSeconds": 0.0022379159927368164, + "simulationSeconds": 0.006286978721618652, + "tick": 92 + }, + { + "renderSeconds": 0.0022929906845092773, + "simulationSeconds": 0.006841063499450684, + "tick": 93 + }, + { + "renderSeconds": 0.0022619962692260742, + "simulationSeconds": 0.006489992141723633, + "tick": 94 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.012578010559082031, + "tick": 96 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.0065920352935791016, + "tick": 97 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.0027109384536743164, + "simulationSeconds": 0.006605982780456543, + "tick": 98 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.006318926811218262, + "tick": 99 + }, + { + "renderSeconds": 0.002541065216064453, + "simulationSeconds": 0.0064650774002075195, + "tick": 100 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.00627899169921875, + "tick": 101 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.005888104438781738, + "tick": 102 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.012706995010375977, + "tick": 104 + }, + { + "renderSeconds": 0.0028340816497802734, + "simulationSeconds": 0.006214022636413574, + "tick": 105 + }, + { + "renderSeconds": 0.002667069435119629, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.0025290250778198242, + "simulationSeconds": 0.006098031997680664, + "tick": 106 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.006721019744873047, + "tick": 107 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.006078004837036133, + "tick": 108 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.006485939025878906, + "tick": 109 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.011512041091918945, + "tick": 111 + }, + { + "renderSeconds": 0.00274503231048584, + "simulationSeconds": 0.006363987922668457, + "tick": 112 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.002267003059387207, + "simulationSeconds": 0.0062639713287353516, + "tick": 113 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.006349086761474609, + "tick": 114 + }, + { + "renderSeconds": 0.002516031265258789, + "simulationSeconds": 0.006332993507385254, + "tick": 115 + }, + { + "renderSeconds": 0.0024150609970092773, + "simulationSeconds": 0.006452083587646484, + "tick": 116 + }, + { + "renderSeconds": 0.0022619962692260742, + "simulationSeconds": 0.0071440935134887695, + "tick": 117 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.012646079063415527, + "tick": 119 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.006759047508239746, + "tick": 120 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0.007257938385009766, + "tick": 121 + }, + { + "renderSeconds": 0.002868056297302246, + "simulationSeconds": 0.0062389373779296875, + "tick": 122 + }, + { + "renderSeconds": 0.0026390552520751953, + "simulationSeconds": 0.006324052810668945, + "tick": 123 + }, + { + "renderSeconds": 0.0025300979614257812, + "simulationSeconds": 0.006418943405151367, + "tick": 124 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.012399077415466309, + "tick": 126 + }, + { + "renderSeconds": 0.002898097038269043, + "simulationSeconds": 0.006233930587768555, + "tick": 127 + }, + { + "renderSeconds": 0.0027800798416137695, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.006229043006896973, + "tick": 128 + }, + { + "renderSeconds": 0.0023049116134643555, + "simulationSeconds": 0.006474018096923828, + "tick": 129 + }, + { + "renderSeconds": 0.0023009777069091797, + "simulationSeconds": 0.006702065467834473, + "tick": 130 + }, + { + "renderSeconds": 0.002570033073425293, + "simulationSeconds": 0.006649017333984375, + "tick": 131 + }, + { + "renderSeconds": 0.0021669864654541016, + "simulationSeconds": 0.006564021110534668, + "tick": 132 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.012392997741699219, + "tick": 134 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.0066759586334228516, + "tick": 135 + }, + { + "renderSeconds": 0.0030809640884399414, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0026270151138305664, + "simulationSeconds": 0.006593942642211914, + "tick": 136 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.006545066833496094, + "tick": 137 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0.007146000862121582, + "tick": 138 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.006628990173339844, + "tick": 139 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.011314034461975098, + "tick": 141 + }, + { + "renderSeconds": 0.0031849145889282227, + "simulationSeconds": 0.006493091583251953, + "tick": 142 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 142 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.0059310197830200195, + "tick": 143 + }, + { + "renderSeconds": 0.0024809837341308594, + "simulationSeconds": 0.006391048431396484, + "tick": 144 + }, + { + "renderSeconds": 0.0025370121002197266, + "simulationSeconds": 0.006505012512207031, + "tick": 145 + }, + { + "renderSeconds": 0.002111077308654785, + "simulationSeconds": 0.006540894508361816, + "tick": 146 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 0.006343960762023926, + "tick": 147 + }, + { + "renderSeconds": 0.0027420520782470703, + "simulationSeconds": 0.012392997741699219, + "tick": 149 + }, + { + "renderSeconds": 0.0028738975524902344, + "simulationSeconds": 0.006442070007324219, + "tick": 150 + }, + { + "renderSeconds": 0.0031620264053344727, + "simulationSeconds": 9.5367431640625e-07, + "tick": 150 + }, + { + "renderSeconds": 0.002453923225402832, + "simulationSeconds": 0.006651043891906738, + "tick": 151 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.0066879987716674805, + "tick": 152 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0.006559014320373535, + "tick": 153 + }, + { + "renderSeconds": 0.0030019283294677734, + "simulationSeconds": 0.006532907485961914, + "tick": 154 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.011939048767089844, + "tick": 156 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.005982041358947754, + "tick": 157 + }, + { + "renderSeconds": 0.0027130842208862305, + "simulationSeconds": 0, + "tick": 157 + }, + { + "renderSeconds": 0.0025900602340698242, + "simulationSeconds": 0.006485939025878906, + "tick": 158 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.0064220428466796875, + "tick": 159 + }, + { + "renderSeconds": 0.0028209686279296875, + "simulationSeconds": 0.0065059661865234375, + "tick": 160 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0.006080985069274902, + "tick": 161 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.006368041038513184, + "tick": 162 + }, + { + "renderSeconds": 0.002659916877746582, + "simulationSeconds": 0.012417078018188477, + "tick": 164 + }, + { + "renderSeconds": 0.0033800601959228516, + "simulationSeconds": 0.006096005439758301, + "tick": 165 + }, + { + "renderSeconds": 0.003413081169128418, + "simulationSeconds": 9.5367431640625e-07, + "tick": 165 + }, + { + "renderSeconds": 0.0025949478149414062, + "simulationSeconds": 0.006521940231323242, + "tick": 166 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.0064470767974853516, + "tick": 167 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.006170988082885742, + "tick": 168 + }, + { + "renderSeconds": 0.002662062644958496, + "simulationSeconds": 0.00645291805267334, + "tick": 169 + }, + { + "renderSeconds": 0.0026129484176635742, + "simulationSeconds": 0.012577056884765625, + "tick": 171 + }, + { + "renderSeconds": 0.0029190778732299805, + "simulationSeconds": 0.006368041038513184, + "tick": 172 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0.006549954414367676, + "tick": 173 + }, + { + "renderSeconds": 0.002133011817932129, + "simulationSeconds": 0.008214950561523438, + "tick": 174 + }, + { + "renderSeconds": 0.003219008445739746, + "simulationSeconds": 0.0064040422439575195, + "tick": 175 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006973981857299805, + "tick": 176 + }, + { + "renderSeconds": 0.002865910530090332, + "simulationSeconds": 0.00633394718170166, + "tick": 177 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.012483000755310059, + "tick": 179 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.006244063377380371, + "tick": 180 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.0025500059127807617, + "simulationSeconds": 0.006556987762451172, + "tick": 181 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 0.006507992744445801, + "tick": 182 + }, + { + "renderSeconds": 0.00282895565032959, + "simulationSeconds": 0.006477952003479004, + "tick": 183 + }, + { + "renderSeconds": 0.002969980239868164, + "simulationSeconds": 0.006132006645202637, + "tick": 184 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.012253999710083008, + "tick": 186 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.0069789886474609375, + "tick": 187 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.0028160810470581055, + "simulationSeconds": 0.006724953651428223, + "tick": 188 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006207942962646484, + "tick": 189 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 0.006559014320373535, + "tick": 190 + }, + { + "renderSeconds": 0.0027570724487304688, + "simulationSeconds": 0.0060950517654418945, + "tick": 191 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.006348013877868652, + "tick": 192 + }, + { + "renderSeconds": 0.002642035484313965, + "simulationSeconds": 0.01287698745727539, + "tick": 194 + }, + { + "renderSeconds": 0.003104090690612793, + "simulationSeconds": 0.0068749189376831055, + "tick": 195 + }, + { + "renderSeconds": 0.0030339956283569336, + "simulationSeconds": 0, + "tick": 195 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006662964820861816, + "tick": 196 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.006421923637390137, + "tick": 197 + }, + { + "renderSeconds": 0.002599000930786133, + "simulationSeconds": 0.006209015846252441, + "tick": 198 + }, + { + "renderSeconds": 0.00295102596282959, + "simulationSeconds": 0.006497979164123535, + "tick": 199 + }, + { + "renderSeconds": 0.0026280879974365234, + "simulationSeconds": 0.012519001960754395, + "tick": 201 + }, + { + "renderSeconds": 0.002816915512084961, + "simulationSeconds": 0.006840944290161133, + "tick": 202 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.006422996520996094, + "tick": 203 + }, + { + "renderSeconds": 0.0031480789184570312, + "simulationSeconds": 0.006515026092529297, + "tick": 204 + }, + { + "renderSeconds": 0.0026121139526367188, + "simulationSeconds": 0.006329894065856934, + "tick": 205 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006599903106689453, + "tick": 206 + }, + { + "renderSeconds": 0.0024309158325195312, + "simulationSeconds": 0.006722927093505859, + "tick": 207 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.012305021286010742, + "tick": 209 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.006760954856872559, + "tick": 210 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 210 + }, + { + "renderSeconds": 0.00279390811920166, + "simulationSeconds": 0.007100105285644531, + "tick": 211 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.006459951400756836, + "tick": 212 + }, + { + "renderSeconds": 0.0029380321502685547, + "simulationSeconds": 0.006816983222961426, + "tick": 213 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006642937660217285, + "tick": 214 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.011927008628845215, + "tick": 216 + }, + { + "renderSeconds": 0.0026520490646362305, + "simulationSeconds": 0.007089972496032715, + "tick": 217 + }, + { + "renderSeconds": 0.0029050111770629883, + "simulationSeconds": 0, + "tick": 217 + }, + { + "renderSeconds": 0.002585887908935547, + "simulationSeconds": 0.006789088249206543, + "tick": 218 + }, + { + "renderSeconds": 0.0024650096893310547, + "simulationSeconds": 0.006986021995544434, + "tick": 219 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.006492018699645996, + "tick": 220 + }, + { + "renderSeconds": 0.0031450986862182617, + "simulationSeconds": 0.007085919380187988, + "tick": 221 + }, + { + "renderSeconds": 0.0027060508728027344, + "simulationSeconds": 0.006453990936279297, + "tick": 222 + }, + { + "renderSeconds": 0.0027909278869628906, + "simulationSeconds": 0.013559103012084961, + "tick": 224 + }, + { + "renderSeconds": 0.0031698942184448242, + "simulationSeconds": 0.007011055946350098, + "tick": 225 + }, + { + "renderSeconds": 0.0031000375747680664, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.006615996360778809, + "tick": 226 + }, + { + "renderSeconds": 0.002344965934753418, + "simulationSeconds": 0.0070220232009887695, + "tick": 227 + }, + { + "renderSeconds": 0.0022660493850708008, + "simulationSeconds": 0.007066011428833008, + "tick": 228 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.006862044334411621, + "tick": 229 + }, + { + "renderSeconds": 0.0025740861892700195, + "simulationSeconds": 0.013062000274658203, + "tick": 231 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.006803989410400391, + "tick": 232 + }, + { + "renderSeconds": 0.002830028533935547, + "simulationSeconds": 0, + "tick": 232 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.006399989128112793, + "tick": 233 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.006846070289611816, + "tick": 234 + }, + { + "renderSeconds": 0.0028110742568969727, + "simulationSeconds": 0.0066449642181396484, + "tick": 235 + }, + { + "renderSeconds": 0.0022149085998535156, + "simulationSeconds": 0.0065680742263793945, + "tick": 236 + }, + { + "renderSeconds": 0.0023300647735595703, + "simulationSeconds": 0.0069179534912109375, + "tick": 237 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0.011896967887878418, + "tick": 239 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0.0069359540939331055, + "tick": 240 + }, + { + "renderSeconds": 0.002958059310913086, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 240 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.006209969520568848, + "tick": 241 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.006353020668029785, + "tick": 242 + }, + { + "renderSeconds": 0.0024390220642089844, + "simulationSeconds": 0.006157040596008301, + "tick": 243 + }, + { + "renderSeconds": 0.002454042434692383, + "simulationSeconds": 0.006523013114929199, + "tick": 244 + }, + { + "renderSeconds": 0.002503037452697754, + "simulationSeconds": 0.011868000030517578, + "tick": 246 + }, + { + "renderSeconds": 0.002576112747192383, + "simulationSeconds": 0.006070971488952637, + "tick": 247 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.006235003471374512, + "tick": 248 + }, + { + "renderSeconds": 0.002084970474243164, + "simulationSeconds": 0.0070629119873046875, + "tick": 249 + }, + { + "renderSeconds": 0.0024199485778808594, + "simulationSeconds": 0.00616002082824707, + "tick": 250 + }, + { + "renderSeconds": 0.0024870634078979492, + "simulationSeconds": 0.0065490007400512695, + "tick": 251 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.006345033645629883, + "tick": 252 + }, + { + "renderSeconds": 0.0025339126586914062, + "simulationSeconds": 0.011960983276367188, + "tick": 254 + }, + { + "renderSeconds": 0.0024390220642089844, + "simulationSeconds": 0.005926012992858887, + "tick": 255 + }, + { + "renderSeconds": 0.0029480457305908203, + "simulationSeconds": 9.5367431640625e-07, + "tick": 255 + }, + { + "renderSeconds": 0.0029480457305908203, + "simulationSeconds": 0.007120966911315918, + "tick": 256 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.007177948951721191, + "tick": 257 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.0068950653076171875, + "tick": 258 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.007233023643493652, + "tick": 259 + }, + { + "renderSeconds": 0.0034199953079223633, + "simulationSeconds": 0.013795971870422363, + "tick": 261 + }, + { + "renderSeconds": 0.0034830570220947266, + "simulationSeconds": 0.008885025978088379, + "tick": 262 + }, + { + "renderSeconds": 0.003686070442199707, + "simulationSeconds": 0, + "tick": 262 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0.007133007049560547, + "tick": 263 + }, + { + "renderSeconds": 0.0029789209365844727, + "simulationSeconds": 0.007012009620666504, + "tick": 264 + }, + { + "renderSeconds": 0.0028960704803466797, + "simulationSeconds": 0.007017970085144043, + "tick": 265 + }, + { + "renderSeconds": 0.0030660629272460938, + "simulationSeconds": 0.00713193416595459, + "tick": 266 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.007429003715515137, + "tick": 267 + }, + { + "renderSeconds": 0.002834916114807129, + "simulationSeconds": 0.014047026634216309, + "tick": 269 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.007140994071960449, + "tick": 270 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.043327833351213485, + "moveTicks": 240, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 480, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.23525357246398926, + "preparationSeconds": 0.5193189382553101, + "reducedMotion": false, + "renderSeconds": 0.7238500118255615, + "repetition": 21, + "scenePreparationSeconds": 0.17870104312896729, + "simulationSeconds": 1.7509105205535889, + "snapshotBuildCount": 273, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986, + "postActionRecords": 271, + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.4448533058166504, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.001006007194519043, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001341104507446289, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007760524749755859, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0010110139846801758, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.003260016441345215, + "simulationSeconds": 0.006559967994689941, + "tick": 1 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.006033062934875488, + "tick": 2 + }, + { + "renderSeconds": 0.002726912498474121, + "simulationSeconds": 0.007040977478027344, + "tick": 3 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.012471914291381836, + "tick": 5 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.006331920623779297, + "tick": 6 + }, + { + "renderSeconds": 0.0029190778732299805, + "simulationSeconds": 0.006247043609619141, + "tick": 7 + }, + { + "renderSeconds": 0.0032389163970947266, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.0064699649810791016, + "tick": 8 + }, + { + "renderSeconds": 0.00330197811126709, + "simulationSeconds": 0.007257938385009766, + "tick": 9 + }, + { + "renderSeconds": 0.0029931068420410156, + "simulationSeconds": 0.005999922752380371, + "tick": 10 + }, + { + "renderSeconds": 0.0032290220260620117, + "simulationSeconds": 0.006742000579833984, + "tick": 11 + }, + { + "renderSeconds": 0.002986907958984375, + "simulationSeconds": 0.014243006706237793, + "tick": 13 + }, + { + "renderSeconds": 0.0032889842987060547, + "simulationSeconds": 0.013095974922180176, + "tick": 15 + }, + { + "renderSeconds": 0.0029289722442626953, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.003345966339111328, + "simulationSeconds": 0.007130026817321777, + "tick": 16 + }, + { + "renderSeconds": 0.004047989845275879, + "simulationSeconds": 0.006358981132507324, + "tick": 17 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.006824016571044922, + "tick": 18 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.012584090232849121, + "tick": 20 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.014503002166748047, + "tick": 22 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.013026952743530273, + "tick": 24 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.010693073272705078, + "tick": 25 + }, + { + "renderSeconds": 0.0030670166015625, + "simulationSeconds": 0.011389970779418945, + "tick": 26 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.01910102367401123, + "tick": 29 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.0061609745025634766, + "tick": 30 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.006374001502990723, + "tick": 31 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.009006977081298828, + "tick": 32 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.006630063056945801, + "tick": 33 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.014044046401977539, + "tick": 35 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.006534099578857422, + "tick": 36 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.006748080253601074, + "tick": 37 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 9.5367431640625e-07, + "tick": 37 + }, + { + "renderSeconds": 0.0025490522384643555, + "simulationSeconds": 0.006621956825256348, + "tick": 38 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.00680994987487793, + "tick": 39 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.006418108940124512, + "tick": 40 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.006988048553466797, + "tick": 41 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.012630105018615723, + "tick": 43 + }, + { + "renderSeconds": 0.00568997859954834, + "simulationSeconds": 0.006963968276977539, + "tick": 44 + }, + { + "renderSeconds": 0.0028420686721801758, + "simulationSeconds": 0.006500959396362305, + "tick": 45 + }, + { + "renderSeconds": 0.0028780698776245117, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0035409927368164062, + "simulationSeconds": 0.006469011306762695, + "tick": 46 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.005981922149658203, + "tick": 47 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.006687045097351074, + "tick": 48 + }, + { + "renderSeconds": 0.0029789209365844727, + "simulationSeconds": 0.01297307014465332, + "tick": 50 + }, + { + "renderSeconds": 0.0032029151916503906, + "simulationSeconds": 0.0059920549392700195, + "tick": 51 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.006357073783874512, + "tick": 52 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.006749987602233887, + "tick": 53 + }, + { + "renderSeconds": 0.0026520490646362305, + "simulationSeconds": 0.006863951683044434, + "tick": 54 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.008015990257263184, + "tick": 55 + }, + { + "renderSeconds": 0.003309965133666992, + "simulationSeconds": 0.00631403923034668, + "tick": 56 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.013316988945007324, + "tick": 58 + }, + { + "renderSeconds": 0.0033649206161499023, + "simulationSeconds": 0.006299018859863281, + "tick": 59 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.0066640377044677734, + "tick": 60 + }, + { + "renderSeconds": 0.003265976905822754, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.003286004066467285, + "simulationSeconds": 0.0062520503997802734, + "tick": 61 + }, + { + "renderSeconds": 0.0028989315032958984, + "simulationSeconds": 0.006834983825683594, + "tick": 62 + }, + { + "renderSeconds": 0.003125905990600586, + "simulationSeconds": 0.0070650577545166016, + "tick": 63 + }, + { + "renderSeconds": 0.0030080080032348633, + "simulationSeconds": 0.013844966888427734, + "tick": 65 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.012935042381286621, + "tick": 67 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.013842940330505371, + "tick": 69 + }, + { + "renderSeconds": 0.0034099817276000977, + "simulationSeconds": 0.006371974945068359, + "tick": 70 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.005960941314697266, + "tick": 71 + }, + { + "renderSeconds": 0.0027370452880859375, + "simulationSeconds": 0.013749003410339355, + "tick": 73 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.007043004035949707, + "tick": 74 + }, + { + "renderSeconds": 0.0026640892028808594, + "simulationSeconds": 0.007448911666870117, + "tick": 75 + }, + { + "renderSeconds": 0.0032700300216674805, + "simulationSeconds": 0.006181955337524414, + "tick": 76 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0.006610989570617676, + "tick": 77 + }, + { + "renderSeconds": 0.0031250715255737305, + "simulationSeconds": 0.006062984466552734, + "tick": 78 + }, + { + "renderSeconds": 0.0025240182876586914, + "simulationSeconds": 0.012807965278625488, + "tick": 80 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.006443023681640625, + "tick": 81 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.006139039993286133, + "tick": 82 + }, + { + "renderSeconds": 0.0029680728912353516, + "simulationSeconds": 9.5367431640625e-07, + "tick": 82 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.006505012512207031, + "tick": 83 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.0062760114669799805, + "tick": 84 + }, + { + "renderSeconds": 0.0026139020919799805, + "simulationSeconds": 0.007172942161560059, + "tick": 85 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.006415009498596191, + "tick": 86 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.013255953788757324, + "tick": 88 + }, + { + "renderSeconds": 0.0036159753799438477, + "simulationSeconds": 0.006538987159729004, + "tick": 89 + }, + { + "renderSeconds": 0.0029190778732299805, + "simulationSeconds": 0.006595969200134277, + "tick": 90 + }, + { + "renderSeconds": 0.00306093692779541, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0030870437622070312, + "simulationSeconds": 0.0062389373779296875, + "tick": 91 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006353974342346191, + "tick": 92 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.0061359405517578125, + "tick": 93 + }, + { + "renderSeconds": 0.0028558969497680664, + "simulationSeconds": 0.012959003448486328, + "tick": 95 + }, + { + "renderSeconds": 0.0027959346771240234, + "simulationSeconds": 0.006436944007873535, + "tick": 96 + }, + { + "renderSeconds": 0.003126978874206543, + "simulationSeconds": 0.006493926048278809, + "tick": 97 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.012266993522644043, + "tick": 99 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.006247043609619141, + "tick": 100 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.0060520172119140625, + "tick": 101 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.012583017349243164, + "tick": 103 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.006634950637817383, + "tick": 104 + }, + { + "renderSeconds": 0.0035549402236938477, + "simulationSeconds": 0.006445050239562988, + "tick": 105 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.006531953811645508, + "tick": 106 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.00663602352142334, + "tick": 107 + }, + { + "renderSeconds": 0.0029069185256958008, + "simulationSeconds": 0.006215095520019531, + "tick": 108 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.012633085250854492, + "tick": 110 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.006898045539855957, + "tick": 111 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0.006219983100891113, + "tick": 112 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.006575942039489746, + "tick": 113 + }, + { + "renderSeconds": 0.003062009811401367, + "simulationSeconds": 0.006235957145690918, + "tick": 114 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0.0065729618072509766, + "tick": 115 + }, + { + "renderSeconds": 0.0026439428329467773, + "simulationSeconds": 0.006838083267211914, + "tick": 116 + }, + { + "renderSeconds": 0.002988100051879883, + "simulationSeconds": 0.013267993927001953, + "tick": 118 + }, + { + "renderSeconds": 0.002847909927368164, + "simulationSeconds": 0.0065839290618896484, + "tick": 119 + }, + { + "renderSeconds": 0.0030579566955566406, + "simulationSeconds": 0.013988018035888672, + "tick": 120 + }, + { + "renderSeconds": 0.0030099153518676758, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0027348995208740234, + "simulationSeconds": 0.006306052207946777, + "tick": 121 + }, + { + "renderSeconds": 0.00318300724029541, + "simulationSeconds": 0.006496906280517578, + "tick": 122 + }, + { + "renderSeconds": 0.00312197208404541, + "simulationSeconds": 0.006168007850646973, + "tick": 123 + }, + { + "renderSeconds": 0.0027080774307250977, + "simulationSeconds": 0.012703895568847656, + "tick": 125 + }, + { + "renderSeconds": 0.0026160478591918945, + "simulationSeconds": 0.006148934364318848, + "tick": 126 + }, + { + "renderSeconds": 0.0024629831314086914, + "simulationSeconds": 0.010922908782958984, + "tick": 127 + }, + { + "renderSeconds": 0.0023860931396484375, + "simulationSeconds": 0.006474018096923828, + "tick": 128 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0.007094979286193848, + "tick": 129 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.006189942359924316, + "tick": 130 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.007066011428833008, + "tick": 131 + }, + { + "renderSeconds": 0.002684950828552246, + "simulationSeconds": 0.01252603530883789, + "tick": 133 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.0067789554595947266, + "tick": 134 + }, + { + "renderSeconds": 0.0033409595489501953, + "simulationSeconds": 0.006965041160583496, + "tick": 135 + }, + { + "renderSeconds": 0.002707958221435547, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.0069730281829833984, + "tick": 136 + }, + { + "renderSeconds": 0.002520918846130371, + "simulationSeconds": 0.005980014801025391, + "tick": 137 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.006479978561401367, + "tick": 138 + }, + { + "renderSeconds": 0.002968907356262207, + "simulationSeconds": 0.01243293285369873, + "tick": 140 + }, + { + "renderSeconds": 0.0028679370880126953, + "simulationSeconds": 0.006030082702636719, + "tick": 141 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.00584101676940918, + "tick": 142 + }, + { + "renderSeconds": 0.00256192684173584, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.002563953399658203, + "simulationSeconds": 0.0065430402755737305, + "tick": 143 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.0068280696868896484, + "tick": 144 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.006032109260559082, + "tick": 145 + }, + { + "renderSeconds": 0.0032349824905395508, + "simulationSeconds": 0.006583094596862793, + "tick": 146 + }, + { + "renderSeconds": 0.0027350187301635742, + "simulationSeconds": 0.012161016464233398, + "tick": 148 + }, + { + "renderSeconds": 0.002812981605529785, + "simulationSeconds": 0.01033008098602295, + "tick": 149 + }, + { + "renderSeconds": 0.0031949281692504883, + "simulationSeconds": 0.00790703296661377, + "tick": 150 + }, + { + "renderSeconds": 0.0028760433197021484, + "simulationSeconds": 0, + "tick": 150 + }, + { + "renderSeconds": 0.0028110742568969727, + "simulationSeconds": 0.006145954132080078, + "tick": 151 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.0062830448150634766, + "tick": 152 + }, + { + "renderSeconds": 0.0031129121780395508, + "simulationSeconds": 0.0066640377044677734, + "tick": 153 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.013284921646118164, + "tick": 155 + }, + { + "renderSeconds": 0.0033910274505615234, + "simulationSeconds": 0.012603044509887695, + "tick": 157 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0, + "tick": 157 + }, + { + "renderSeconds": 0.003072977066040039, + "simulationSeconds": 0.006116986274719238, + "tick": 158 + }, + { + "renderSeconds": 0.0027649402618408203, + "simulationSeconds": 0.0069599151611328125, + "tick": 159 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.006271958351135254, + "tick": 160 + }, + { + "renderSeconds": 0.0027910470962524414, + "simulationSeconds": 0.006330966949462891, + "tick": 161 + }, + { + "renderSeconds": 0.0027159452438354492, + "simulationSeconds": 0.01232600212097168, + "tick": 163 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.0061119794845581055, + "tick": 164 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.00616300106048584, + "tick": 165 + }, + { + "renderSeconds": 0.002934098243713379, + "simulationSeconds": 9.5367431640625e-07, + "tick": 165 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.006296992301940918, + "tick": 166 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.006525993347167969, + "tick": 167 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.006523013114929199, + "tick": 168 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.012606024742126465, + "tick": 170 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.00627899169921875, + "tick": 171 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.007153987884521484, + "tick": 172 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.006254076957702637, + "tick": 173 + }, + { + "renderSeconds": 0.0025659799575805664, + "simulationSeconds": 0.0064580440521240234, + "tick": 174 + }, + { + "renderSeconds": 0.002847909927368164, + "simulationSeconds": 0.006289005279541016, + "tick": 175 + }, + { + "renderSeconds": 0.002546072006225586, + "simulationSeconds": 0.006353974342346191, + "tick": 176 + }, + { + "renderSeconds": 0.002599000930786133, + "simulationSeconds": 0.013023018836975098, + "tick": 178 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.006687045097351074, + "tick": 179 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006627917289733887, + "tick": 180 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.002577066421508789, + "simulationSeconds": 0.006808042526245117, + "tick": 181 + }, + { + "renderSeconds": 0.002559065818786621, + "simulationSeconds": 0.006083965301513672, + "tick": 182 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.006526947021484375, + "tick": 183 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.012812972068786621, + "tick": 185 + }, + { + "renderSeconds": 0.002744913101196289, + "simulationSeconds": 0.006376028060913086, + "tick": 186 + }, + { + "renderSeconds": 0.002669095993041992, + "simulationSeconds": 0.006487011909484863, + "tick": 187 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.0027009248733520508, + "simulationSeconds": 0.0064280033111572266, + "tick": 188 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.006325960159301758, + "tick": 189 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0.006437063217163086, + "tick": 190 + }, + { + "renderSeconds": 0.0031130313873291016, + "simulationSeconds": 0.006940960884094238, + "tick": 191 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.012194037437438965, + "tick": 193 + }, + { + "renderSeconds": 0.01043093204498291, + "simulationSeconds": 0.0065250396728515625, + "tick": 194 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.007133960723876953, + "tick": 195 + }, + { + "renderSeconds": 0.0033860206604003906, + "simulationSeconds": 0.0069561004638671875, + "tick": 196 + }, + { + "renderSeconds": 0.0029789209365844727, + "simulationSeconds": 0.006211042404174805, + "tick": 197 + }, + { + "renderSeconds": 0.002684950828552246, + "simulationSeconds": 0.006417036056518555, + "tick": 198 + }, + { + "renderSeconds": 0.002814054489135742, + "simulationSeconds": 0.012665987014770508, + "tick": 200 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.00597691535949707, + "tick": 201 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.007691025733947754, + "tick": 202 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 202 + }, + { + "renderSeconds": 0.0030039548873901367, + "simulationSeconds": 0.0063010454177856445, + "tick": 203 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.006502032279968262, + "tick": 204 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.006412982940673828, + "tick": 205 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.006422996520996094, + "tick": 206 + }, + { + "renderSeconds": 0.002695918083190918, + "simulationSeconds": 0.012372016906738281, + "tick": 208 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.0063669681549072266, + "tick": 209 + }, + { + "renderSeconds": 0.002991914749145508, + "simulationSeconds": 0.006597995758056641, + "tick": 210 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0, + "tick": 210 + }, + { + "renderSeconds": 0.0026268959045410156, + "simulationSeconds": 0.0064389705657958984, + "tick": 211 + }, + { + "renderSeconds": 0.003162980079650879, + "simulationSeconds": 0.006515026092529297, + "tick": 212 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.0063970088958740234, + "tick": 213 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.012948989868164062, + "tick": 215 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006754040718078613, + "tick": 216 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0.006494998931884766, + "tick": 217 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0, + "tick": 217 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0.006507992744445801, + "tick": 218 + }, + { + "renderSeconds": 0.0027310848236083984, + "simulationSeconds": 0.006227970123291016, + "tick": 219 + }, + { + "renderSeconds": 0.003170013427734375, + "simulationSeconds": 0.0062149763107299805, + "tick": 220 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.0064239501953125, + "tick": 221 + }, + { + "renderSeconds": 0.003080010414123535, + "simulationSeconds": 0.013455033302307129, + "tick": 223 + }, + { + "renderSeconds": 0.0026570558547973633, + "simulationSeconds": 0.006378054618835449, + "tick": 224 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.006699919700622559, + "tick": 225 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.006280064582824707, + "tick": 226 + }, + { + "renderSeconds": 0.0033769607543945312, + "simulationSeconds": 0.007474064826965332, + "tick": 227 + }, + { + "renderSeconds": 0.0027570724487304688, + "simulationSeconds": 0.006418943405151367, + "tick": 228 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.012835979461669922, + "tick": 230 + }, + { + "renderSeconds": 0.0032349824905395508, + "simulationSeconds": 0.0063250064849853516, + "tick": 231 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.0068929195404052734, + "tick": 232 + }, + { + "renderSeconds": 0.002865910530090332, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 232 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.0062580108642578125, + "tick": 233 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.006281018257141113, + "tick": 234 + }, + { + "renderSeconds": 0.0025949478149414062, + "simulationSeconds": 0.006256103515625, + "tick": 235 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.006211996078491211, + "tick": 236 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.012186050415039062, + "tick": 238 + }, + { + "renderSeconds": 0.0028400421142578125, + "simulationSeconds": 0.006840109825134277, + "tick": 239 + }, + { + "renderSeconds": 0.00312197208404541, + "simulationSeconds": 0.00627899169921875, + "tick": 240 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 9.5367431640625e-07, + "tick": 240 + }, + { + "renderSeconds": 0.0027729272842407227, + "simulationSeconds": 0.006723999977111816, + "tick": 241 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.006383061408996582, + "tick": 242 + }, + { + "renderSeconds": 0.0023729801177978516, + "simulationSeconds": 0.006836056709289551, + "tick": 243 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.012692928314208984, + "tick": 245 + }, + { + "renderSeconds": 0.0029839277267456055, + "simulationSeconds": 0.006471037864685059, + "tick": 246 + }, + { + "renderSeconds": 0.0031270980834960938, + "simulationSeconds": 0.00698089599609375, + "tick": 247 + }, + { + "renderSeconds": 0.0029010772705078125, + "simulationSeconds": 3.933906555175781e-06, + "tick": 247 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.006991028785705566, + "tick": 248 + }, + { + "renderSeconds": 0.002398967742919922, + "simulationSeconds": 0.006435990333557129, + "tick": 249 + }, + { + "renderSeconds": 0.0024950504302978516, + "simulationSeconds": 0.006846070289611816, + "tick": 250 + }, + { + "renderSeconds": 0.002528071403503418, + "simulationSeconds": 0.006224989891052246, + "tick": 251 + }, + { + "renderSeconds": 0.0027600526809692383, + "simulationSeconds": 0.012833952903747559, + "tick": 253 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.006705045700073242, + "tick": 254 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.0064220428466796875, + "tick": 255 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 0, + "tick": 255 + }, + { + "renderSeconds": 0.003043055534362793, + "simulationSeconds": 0.007383942604064941, + "tick": 256 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.006599903106689453, + "tick": 257 + }, + { + "renderSeconds": 0.002770066261291504, + "simulationSeconds": 0.006425023078918457, + "tick": 258 + }, + { + "renderSeconds": 0.0025739669799804688, + "simulationSeconds": 0.01246798038482666, + "tick": 260 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.0077970027923583984, + "tick": 261 + }, + { + "renderSeconds": 0.0034630298614501953, + "simulationSeconds": 0.0064239501953125, + "tick": 262 + }, + { + "renderSeconds": 0.002404928207397461, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 262 + }, + { + "renderSeconds": 0.0024160146713256836, + "simulationSeconds": 0.006420016288757324, + "tick": 263 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.006505012512207031, + "tick": 264 + }, + { + "renderSeconds": 0.0025600194931030273, + "simulationSeconds": 0.006212949752807617, + "tick": 265 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.006693005561828613, + "tick": 266 + }, + { + "renderSeconds": 0.00244295597076416, + "simulationSeconds": 0.01271200180053711, + "tick": 268 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.006242990493774414, + "tick": 269 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.007477998733520508, + "tick": 270 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03981658333214, + "moveTicks": 240, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 452, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.24356865882873535, + "preparationSeconds": 0.5803710222244263, + "reducedMotion": true, + "renderSeconds": 0.7474743127822876, + "repetition": 21, + "scenePreparationSeconds": 0.21707403659820557, + "simulationSeconds": 1.78581702709198, + "snapshotBuildCount": 259, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 26.979166665114462, + "callbackMaxMS": 44.11583335604519, + "postActionRecords": 257, + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.2103060483932495, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0006480216979980469, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006639957427978516, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0006420612335205078, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007309913635253906, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.005519986152648926, + "tick": 1 + }, + { + "renderSeconds": 0.0022630691528320312, + "simulationSeconds": 0.006805896759033203, + "tick": 2 + }, + { + "renderSeconds": 0.002477884292602539, + "simulationSeconds": 0.006855010986328125, + "tick": 3 + }, + { + "renderSeconds": 0.002435922622680664, + "simulationSeconds": 0.006680965423583984, + "tick": 4 + }, + { + "renderSeconds": 0.0026320219039916992, + "simulationSeconds": 0.012253999710083008, + "tick": 6 + }, + { + "renderSeconds": 0.0027649402618408203, + "simulationSeconds": 0.006453990936279297, + "tick": 7 + }, + { + "renderSeconds": 0.003242969512939453, + "simulationSeconds": 9.5367431640625e-07, + "tick": 7 + }, + { + "renderSeconds": 0.002606034278869629, + "simulationSeconds": 0.006399989128112793, + "tick": 8 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 0.007409930229187012, + "tick": 9 + }, + { + "renderSeconds": 0.0030089616775512695, + "simulationSeconds": 0.006396055221557617, + "tick": 10 + }, + { + "renderSeconds": 0.002765059471130371, + "simulationSeconds": 0.0067250728607177734, + "tick": 11 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0.013482928276062012, + "tick": 13 + }, + { + "renderSeconds": 0.0031800270080566406, + "simulationSeconds": 0.006608009338378906, + "tick": 14 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006985902786254883, + "tick": 15 + }, + { + "renderSeconds": 0.0031419992446899414, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.007055044174194336, + "tick": 16 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.006829023361206055, + "tick": 17 + }, + { + "renderSeconds": 0.003078937530517578, + "simulationSeconds": 0.006549954414367676, + "tick": 18 + }, + { + "renderSeconds": 0.002716064453125, + "simulationSeconds": 0.006559967994689941, + "tick": 19 + }, + { + "renderSeconds": 0.0030280351638793945, + "simulationSeconds": 0.012708902359008789, + "tick": 21 + }, + { + "renderSeconds": 0.0030090808868408203, + "simulationSeconds": 0.006543993949890137, + "tick": 22 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.006101012229919434, + "tick": 23 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.0062580108642578125, + "tick": 24 + }, + { + "renderSeconds": 0.002713918685913086, + "simulationSeconds": 0.006596922874450684, + "tick": 25 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.006147027015686035, + "tick": 26 + }, + { + "renderSeconds": 0.0024819374084472656, + "simulationSeconds": 0.012504100799560547, + "tick": 28 + }, + { + "renderSeconds": 0.0025250911712646484, + "simulationSeconds": 0.006148934364318848, + "tick": 29 + }, + { + "renderSeconds": 0.0032699108123779297, + "simulationSeconds": 0.006309032440185547, + "tick": 30 + }, + { + "renderSeconds": 0.0025249719619750977, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0025899410247802734, + "simulationSeconds": 0.006253957748413086, + "tick": 31 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.006111025810241699, + "tick": 32 + }, + { + "renderSeconds": 0.0024579763412475586, + "simulationSeconds": 0.006293058395385742, + "tick": 33 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.00604403018951416, + "tick": 34 + }, + { + "renderSeconds": 0.002568960189819336, + "simulationSeconds": 0.01252603530883789, + "tick": 36 + }, + { + "renderSeconds": 0.0023889541625976562, + "simulationSeconds": 0.006003975868225098, + "tick": 37 + }, + { + "renderSeconds": 0.002583026885986328, + "simulationSeconds": 9.5367431640625e-07, + "tick": 37 + }, + { + "renderSeconds": 0.002364039421081543, + "simulationSeconds": 0.0061910152435302734, + "tick": 38 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.007475018501281738, + "tick": 39 + }, + { + "renderSeconds": 0.00303494930267334, + "simulationSeconds": 0.00705409049987793, + "tick": 40 + }, + { + "renderSeconds": 0.003113985061645508, + "simulationSeconds": 0.007533073425292969, + "tick": 41 + }, + { + "renderSeconds": 0.0028829574584960938, + "simulationSeconds": 0.014105081558227539, + "tick": 43 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.006970047950744629, + "tick": 44 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.006914973258972168, + "tick": 45 + }, + { + "renderSeconds": 0.00324404239654541, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0029240846633911133, + "simulationSeconds": 0.006929993629455566, + "tick": 46 + }, + { + "renderSeconds": 0.002765059471130371, + "simulationSeconds": 0.006229996681213379, + "tick": 47 + }, + { + "renderSeconds": 0.0029178857803344727, + "simulationSeconds": 0.007169961929321289, + "tick": 48 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.0064820051193237305, + "tick": 49 + }, + { + "renderSeconds": 0.0027331113815307617, + "simulationSeconds": 0.011955976486206055, + "tick": 51 + }, + { + "renderSeconds": 0.0029430389404296875, + "simulationSeconds": 0.007140040397644043, + "tick": 52 + }, + { + "renderSeconds": 0.003174901008605957, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0.0075070858001708984, + "tick": 53 + }, + { + "renderSeconds": 0.004397034645080566, + "simulationSeconds": 0.007491946220397949, + "tick": 54 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.006849050521850586, + "tick": 55 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0.007017970085144043, + "tick": 56 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.013852953910827637, + "tick": 58 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.0067740678787231445, + "tick": 59 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.008087992668151855, + "tick": 60 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.006780028343200684, + "tick": 61 + }, + { + "renderSeconds": 0.0028470754623413086, + "simulationSeconds": 0.007169961929321289, + "tick": 62 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.007255077362060547, + "tick": 63 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 0.007063031196594238, + "tick": 64 + }, + { + "renderSeconds": 0.0031620264053344727, + "simulationSeconds": 0.01426994800567627, + "tick": 66 + }, + { + "renderSeconds": 0.002429962158203125, + "simulationSeconds": 0.006623029708862305, + "tick": 67 + }, + { + "renderSeconds": 0.002480030059814453, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.006261944770812988, + "tick": 68 + }, + { + "renderSeconds": 0.0032210350036621094, + "simulationSeconds": 0.006829023361206055, + "tick": 69 + }, + { + "renderSeconds": 0.0022429227828979492, + "simulationSeconds": 0.006796002388000488, + "tick": 70 + }, + { + "renderSeconds": 0.0022770166397094727, + "simulationSeconds": 0.0067909955978393555, + "tick": 71 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.012679100036621094, + "tick": 73 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.006891012191772461, + "tick": 74 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.007176041603088379, + "tick": 75 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.0022449493408203125, + "simulationSeconds": 0.006080031394958496, + "tick": 76 + }, + { + "renderSeconds": 0.0024210214614868164, + "simulationSeconds": 0.006260037422180176, + "tick": 77 + }, + { + "renderSeconds": 0.002599000930786133, + "simulationSeconds": 0.0064879655838012695, + "tick": 78 + }, + { + "renderSeconds": 0.002603888511657715, + "simulationSeconds": 0.006217002868652344, + "tick": 79 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.01426398754119873, + "tick": 81 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.008180022239685059, + "tick": 82 + }, + { + "renderSeconds": 0.002988100051879883, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.003728032112121582, + "simulationSeconds": 0.007941007614135742, + "tick": 83 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.009350061416625977, + "tick": 84 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.007079005241394043, + "tick": 85 + }, + { + "renderSeconds": 0.00306093692779541, + "simulationSeconds": 0.007069945335388184, + "tick": 86 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.014493942260742188, + "tick": 88 + }, + { + "renderSeconds": 0.0023369789123535156, + "simulationSeconds": 0.01197195053100586, + "tick": 90 + }, + { + "renderSeconds": 0.002483963966369629, + "simulationSeconds": 0.011890053749084473, + "tick": 92 + }, + { + "renderSeconds": 0.0023229122161865234, + "simulationSeconds": 0.011389017105102539, + "tick": 94 + }, + { + "renderSeconds": 0.002315044403076172, + "simulationSeconds": 0.010957956314086914, + "tick": 96 + }, + { + "renderSeconds": 0.002357006072998047, + "simulationSeconds": 0.010876059532165527, + "tick": 98 + }, + { + "renderSeconds": 0.002125978469848633, + "simulationSeconds": 0.010397076606750488, + "tick": 100 + }, + { + "renderSeconds": 0.001777052879333496, + "simulationSeconds": 0.008783936500549316, + "tick": 102 + }, + { + "renderSeconds": 0.002145051956176758, + "simulationSeconds": 0.005350947380065918, + "tick": 103 + }, + { + "renderSeconds": 0.0020329952239990234, + "simulationSeconds": 0.005293011665344238, + "tick": 104 + }, + { + "renderSeconds": 0.0020999908447265625, + "simulationSeconds": 0.005526065826416016, + "tick": 105 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.00212705135345459, + "simulationSeconds": 0.006477952003479004, + "tick": 106 + }, + { + "renderSeconds": 0.0021250247955322266, + "simulationSeconds": 0.006332039833068848, + "tick": 107 + }, + { + "renderSeconds": 0.0021439790725708008, + "simulationSeconds": 0.006599068641662598, + "tick": 108 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0.006535053253173828, + "tick": 109 + }, + { + "renderSeconds": 0.002496004104614258, + "simulationSeconds": 0.012388944625854492, + "tick": 111 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.007156968116760254, + "tick": 112 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.007097005844116211, + "tick": 113 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.00718998908996582, + "tick": 114 + }, + { + "renderSeconds": 0.0032500028610229492, + "simulationSeconds": 0.007259011268615723, + "tick": 115 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.007389068603515625, + "tick": 116 + }, + { + "renderSeconds": 0.0026149749755859375, + "simulationSeconds": 0.01371300220489502, + "tick": 118 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.007360100746154785, + "tick": 119 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.006684064865112305, + "tick": 120 + }, + { + "renderSeconds": 0.0026590824127197266, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0028649568557739258, + "simulationSeconds": 0.006713986396789551, + "tick": 121 + }, + { + "renderSeconds": 0.0023070573806762695, + "simulationSeconds": 0.007118940353393555, + "tick": 122 + }, + { + "renderSeconds": 0.0023239850997924805, + "simulationSeconds": 0.00651705265045166, + "tick": 123 + }, + { + "renderSeconds": 0.0024069547653198242, + "simulationSeconds": 0.006261944770812988, + "tick": 124 + }, + { + "renderSeconds": 0.0023409128189086914, + "simulationSeconds": 0.01238107681274414, + "tick": 126 + }, + { + "renderSeconds": 0.002274036407470703, + "simulationSeconds": 0.00677490234375, + "tick": 127 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0025740861892700195, + "simulationSeconds": 0.006255984306335449, + "tick": 128 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.00634610652923584, + "tick": 129 + }, + { + "renderSeconds": 0.002527952194213867, + "simulationSeconds": 0.0063169002532958984, + "tick": 130 + }, + { + "renderSeconds": 0.0020439624786376953, + "simulationSeconds": 0.006506085395812988, + "tick": 131 + }, + { + "renderSeconds": 0.0024880170822143555, + "simulationSeconds": 0.012420058250427246, + "tick": 133 + }, + { + "renderSeconds": 0.003135085105895996, + "simulationSeconds": 0.006338953971862793, + "tick": 134 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.006363987922668457, + "tick": 135 + }, + { + "renderSeconds": 0.002756953239440918, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.0028499364852905273, + "simulationSeconds": 0.006011009216308594, + "tick": 136 + }, + { + "renderSeconds": 0.0024700164794921875, + "simulationSeconds": 0.006036043167114258, + "tick": 137 + }, + { + "renderSeconds": 0.0024590492248535156, + "simulationSeconds": 0.00592494010925293, + "tick": 138 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.007028937339782715, + "tick": 139 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.01126706600189209, + "tick": 141 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.005908966064453125, + "tick": 142 + }, + { + "renderSeconds": 0.003042936325073242, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 142 + }, + { + "renderSeconds": 0.0024160146713256836, + "simulationSeconds": 0.006303906440734863, + "tick": 143 + }, + { + "renderSeconds": 0.0024650096893310547, + "simulationSeconds": 0.006811022758483887, + "tick": 144 + }, + { + "renderSeconds": 0.002891063690185547, + "simulationSeconds": 0.006309032440185547, + "tick": 145 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.006294965744018555, + "tick": 146 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.012447953224182129, + "tick": 148 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006662964820861816, + "tick": 149 + }, + { + "renderSeconds": 0.002628922462463379, + "simulationSeconds": 0.006296992301940918, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03973437499371357, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 224, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.1253831386566162, + "preparationSeconds": 0.4914970397949219, + "reducedMotion": false, + "renderSeconds": 0.38731372356414795, + "repetition": 21, + "scenePreparationSeconds": 0.1682649850845337, + "simulationSeconds": 0.978108286857605, + "snapshotBuildCount": 145, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 31.083916663192213, + "callbackMaxMS": 35.04287500982173, + "postActionRecords": 143, + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.22849547863006592, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0008029937744140625, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007870197296142578, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007480382919311523, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.005711078643798828, + "tick": 1 + }, + { + "renderSeconds": 0.002460002899169922, + "simulationSeconds": 0.006376028060913086, + "tick": 2 + }, + { + "renderSeconds": 0.002731919288635254, + "simulationSeconds": 0.006560921669006348, + "tick": 3 + }, + { + "renderSeconds": 0.0034799575805664062, + "simulationSeconds": 0.008997082710266113, + "tick": 4 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.007778048515319824, + "tick": 5 + }, + { + "renderSeconds": 0.0030220746994018555, + "simulationSeconds": 0.00660097599029541, + "tick": 6 + }, + { + "renderSeconds": 0.0036519765853881836, + "simulationSeconds": 0.013383030891418457, + "tick": 8 + }, + { + "renderSeconds": 0.0031800270080566406, + "simulationSeconds": 0.009119033813476562, + "tick": 9 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0.006927013397216797, + "tick": 10 + }, + { + "renderSeconds": 0.0028519630432128906, + "simulationSeconds": 0.012375950813293457, + "tick": 12 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.006381988525390625, + "tick": 13 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.007062077522277832, + "tick": 14 + }, + { + "renderSeconds": 0.003080010414123535, + "simulationSeconds": 0.007032990455627441, + "tick": 15 + }, + { + "renderSeconds": 0.0031790733337402344, + "simulationSeconds": 0.0075119733810424805, + "tick": 16 + }, + { + "renderSeconds": 0.0031560659408569336, + "simulationSeconds": 0.007562994956970215, + "tick": 17 + }, + { + "renderSeconds": 0.0029730796813964844, + "simulationSeconds": 0.007359027862548828, + "tick": 18 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.014281988143920898, + "tick": 20 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.0064820051193237305, + "tick": 21 + }, + { + "renderSeconds": 0.0026619434356689453, + "simulationSeconds": 0.006317019462585449, + "tick": 22 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.006342053413391113, + "tick": 23 + }, + { + "renderSeconds": 0.002777099609375, + "simulationSeconds": 0.005806922912597656, + "tick": 24 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.011355042457580566, + "tick": 25 + }, + { + "renderSeconds": 0.002716064453125, + "simulationSeconds": 0.0062819719314575195, + "tick": 26 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.0062400102615356445, + "tick": 27 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.006260037422180176, + "tick": 28 + }, + { + "renderSeconds": 0.003126978874206543, + "simulationSeconds": 0.006296038627624512, + "tick": 29 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.006415963172912598, + "tick": 30 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.0062580108642578125, + "tick": 31 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.006546974182128906, + "tick": 32 + }, + { + "renderSeconds": 0.0027889013290405273, + "simulationSeconds": 0.00722503662109375, + "tick": 33 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.006348967552185059, + "tick": 34 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006178021430969238, + "tick": 35 + }, + { + "renderSeconds": 0.0028760433197021484, + "simulationSeconds": 0.006319999694824219, + "tick": 36 + }, + { + "renderSeconds": 0.0026750564575195312, + "simulationSeconds": 0.006503939628601074, + "tick": 37 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006152987480163574, + "tick": 38 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.006258964538574219, + "tick": 39 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.006898999214172363, + "tick": 40 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.006145954132080078, + "tick": 41 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.00651097297668457, + "tick": 42 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006235003471374512, + "tick": 43 + }, + { + "renderSeconds": 0.002968907356262207, + "simulationSeconds": 0.006472945213317871, + "tick": 44 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.006309986114501953, + "tick": 45 + }, + { + "renderSeconds": 0.002846956253051758, + "simulationSeconds": 0.006555080413818359, + "tick": 46 + }, + { + "renderSeconds": 0.002913951873779297, + "simulationSeconds": 0.008035063743591309, + "tick": 47 + }, + { + "renderSeconds": 0.00495302677154541, + "simulationSeconds": 0.0064220428466796875, + "tick": 48 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.006448984146118164, + "tick": 49 + }, + { + "renderSeconds": 0.002698063850402832, + "simulationSeconds": 0.006779909133911133, + "tick": 50 + }, + { + "renderSeconds": 0.00289309024810791, + "simulationSeconds": 0.012598991394042969, + "tick": 52 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.012360095977783203, + "tick": 54 + }, + { + "renderSeconds": 0.0029178857803344727, + "simulationSeconds": 0.006251096725463867, + "tick": 55 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.00645899772644043, + "tick": 56 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.006519913673400879, + "tick": 57 + }, + { + "renderSeconds": 0.0030219554901123047, + "simulationSeconds": 0.006412982940673828, + "tick": 58 + }, + { + "renderSeconds": 0.006322026252746582, + "simulationSeconds": 0.0061910152435302734, + "tick": 59 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.007138967514038086, + "tick": 60 + }, + { + "renderSeconds": 0.0033409595489501953, + "simulationSeconds": 0.006350994110107422, + "tick": 61 + }, + { + "renderSeconds": 0.002968907356262207, + "simulationSeconds": 0.006994009017944336, + "tick": 62 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.0064029693603515625, + "tick": 63 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.012460947036743164, + "tick": 65 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.0062400102615356445, + "tick": 66 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.006370067596435547, + "tick": 67 + }, + { + "renderSeconds": 0.0026780366897583008, + "simulationSeconds": 0.006083965301513672, + "tick": 68 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.0069550275802612305, + "tick": 69 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 0.00634002685546875, + "tick": 70 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.0068891048431396484, + "tick": 71 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.006343960762023926, + "tick": 72 + }, + { + "renderSeconds": 0.0029430389404296875, + "simulationSeconds": 0.006263017654418945, + "tick": 73 + }, + { + "renderSeconds": 0.002812981605529785, + "simulationSeconds": 0.006208062171936035, + "tick": 74 + }, + { + "renderSeconds": 0.0026520490646362305, + "simulationSeconds": 0.006413936614990234, + "tick": 75 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.006559014320373535, + "tick": 76 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.0067549943923950195, + "tick": 77 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.0061490535736083984, + "tick": 78 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.0065729618072509766, + "tick": 79 + }, + { + "renderSeconds": 0.00306093692779541, + "simulationSeconds": 0.006112933158874512, + "tick": 80 + }, + { + "renderSeconds": 0.0025870800018310547, + "simulationSeconds": 0.006009936332702637, + "tick": 81 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.0065860748291015625, + "tick": 82 + }, + { + "renderSeconds": 0.0030069351196289062, + "simulationSeconds": 0.006289005279541016, + "tick": 83 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006564974784851074, + "tick": 84 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.006260037422180176, + "tick": 85 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.006268024444580078, + "tick": 86 + }, + { + "renderSeconds": 0.0024900436401367188, + "simulationSeconds": 0.006971955299377441, + "tick": 87 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.0064820051193237305, + "tick": 88 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.0064040422439575195, + "tick": 89 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.006382942199707031, + "tick": 90 + }, + { + "renderSeconds": 0.002777099609375, + "simulationSeconds": 0.006353974342346191, + "tick": 91 + }, + { + "renderSeconds": 0.0025979280471801758, + "simulationSeconds": 0.006765007972717285, + "tick": 92 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0.006433010101318359, + "tick": 93 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.007094025611877441, + "tick": 94 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.006554007530212402, + "tick": 95 + }, + { + "renderSeconds": 0.0028420686721801758, + "simulationSeconds": 0.006245017051696777, + "tick": 96 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.006415009498596191, + "tick": 97 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.006451964378356934, + "tick": 98 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.006402015686035156, + "tick": 99 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.006435990333557129, + "tick": 100 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.007339000701904297, + "tick": 101 + }, + { + "renderSeconds": 0.003053903579711914, + "simulationSeconds": 0.006512999534606934, + "tick": 102 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0.006206989288330078, + "tick": 103 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.006230950355529785, + "tick": 104 + }, + { + "renderSeconds": 0.0028710365295410156, + "simulationSeconds": 0.0064809322357177734, + "tick": 105 + }, + { + "renderSeconds": 0.0028039216995239258, + "simulationSeconds": 0.010153055191040039, + "tick": 106 + }, + { + "renderSeconds": 0.002969980239868164, + "simulationSeconds": 0.006456971168518066, + "tick": 107 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.007136106491088867, + "tick": 108 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.006058096885681152, + "tick": 109 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.006443977355957031, + "tick": 110 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0.006273984909057617, + "tick": 111 + }, + { + "renderSeconds": 0.002931952476501465, + "simulationSeconds": 0.006323099136352539, + "tick": 112 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006136059761047363, + "tick": 113 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.006448984146118164, + "tick": 114 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.006466031074523926, + "tick": 115 + }, + { + "renderSeconds": 0.002836942672729492, + "simulationSeconds": 0.006381988525390625, + "tick": 116 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.006244063377380371, + "tick": 117 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.0061910152435302734, + "tick": 118 + }, + { + "renderSeconds": 0.002424001693725586, + "simulationSeconds": 0.00636899471282959, + "tick": 119 + }, + { + "renderSeconds": 0.0027370452880859375, + "simulationSeconds": 0.006269097328186035, + "tick": 120 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.006670951843261719, + "tick": 121 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.007055044174194336, + "tick": 122 + }, + { + "renderSeconds": 0.0025290250778198242, + "simulationSeconds": 0.006618022918701172, + "tick": 123 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.006514072418212891, + "tick": 124 + }, + { + "renderSeconds": 0.0026519298553466797, + "simulationSeconds": 0.006595015525817871, + "tick": 125 + }, + { + "renderSeconds": 0.0026129484176635742, + "simulationSeconds": 0.00636601448059082, + "tick": 126 + }, + { + "renderSeconds": 0.002540111541748047, + "simulationSeconds": 0.00657200813293457, + "tick": 127 + }, + { + "renderSeconds": 0.0026569366455078125, + "simulationSeconds": 0.006618022918701172, + "tick": 128 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.0067130327224731445, + "tick": 129 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.0064029693603515625, + "tick": 130 + }, + { + "renderSeconds": 0.0034630298614501953, + "simulationSeconds": 0.007182955741882324, + "tick": 131 + }, + { + "renderSeconds": 0.010782957077026367, + "simulationSeconds": 0.007843971252441406, + "tick": 132 + }, + { + "renderSeconds": 0.002564072608947754, + "simulationSeconds": 0.006306052207946777, + "tick": 133 + }, + { + "renderSeconds": 0.0028868913650512695, + "simulationSeconds": 0.006579041481018066, + "tick": 134 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.006332993507385254, + "tick": 135 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.006225943565368652, + "tick": 136 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.006098031997680664, + "tick": 137 + }, + { + "renderSeconds": 0.0029889345169067383, + "simulationSeconds": 0.006487011909484863, + "tick": 138 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0.006006002426147461, + "tick": 139 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.006662964820861816, + "tick": 140 + }, + { + "renderSeconds": 0.002393007278442383, + "simulationSeconds": 0.00624394416809082, + "tick": 141 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006201982498168945, + "tick": 142 + }, + { + "renderSeconds": 0.0027838945388793945, + "simulationSeconds": 0.006376028060913086, + "tick": 143 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.006310939788818359, + "tick": 144 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.006476998329162598, + "tick": 145 + }, + { + "renderSeconds": 0.002562999725341797, + "simulationSeconds": 0.0062400102615356445, + "tick": 146 + }, + { + "renderSeconds": 0.0024700164794921875, + "simulationSeconds": 0.0070999860763549805, + "tick": 147 + }, + { + "renderSeconds": 0.002523064613342285, + "simulationSeconds": 0.006381988525390625, + "tick": 148 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.00652003288269043, + "tick": 149 + }, + { + "renderSeconds": 0.002640962600708008, + "simulationSeconds": 0.006062030792236328, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04026579164201394, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 228, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.13353049755096436, + "preparationSeconds": 0.44460201263427734, + "reducedMotion": true, + "renderSeconds": 0.42246294021606445, + "repetition": 21, + "scenePreparationSeconds": 0.1435079574584961, + "simulationSeconds": 0.9890797138214111, + "snapshotBuildCount": 147, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 39.32687500491738, + "postActionRecords": 145, + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.8373398780822754, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0008339881896972656, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.00096893310546875, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011429786682128906, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008469820022583008, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0034559965133666992, + "simulationSeconds": 0.011474013328552246, + "tick": 2 + }, + { + "renderSeconds": 0.0029410123825073242, + "simulationSeconds": 0.006078004837036133, + "tick": 3 + }, + { + "renderSeconds": 0.0026450157165527344, + "simulationSeconds": 0.006494045257568359, + "tick": 4 + }, + { + "renderSeconds": 0.003309011459350586, + "simulationSeconds": 0.00633394718170166, + "tick": 5 + }, + { + "renderSeconds": 0.0029859542846679688, + "simulationSeconds": 0.006129026412963867, + "tick": 6 + }, + { + "renderSeconds": 0.0030999183654785156, + "simulationSeconds": 0.005970001220703125, + "tick": 7 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.002395033836364746, + "simulationSeconds": 0.007130980491638184, + "tick": 8 + }, + { + "renderSeconds": 0.003020048141479492, + "simulationSeconds": 0.013086915016174316, + "tick": 10 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.006322979927062988, + "tick": 11 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0.006318926811218262, + "tick": 12 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0.006408095359802246, + "tick": 13 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.006206989288330078, + "tick": 14 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006330966949462891, + "tick": 15 + }, + { + "renderSeconds": 0.0025479793548583984, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0028829574584960938, + "simulationSeconds": 0.013363003730773926, + "tick": 17 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.006542086601257324, + "tick": 18 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.0061539411544799805, + "tick": 19 + }, + { + "renderSeconds": 0.0030020475387573242, + "simulationSeconds": 0.006667017936706543, + "tick": 20 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0.0067729949951171875, + "tick": 21 + }, + { + "renderSeconds": 0.0026439428329467773, + "simulationSeconds": 0.006512999534606934, + "tick": 22 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.006237983703613281, + "tick": 23 + }, + { + "renderSeconds": 0.002664923667907715, + "simulationSeconds": 0.012459993362426758, + "tick": 25 + }, + { + "renderSeconds": 0.0031200647354125977, + "simulationSeconds": 0.006723999977111816, + "tick": 26 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.0063370466232299805, + "tick": 27 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 0.006888031959533691, + "tick": 28 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.006344914436340332, + "tick": 29 + }, + { + "renderSeconds": 0.0031790733337402344, + "simulationSeconds": 0.006443023681640625, + "tick": 30 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.002539992332458496, + "simulationSeconds": 0.012735962867736816, + "tick": 32 + }, + { + "renderSeconds": 0.003204941749572754, + "simulationSeconds": 0.006331920623779297, + "tick": 33 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.006097078323364258, + "tick": 34 + }, + { + "renderSeconds": 0.002209901809692383, + "simulationSeconds": 0.006880998611450195, + "tick": 35 + }, + { + "renderSeconds": 0.0026270151138305664, + "simulationSeconds": 0.006433963775634766, + "tick": 36 + }, + { + "renderSeconds": 0.0026569366455078125, + "simulationSeconds": 0.0066070556640625, + "tick": 37 + }, + { + "renderSeconds": 0.003035902976989746, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.002195000648498535, + "simulationSeconds": 0.006569027900695801, + "tick": 38 + }, + { + "renderSeconds": 0.002775907516479492, + "simulationSeconds": 0.012339949607849121, + "tick": 40 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.006758928298950195, + "tick": 41 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006808042526245117, + "tick": 42 + }, + { + "renderSeconds": 0.00274503231048584, + "simulationSeconds": 0.0065119266510009766, + "tick": 43 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.006667971611022949, + "tick": 44 + }, + { + "renderSeconds": 0.003101944923400879, + "simulationSeconds": 0.006547093391418457, + "tick": 45 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.012045979499816895, + "tick": 47 + }, + { + "renderSeconds": 0.0035179853439331055, + "simulationSeconds": 0.0067969560623168945, + "tick": 48 + }, + { + "renderSeconds": 0.00286710262298584, + "simulationSeconds": 0.006080985069274902, + "tick": 49 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.007799029350280762, + "tick": 50 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.0067501068115234375, + "tick": 51 + }, + { + "renderSeconds": 0.0034210681915283203, + "simulationSeconds": 0.006649017333984375, + "tick": 52 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.002619028091430664, + "simulationSeconds": 0.0066950321197509766, + "tick": 53 + }, + { + "renderSeconds": 0.002635955810546875, + "simulationSeconds": 0.012369036674499512, + "tick": 55 + }, + { + "renderSeconds": 0.0034641027450561523, + "simulationSeconds": 0.006729006767272949, + "tick": 56 + }, + { + "renderSeconds": 0.0029609203338623047, + "simulationSeconds": 0.0063838958740234375, + "tick": 57 + }, + { + "renderSeconds": 0.0030339956283569336, + "simulationSeconds": 0.006335020065307617, + "tick": 58 + }, + { + "renderSeconds": 0.0026650428771972656, + "simulationSeconds": 0.006209969520568848, + "tick": 59 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.00625300407409668, + "tick": 60 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.012312054634094238, + "tick": 62 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.0062160491943359375, + "tick": 63 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.006123065948486328, + "tick": 64 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.006740093231201172, + "tick": 65 + }, + { + "renderSeconds": 0.0025979280471801758, + "simulationSeconds": 0.006340980529785156, + "tick": 66 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.006497979164123535, + "tick": 67 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 67 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.007345080375671387, + "tick": 68 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.014436006546020508, + "tick": 70 + }, + { + "renderSeconds": 0.002528071403503418, + "simulationSeconds": 0.007018923759460449, + "tick": 71 + }, + { + "renderSeconds": 0.0025941133499145508, + "simulationSeconds": 0.006361961364746094, + "tick": 72 + }, + { + "renderSeconds": 0.0028830766677856445, + "simulationSeconds": 0.006796002388000488, + "tick": 73 + }, + { + "renderSeconds": 0.002904057502746582, + "simulationSeconds": 0.006047964096069336, + "tick": 74 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.006420016288757324, + "tick": 75 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0025380849838256836, + "simulationSeconds": 0.013047933578491211, + "tick": 77 + }, + { + "renderSeconds": 0.0029979944229125977, + "simulationSeconds": 0.006101012229919434, + "tick": 78 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.006606936454772949, + "tick": 79 + }, + { + "renderSeconds": 0.002606034278869629, + "simulationSeconds": 0.006129026412963867, + "tick": 80 + }, + { + "renderSeconds": 0.002592921257019043, + "simulationSeconds": 0.006613016128540039, + "tick": 81 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.006718993186950684, + "tick": 82 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.0061550140380859375, + "tick": 83 + }, + { + "renderSeconds": 0.0027201175689697266, + "simulationSeconds": 0.013458967208862305, + "tick": 85 + }, + { + "renderSeconds": 0.003141045570373535, + "simulationSeconds": 0.0065850019454956055, + "tick": 86 + }, + { + "renderSeconds": 0.0043419599533081055, + "simulationSeconds": 0.006378054618835449, + "tick": 87 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.006425023078918457, + "tick": 88 + }, + { + "renderSeconds": 0.002926945686340332, + "simulationSeconds": 0.0064820051193237305, + "tick": 89 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.006203055381774902, + "tick": 90 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.012152910232543945, + "tick": 92 + }, + { + "renderSeconds": 0.0028420686721801758, + "simulationSeconds": 0.006400942802429199, + "tick": 93 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.006214022636413574, + "tick": 94 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0.0068100690841674805, + "tick": 95 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.0063059329986572266, + "tick": 96 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.00648808479309082, + "tick": 97 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.006091952323913574, + "tick": 98 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.01244497299194336, + "tick": 100 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.006193041801452637, + "tick": 101 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.006893038749694824, + "tick": 102 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0.006477952003479004, + "tick": 103 + }, + { + "renderSeconds": 0.0028390884399414062, + "simulationSeconds": 0.006456971168518066, + "tick": 104 + }, + { + "renderSeconds": 0.0025849342346191406, + "simulationSeconds": 0.006435036659240723, + "tick": 105 + }, + { + "renderSeconds": 0.002891063690185547, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 0.01240396499633789, + "tick": 107 + }, + { + "renderSeconds": 0.0033550262451171875, + "simulationSeconds": 0.006518006324768066, + "tick": 108 + }, + { + "renderSeconds": 0.0026149749755859375, + "simulationSeconds": 0.006479978561401367, + "tick": 109 + }, + { + "renderSeconds": 0.0027540922164916992, + "simulationSeconds": 0.007586956024169922, + "tick": 110 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.0065909624099731445, + "tick": 111 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.006456971168518066, + "tick": 112 + }, + { + "renderSeconds": 0.0030820369720458984, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.006268024444580078, + "tick": 113 + }, + { + "renderSeconds": 0.00268399715423584, + "simulationSeconds": 0.012353062629699707, + "tick": 115 + }, + { + "renderSeconds": 0.0028810501098632812, + "simulationSeconds": 0.006232023239135742, + "tick": 116 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0.006969928741455078, + "tick": 117 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.006186962127685547, + "tick": 118 + }, + { + "renderSeconds": 0.0029898881912231445, + "simulationSeconds": 0.006296992301940918, + "tick": 119 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.006158113479614258, + "tick": 120 + }, + { + "renderSeconds": 0.0029119253158569336, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.012270927429199219, + "tick": 122 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006265997886657715, + "tick": 123 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.006569027900695801, + "tick": 124 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.006376981735229492, + "tick": 125 + }, + { + "renderSeconds": 0.0025539398193359375, + "simulationSeconds": 0.006265997886657715, + "tick": 126 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006222963333129883, + "tick": 127 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.00268709659576416, + "simulationSeconds": 0.006261944770812988, + "tick": 128 + }, + { + "renderSeconds": 0.0026590824127197266, + "simulationSeconds": 0.012788057327270508, + "tick": 130 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0.0063800811767578125, + "tick": 131 + }, + { + "renderSeconds": 0.002635955810546875, + "simulationSeconds": 0.006350994110107422, + "tick": 132 + }, + { + "renderSeconds": 0.002541065216064453, + "simulationSeconds": 0.006531953811645508, + "tick": 133 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006204009056091309, + "tick": 134 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.006507992744445801, + "tick": 135 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.012164115905761719, + "tick": 137 + }, + { + "renderSeconds": 0.003050088882446289, + "simulationSeconds": 0.006093025207519531, + "tick": 138 + }, + { + "renderSeconds": 0.0033190250396728516, + "simulationSeconds": 0.006365060806274414, + "tick": 139 + }, + { + "renderSeconds": 0.002759099006652832, + "simulationSeconds": 0.00677800178527832, + "tick": 140 + }, + { + "renderSeconds": 0.002898097038269043, + "simulationSeconds": 0.007715940475463867, + "tick": 141 + }, + { + "renderSeconds": 0.003381967544555664, + "simulationSeconds": 0.006019949913024902, + "tick": 142 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.0064809322357177734, + "tick": 143 + }, + { + "renderSeconds": 0.002635955810546875, + "simulationSeconds": 0.012050986289978027, + "tick": 145 + }, + { + "renderSeconds": 0.003114938735961914, + "simulationSeconds": 0.006124019622802734, + "tick": 146 + }, + { + "renderSeconds": 0.0035840272903442383, + "simulationSeconds": 0.006811976432800293, + "tick": 147 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.0070029497146606445, + "tick": 148 + }, + { + "renderSeconds": 0.0028829574584960938, + "simulationSeconds": 0.005753993988037109, + "tick": 149 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.006173968315124512, + "tick": 150 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0, + "tick": 150 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.012192964553833008, + "tick": 152 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.006276965141296387, + "tick": 153 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.006021976470947266, + "tick": 154 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.005777955055236816, + "tick": 155 + }, + { + "renderSeconds": 0.0027579069137573242, + "simulationSeconds": 0.006196022033691406, + "tick": 156 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.0059729814529418945, + "tick": 157 + }, + { + "renderSeconds": 0.003219008445739746, + "simulationSeconds": 0, + "tick": 157 + }, + { + "renderSeconds": 0.0025110244750976562, + "simulationSeconds": 0.006181001663208008, + "tick": 158 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.013305068016052246, + "tick": 160 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.00704503059387207, + "tick": 161 + }, + { + "renderSeconds": 0.0024390220642089844, + "simulationSeconds": 0.005797982215881348, + "tick": 162 + }, + { + "renderSeconds": 0.002485990524291992, + "simulationSeconds": 0.006319999694824219, + "tick": 163 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.006935000419616699, + "tick": 164 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.0069429874420166016, + "tick": 165 + }, + { + "renderSeconds": 0.0028009414672851562, + "simulationSeconds": 0, + "tick": 165 + }, + { + "renderSeconds": 0.003157973289489746, + "simulationSeconds": 0.013994932174682617, + "tick": 167 + }, + { + "renderSeconds": 0.003220081329345703, + "simulationSeconds": 0.0069609880447387695, + "tick": 168 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.0073490142822265625, + "tick": 169 + }, + { + "renderSeconds": 0.0032689571380615234, + "simulationSeconds": 0.007603049278259277, + "tick": 170 + }, + { + "renderSeconds": 0.0038570165634155273, + "simulationSeconds": 0.007169961929321289, + "tick": 171 + }, + { + "renderSeconds": 0.0037910938262939453, + "simulationSeconds": 0.009108901023864746, + "tick": 172 + }, + { + "renderSeconds": 0.002931952476501465, + "simulationSeconds": 0.013960003852844238, + "tick": 174 + }, + { + "renderSeconds": 0.0025779008865356445, + "simulationSeconds": 0.007026076316833496, + "tick": 175 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.006400942802429199, + "tick": 176 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.006781101226806641, + "tick": 177 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.006271004676818848, + "tick": 178 + }, + { + "renderSeconds": 0.0028340816497802734, + "simulationSeconds": 0.006250977516174316, + "tick": 179 + }, + { + "renderSeconds": 0.003030061721801758, + "simulationSeconds": 0.00621795654296875, + "tick": 180 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.0027059316635131836, + "simulationSeconds": 0.013072967529296875, + "tick": 182 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.0067130327224731445, + "tick": 183 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.006029009819030762, + "tick": 184 + }, + { + "renderSeconds": 0.0024999380111694336, + "simulationSeconds": 0.006222963333129883, + "tick": 185 + }, + { + "renderSeconds": 0.0025489330291748047, + "simulationSeconds": 0.006716012954711914, + "tick": 186 + }, + { + "renderSeconds": 0.002703070640563965, + "simulationSeconds": 0.0060749053955078125, + "tick": 187 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.0029979944229125977, + "simulationSeconds": 0.0060939788818359375, + "tick": 188 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.013067960739135742, + "tick": 190 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.006621003150939941, + "tick": 191 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.006609082221984863, + "tick": 192 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.006883025169372559, + "tick": 193 + }, + { + "renderSeconds": 0.0026360750198364258, + "simulationSeconds": 0.006407976150512695, + "tick": 194 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.006440997123718262, + "tick": 195 + }, + { + "renderSeconds": 0.0027670860290527344, + "simulationSeconds": 9.5367431640625e-07, + "tick": 195 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.013486981391906738, + "tick": 197 + }, + { + "renderSeconds": 0.0031909942626953125, + "simulationSeconds": 0.0068520307540893555, + "tick": 198 + }, + { + "renderSeconds": 0.003143906593322754, + "simulationSeconds": 0.005964994430541992, + "tick": 199 + }, + { + "renderSeconds": 0.0024880170822143555, + "simulationSeconds": 0.006788015365600586, + "tick": 200 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006443023681640625, + "tick": 201 + }, + { + "renderSeconds": 0.0026140213012695312, + "simulationSeconds": 0.006672978401184082, + "tick": 202 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.0028679370880126953, + "simulationSeconds": 0.0066950321197509766, + "tick": 203 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.012614011764526367, + "tick": 205 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.006306052207946777, + "tick": 206 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.006742000579833984, + "tick": 207 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.006730914115905762, + "tick": 208 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.0062760114669799805, + "tick": 209 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.006044983863830566, + "tick": 210 + }, + { + "renderSeconds": 0.0027059316635131836, + "simulationSeconds": 0, + "tick": 210 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.012681961059570312, + "tick": 212 + }, + { + "renderSeconds": 0.0030739307403564453, + "simulationSeconds": 0.006178021430969238, + "tick": 213 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.006370067596435547, + "tick": 214 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0.006254076957702637, + "tick": 215 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.006451010704040527, + "tick": 216 + }, + { + "renderSeconds": 0.0026640892028808594, + "simulationSeconds": 0.006415963172912598, + "tick": 217 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0, + "tick": 217 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.006183981895446777, + "tick": 218 + }, + { + "renderSeconds": 0.004468083381652832, + "simulationSeconds": 0.012602925300598145, + "tick": 220 + }, + { + "renderSeconds": 0.0027649402618408203, + "simulationSeconds": 0.006497979164123535, + "tick": 221 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.006528019905090332, + "tick": 222 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.0064389705657958984, + "tick": 223 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.006214022636413574, + "tick": 224 + }, + { + "renderSeconds": 0.0025720596313476562, + "simulationSeconds": 0.006317019462585449, + "tick": 225 + }, + { + "renderSeconds": 0.002720952033996582, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.003223896026611328, + "simulationSeconds": 0.01329803466796875, + "tick": 227 + }, + { + "renderSeconds": 0.002855062484741211, + "simulationSeconds": 0.007931947708129883, + "tick": 228 + }, + { + "renderSeconds": 0.0029469728469848633, + "simulationSeconds": 0.006265997886657715, + "tick": 229 + }, + { + "renderSeconds": 0.0033360719680786133, + "simulationSeconds": 0.006909012794494629, + "tick": 230 + }, + { + "renderSeconds": 0.0032460689544677734, + "simulationSeconds": 0.006398916244506836, + "tick": 231 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.006211042404174805, + "tick": 232 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0, + "tick": 232 + }, + { + "renderSeconds": 0.0021599531173706055, + "simulationSeconds": 0.006273984909057617, + "tick": 233 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.012688040733337402, + "tick": 235 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006134986877441406, + "tick": 236 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.006609082221984863, + "tick": 237 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.006346940994262695, + "tick": 238 + }, + { + "renderSeconds": 0.0028809309005737305, + "simulationSeconds": 0.006680965423583984, + "tick": 239 + }, + { + "renderSeconds": 0.003206014633178711, + "simulationSeconds": 0.0062760114669799805, + "tick": 240 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0, + "tick": 240 + }, + { + "renderSeconds": 0.0026160478591918945, + "simulationSeconds": 0.012097001075744629, + "tick": 242 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.007104992866516113, + "tick": 243 + }, + { + "renderSeconds": 0.0029990673065185547, + "simulationSeconds": 0.006217002868652344, + "tick": 244 + }, + { + "renderSeconds": 0.002819061279296875, + "simulationSeconds": 0.006706953048706055, + "tick": 245 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.0061609745025634766, + "tick": 246 + }, + { + "renderSeconds": 0.00318300724029541, + "simulationSeconds": 0.00625300407409668, + "tick": 247 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 9.5367431640625e-07, + "tick": 247 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.0067059993743896484, + "tick": 248 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.012887001037597656, + "tick": 250 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.006332993507385254, + "tick": 251 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.006862998008728027, + "tick": 252 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0.006340980529785156, + "tick": 253 + }, + { + "renderSeconds": 0.0028989315032958984, + "simulationSeconds": 0.0062950849533081055, + "tick": 254 + }, + { + "renderSeconds": 0.0030061006546020508, + "simulationSeconds": 0.006116986274719238, + "tick": 255 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 9.5367431640625e-07, + "tick": 255 + }, + { + "renderSeconds": 0.002617955207824707, + "simulationSeconds": 0.01234900951385498, + "tick": 257 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006857037544250488, + "tick": 258 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.0067059993743896484, + "tick": 259 + }, + { + "renderSeconds": 0.0032089948654174805, + "simulationSeconds": 0.006358027458190918, + "tick": 260 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.006863951683044434, + "tick": 261 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.006363987922668457, + "tick": 262 + }, + { + "renderSeconds": 0.0026590824127197266, + "simulationSeconds": 0, + "tick": 262 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.006326913833618164, + "tick": 263 + }, + { + "renderSeconds": 0.0025180578231811523, + "simulationSeconds": 0.01285099983215332, + "tick": 265 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.00598299503326416, + "tick": 266 + }, + { + "renderSeconds": 0.0027009248733520508, + "simulationSeconds": 0.006747007369995117, + "tick": 267 + }, + { + "renderSeconds": 0.0023560523986816406, + "simulationSeconds": 0.0065850019454956055, + "tick": 268 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.006393909454345703, + "tick": 269 + }, + { + "renderSeconds": 0.002440929412841797, + "simulationSeconds": 0.006640076637268066, + "tick": 270 + }, + { + "renderSeconds": 0.0027619600296020508, + "simulationSeconds": 9.5367431640625e-07, + "tick": 270 + }, + { + "renderSeconds": 0.002756953239440918, + "simulationSeconds": 0.012746095657348633, + "tick": 272 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.006571054458618164, + "tick": 273 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.006249070167541504, + "tick": 274 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.006630897521972656, + "tick": 275 + }, + { + "renderSeconds": 0.0028960704803466797, + "simulationSeconds": 0.006145000457763672, + "tick": 276 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006457924842834473, + "tick": 277 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0, + "tick": 277 + }, + { + "renderSeconds": 0.0024089813232421875, + "simulationSeconds": 0.0062819719314575195, + "tick": 278 + }, + { + "renderSeconds": 0.002618074417114258, + "simulationSeconds": 0.011987924575805664, + "tick": 280 + }, + { + "renderSeconds": 0.0036619901657104492, + "simulationSeconds": 0.006443977355957031, + "tick": 281 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.006168961524963379, + "tick": 282 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006705045700073242, + "tick": 283 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.006559967994689941, + "tick": 284 + }, + { + "renderSeconds": 0.002557039260864258, + "simulationSeconds": 0.006554007530212402, + "tick": 285 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0, + "tick": 285 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.011471033096313477, + "tick": 287 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.006424069404602051, + "tick": 288 + }, + { + "renderSeconds": 0.002606034278869629, + "simulationSeconds": 0.00690305233001709, + "tick": 289 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.007063031196594238, + "tick": 290 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.0069550275802612305, + "tick": 291 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.006209015846252441, + "tick": 292 + }, + { + "renderSeconds": 0.0032279491424560547, + "simulationSeconds": 0, + "tick": 292 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.0059909820556640625, + "tick": 293 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.012295961380004883, + "tick": 295 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0.006760954856872559, + "tick": 296 + }, + { + "renderSeconds": 0.0030199289321899414, + "simulationSeconds": 0.0062590837478637695, + "tick": 297 + }, + { + "renderSeconds": 0.0029419660568237305, + "simulationSeconds": 0.006116032600402832, + "tick": 298 + }, + { + "renderSeconds": 0.002399921417236328, + "simulationSeconds": 0.00628507137298584, + "tick": 299 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.006142020225524902, + "tick": 300 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0, + "tick": 300 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.012161016464233398, + "tick": 302 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0.005914926528930664, + "tick": 303 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0.006636977195739746, + "tick": 304 + }, + { + "renderSeconds": 0.0025910139083862305, + "simulationSeconds": 0.006187915802001953, + "tick": 305 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.006036996841430664, + "tick": 306 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.006466984748840332, + "tick": 307 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0, + "tick": 307 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.005717039108276367, + "tick": 308 + }, + { + "renderSeconds": 0.0026679039001464844, + "simulationSeconds": 0.010801076889038086, + "tick": 310 + }, + { + "renderSeconds": 0.0023859739303588867, + "simulationSeconds": 0.006494998931884766, + "tick": 311 + }, + { + "renderSeconds": 0.0024149417877197266, + "simulationSeconds": 0.006219983100891113, + "tick": 312 + }, + { + "renderSeconds": 0.002599000930786133, + "simulationSeconds": 0.00598299503326416, + "tick": 313 + }, + { + "renderSeconds": 0.002690911293029785, + "simulationSeconds": 0.00610804557800293, + "tick": 314 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.0062819719314575195, + "tick": 315 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0, + "tick": 315 + }, + { + "renderSeconds": 0.0026139020919799805, + "simulationSeconds": 0.01200401782989502, + "tick": 317 + }, + { + "renderSeconds": 0.0028700828552246094, + "simulationSeconds": 0.006276965141296387, + "tick": 318 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.0064029693603515625, + "tick": 319 + }, + { + "renderSeconds": 0.0025600194931030273, + "simulationSeconds": 0.006128072738647461, + "tick": 320 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.006396055221557617, + "tick": 321 + }, + { + "renderSeconds": 0.002775907516479492, + "simulationSeconds": 0.006515026092529297, + "tick": 322 + }, + { + "renderSeconds": 0.0033020973205566406, + "simulationSeconds": 9.5367431640625e-07, + "tick": 322 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.006074070930480957, + "tick": 323 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.01199197769165039, + "tick": 325 + }, + { + "renderSeconds": 0.0028110742568969727, + "simulationSeconds": 0.0061109066009521484, + "tick": 326 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006374001502990723, + "tick": 327 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.006641983985900879, + "tick": 328 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.006575942039489746, + "tick": 329 + }, + { + "renderSeconds": 0.002850055694580078, + "simulationSeconds": 0.0064879655838012695, + "tick": 330 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0, + "tick": 330 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.012440085411071777, + "tick": 332 + }, + { + "renderSeconds": 0.003086090087890625, + "simulationSeconds": 0.0062819719314575195, + "tick": 333 + }, + { + "renderSeconds": 0.009065985679626465, + "simulationSeconds": 0.006121993064880371, + "tick": 334 + }, + { + "renderSeconds": 0.0029571056365966797, + "simulationSeconds": 0.006399989128112793, + "tick": 335 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.0062639713287353516, + "tick": 336 + }, + { + "renderSeconds": 0.0033249855041503906, + "simulationSeconds": 0.006990909576416016, + "tick": 337 + }, + { + "renderSeconds": 0.0027570724487304688, + "simulationSeconds": 0, + "tick": 337 + }, + { + "renderSeconds": 0.002926945686340332, + "simulationSeconds": 0.006442070007324219, + "tick": 338 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.012655973434448242, + "tick": 340 + }, + { + "renderSeconds": 0.003260016441345215, + "simulationSeconds": 0.007023930549621582, + "tick": 341 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.0066089630126953125, + "tick": 342 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.006628990173339844, + "tick": 343 + }, + { + "renderSeconds": 0.0029469728469848633, + "simulationSeconds": 0.006051063537597656, + "tick": 344 + }, + { + "renderSeconds": 0.0031698942184448242, + "simulationSeconds": 0.006897926330566406, + "tick": 345 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0, + "tick": 345 + }, + { + "renderSeconds": 0.0028508901596069336, + "simulationSeconds": 0.012694001197814941, + "tick": 347 + }, + { + "renderSeconds": 0.0031599998474121094, + "simulationSeconds": 0.007766008377075195, + "tick": 348 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.006929993629455566, + "tick": 349 + }, + { + "renderSeconds": 0.002764105796813965, + "simulationSeconds": 0.00615692138671875, + "tick": 350 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.006535053253173828, + "tick": 351 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006727933883666992, + "tick": 352 + }, + { + "renderSeconds": 0.0029419660568237305, + "simulationSeconds": 0, + "tick": 352 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.006680011749267578, + "tick": 353 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.012695074081420898, + "tick": 355 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.006769895553588867, + "tick": 356 + }, + { + "renderSeconds": 0.003206968307495117, + "simulationSeconds": 0.0067490339279174805, + "tick": 357 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.0062520503997802734, + "tick": 358 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.006878018379211426, + "tick": 359 + }, + { + "renderSeconds": 0.005033969879150391, + "simulationSeconds": 0.006443023681640625, + "tick": 360 + }, + { + "renderSeconds": 0.003113985061645508, + "simulationSeconds": 0, + "tick": 360 + }, + { + "renderSeconds": 0.002213001251220703, + "simulationSeconds": 0.012845039367675781, + "tick": 362 + }, + { + "renderSeconds": 0.0030629634857177734, + "simulationSeconds": 0.006618976593017578, + "tick": 363 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006121039390563965, + "tick": 364 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.006314992904663086, + "tick": 365 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.006260991096496582, + "tick": 366 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.006145000457763672, + "tick": 367 + }, + { + "renderSeconds": 0.0027370452880859375, + "simulationSeconds": 0, + "tick": 367 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.00672304630279541, + "tick": 368 + }, + { + "renderSeconds": 0.0026499032974243164, + "simulationSeconds": 0.012434959411621094, + "tick": 370 + }, + { + "renderSeconds": 0.0031250715255737305, + "simulationSeconds": 0.0066329240798950195, + "tick": 371 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.006242036819458008, + "tick": 372 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.008906006813049316, + "tick": 373 + }, + { + "renderSeconds": 0.003255009651184082, + "simulationSeconds": 0.006332993507385254, + "tick": 374 + }, + { + "renderSeconds": 0.0029190778732299805, + "simulationSeconds": 0.006107926368713379, + "tick": 375 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0, + "tick": 375 + }, + { + "renderSeconds": 0.002656102180480957, + "simulationSeconds": 0.012100934982299805, + "tick": 377 + }, + { + "renderSeconds": 0.003122091293334961, + "simulationSeconds": 0.006508946418762207, + "tick": 378 + }, + { + "renderSeconds": 0.003143906593322754, + "simulationSeconds": 0.006579041481018066, + "tick": 379 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.008552074432373047, + "tick": 380 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.006886959075927734, + "tick": 381 + }, + { + "renderSeconds": 0.002721071243286133, + "simulationSeconds": 0.006764054298400879, + "tick": 382 + }, + { + "renderSeconds": 0.003170013427734375, + "simulationSeconds": 0, + "tick": 382 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.006485939025878906, + "tick": 383 + }, + { + "renderSeconds": 0.0027080774307250977, + "simulationSeconds": 0.012378931045532227, + "tick": 385 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.007055044174194336, + "tick": 386 + }, + { + "renderSeconds": 0.0029320716857910156, + "simulationSeconds": 0.0065850019454956055, + "tick": 387 + }, + { + "renderSeconds": 0.0025610923767089844, + "simulationSeconds": 0.00627291202545166, + "tick": 388 + }, + { + "renderSeconds": 0.002886056900024414, + "simulationSeconds": 0.006554961204528809, + "tick": 389 + }, + { + "renderSeconds": 0.00268709659576416, + "simulationSeconds": 0.006443977355957031, + "tick": 390 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0, + "tick": 390 + }, + { + "renderSeconds": 0.002865910530090332, + "simulationSeconds": 0.012560009956359863, + "tick": 392 + }, + { + "renderSeconds": 0.003035902976989746, + "simulationSeconds": 0.006459951400756836, + "tick": 393 + }, + { + "renderSeconds": 0.002830028533935547, + "simulationSeconds": 0.006637930870056152, + "tick": 394 + }, + { + "renderSeconds": 0.003535032272338867, + "simulationSeconds": 0.006361961364746094, + "tick": 395 + }, + { + "renderSeconds": 0.003078937530517578, + "simulationSeconds": 0.0063620805740356445, + "tick": 396 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.006582021713256836, + "tick": 397 + }, + { + "renderSeconds": 0.002927064895629883, + "simulationSeconds": 9.5367431640625e-07, + "tick": 397 + }, + { + "renderSeconds": 0.0033129453659057617, + "simulationSeconds": 0.006487011909484863, + "tick": 398 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.012562036514282227, + "tick": 400 + }, + { + "renderSeconds": 0.0032711029052734375, + "simulationSeconds": 0.006445050239562988, + "tick": 401 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.006698012351989746, + "tick": 402 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.007122993469238281, + "tick": 403 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.00643610954284668, + "tick": 404 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.006389021873474121, + "tick": 405 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 9.5367431640625e-07, + "tick": 405 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.013864994049072266, + "tick": 407 + }, + { + "renderSeconds": 0.003231048583984375, + "simulationSeconds": 0.006893038749694824, + "tick": 408 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.006615996360778809, + "tick": 409 + }, + { + "renderSeconds": 0.0029860734939575195, + "simulationSeconds": 0.007256031036376953, + "tick": 410 + }, + { + "renderSeconds": 0.0030219554901123047, + "simulationSeconds": 0.012861013412475586, + "tick": 411 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.007122993469238281, + "tick": 412 + }, + { + "renderSeconds": 0.0030710697174072266, + "simulationSeconds": 0.006932973861694336, + "tick": 413 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.012905001640319824, + "tick": 415 + }, + { + "renderSeconds": 0.003103017807006836, + "simulationSeconds": 0.006869077682495117, + "tick": 416 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0.006296038627624512, + "tick": 417 + }, + { + "renderSeconds": 0.0030989646911621094, + "simulationSeconds": 0.007166028022766113, + "tick": 418 + }, + { + "renderSeconds": 0.0030689239501953125, + "simulationSeconds": 0.006208062171936035, + "tick": 419 + }, + { + "renderSeconds": 0.0031890869140625, + "simulationSeconds": 0.006703019142150879, + "tick": 420 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0, + "tick": 420 + }, + { + "renderSeconds": 0.002604961395263672, + "simulationSeconds": 0.013730049133300781, + "tick": 422 + }, + { + "renderSeconds": 0.0030399560928344727, + "simulationSeconds": 0.006417036056518555, + "tick": 423 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.0060950517654418945, + "tick": 424 + }, + { + "renderSeconds": 0.003092050552368164, + "simulationSeconds": 0.006567955017089844, + "tick": 425 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.006556987762451172, + "tick": 426 + }, + { + "renderSeconds": 0.0029009580612182617, + "simulationSeconds": 0.006190061569213867, + "tick": 427 + }, + { + "renderSeconds": 0.0026880502700805664, + "simulationSeconds": 9.5367431640625e-07, + "tick": 427 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.006425023078918457, + "tick": 428 + }, + { + "renderSeconds": 0.002458930015563965, + "simulationSeconds": 0.01293790340423584, + "tick": 430 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.006192922592163086, + "tick": 431 + }, + { + "renderSeconds": 0.002521038055419922, + "simulationSeconds": 0.0073239803314208984, + "tick": 432 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006325960159301758, + "tick": 433 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006601095199584961, + "tick": 434 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.006475925445556641, + "tick": 435 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0, + "tick": 435 + }, + { + "renderSeconds": 0.0026140213012695312, + "simulationSeconds": 0.01237797737121582, + "tick": 437 + }, + { + "renderSeconds": 0.002489924430847168, + "simulationSeconds": 0.006283998489379883, + "tick": 438 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006528019905090332, + "tick": 439 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.006199002265930176, + "tick": 440 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.006350994110107422, + "tick": 441 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.006695985794067383, + "tick": 442 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0, + "tick": 442 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0.006486058235168457, + "tick": 443 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.012624979019165039, + "tick": 445 + }, + { + "renderSeconds": 0.003133058547973633, + "simulationSeconds": 0.007200002670288086, + "tick": 446 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.006466984748840332, + "tick": 447 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.006433010101318359, + "tick": 448 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006584048271179199, + "tick": 449 + }, + { + "renderSeconds": 0.00303494930267334, + "simulationSeconds": 0.00619196891784668, + "tick": 450 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0, + "tick": 450 + }, + { + "renderSeconds": 0.002667069435119629, + "simulationSeconds": 0.013064026832580566, + "tick": 452 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0.006096005439758301, + "tick": 453 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.007858037948608398, + "tick": 454 + }, + { + "renderSeconds": 0.00298309326171875, + "simulationSeconds": 0.006627917289733887, + "tick": 455 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.007946014404296875, + "tick": 456 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.005996108055114746, + "tick": 457 + }, + { + "renderSeconds": 0.002539992332458496, + "simulationSeconds": 0, + "tick": 457 + }, + { + "renderSeconds": 0.0030869245529174805, + "simulationSeconds": 0.006173968315124512, + "tick": 458 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.011277079582214355, + "tick": 460 + }, + { + "renderSeconds": 0.002798914909362793, + "simulationSeconds": 0.006064057350158691, + "tick": 461 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.005879044532775879, + "tick": 462 + }, + { + "renderSeconds": 0.002514958381652832, + "simulationSeconds": 0.005568027496337891, + "tick": 463 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.005728006362915039, + "tick": 464 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.005941987037658691, + "tick": 465 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 9.5367431640625e-07, + "tick": 465 + }, + { + "renderSeconds": 0.0026270151138305664, + "simulationSeconds": 0.011287093162536621, + "tick": 467 + }, + { + "renderSeconds": 0.002660989761352539, + "simulationSeconds": 0.005792021751403809, + "tick": 468 + }, + { + "renderSeconds": 0.0029010772705078125, + "simulationSeconds": 0.006011962890625, + "tick": 469 + }, + { + "renderSeconds": 0.0037910938262939453, + "simulationSeconds": 0.005955934524536133, + "tick": 470 + }, + { + "renderSeconds": 0.0027390718460083008, + "simulationSeconds": 0.005939006805419922, + "tick": 471 + }, + { + "renderSeconds": 0.0027059316635131836, + "simulationSeconds": 0.005769968032836914, + "tick": 472 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0, + "tick": 472 + }, + { + "renderSeconds": 0.0025600194931030273, + "simulationSeconds": 0.005704998970031738, + "tick": 473 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.011599063873291016, + "tick": 475 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.006110072135925293, + "tick": 476 + }, + { + "renderSeconds": 0.00299990177154541, + "simulationSeconds": 0.005886077880859375, + "tick": 477 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.005977988243103027, + "tick": 478 + }, + { + "renderSeconds": 0.0027260780334472656, + "simulationSeconds": 0.006024003028869629, + "tick": 479 + }, + { + "renderSeconds": 0.002684950828552246, + "simulationSeconds": 0.006398916244506836, + "tick": 480 + }, + { + "renderSeconds": 0.003029942512512207, + "simulationSeconds": 0, + "tick": 480 + }, + { + "renderSeconds": 0.003126978874206543, + "simulationSeconds": 0.011783003807067871, + "tick": 482 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.006132006645202637, + "tick": 483 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.006043076515197754, + "tick": 484 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.005994081497192383, + "tick": 485 + }, + { + "renderSeconds": 0.00247800350189209, + "simulationSeconds": 0.006150960922241211, + "tick": 486 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.0060160160064697266, + "tick": 487 + }, + { + "renderSeconds": 0.0029349327087402344, + "simulationSeconds": 0, + "tick": 487 + }, + { + "renderSeconds": 0.0025109052658081055, + "simulationSeconds": 0.006175041198730469, + "tick": 488 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.012858033180236816, + "tick": 490 + }, + { + "renderSeconds": 0.0027369260787963867, + "simulationSeconds": 0.007296085357666016, + "tick": 491 + }, + { + "renderSeconds": 0.002708911895751953, + "simulationSeconds": 0.006720066070556641, + "tick": 492 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.0068160295486450195, + "tick": 493 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.006455063819885254, + "tick": 494 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0.006425023078918457, + "tick": 495 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 9.5367431640625e-07, + "tick": 495 + }, + { + "renderSeconds": 0.00258791446685791, + "simulationSeconds": 0.012490987777709961, + "tick": 497 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.00621795654296875, + "tick": 498 + }, + { + "renderSeconds": 0.004106044769287109, + "simulationSeconds": 0.0065430402755737305, + "tick": 499 + }, + { + "renderSeconds": 0.003157973289489746, + "simulationSeconds": 0.006613969802856445, + "tick": 500 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.006676912307739258, + "tick": 501 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.006496906280517578, + "tick": 502 + }, + { + "renderSeconds": 0.0034530162811279297, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 502 + }, + { + "renderSeconds": 0.002447962760925293, + "simulationSeconds": 0.0064820051193237305, + "tick": 503 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.013053059577941895, + "tick": 505 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.0060280561447143555, + "tick": 506 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.0071430206298828125, + "tick": 507 + }, + { + "renderSeconds": 0.0024110078811645508, + "simulationSeconds": 0.006265044212341309, + "tick": 508 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.0061719417572021484, + "tick": 509 + }, + { + "renderSeconds": 0.0021109580993652344, + "simulationSeconds": 0.006646990776062012, + "tick": 510 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03684758333838545, + "moveTicks": 480, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 956, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.47551047801971436, + "preparationSeconds": 0.49908196926116943, + "reducedMotion": false, + "renderSeconds": 1.455788016319275, + "repetition": 21, + "scenePreparationSeconds": 0.17576491832733154, + "simulationSeconds": 3.28672993183136, + "snapshotBuildCount": 511, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.74529167194851, + "postActionRecords": 509, + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.792899489402771, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0010449886322021484, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0008130073547363281, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009620189666748047, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003383040428161621, + "simulationSeconds": 0.0075359344482421875, + "tick": 1 + }, + { + "renderSeconds": 0.0029169321060180664, + "simulationSeconds": 0.018069028854370117, + "tick": 4 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.013774991035461426, + "tick": 6 + }, + { + "renderSeconds": 0.0068590641021728516, + "simulationSeconds": 0.006027936935424805, + "tick": 7 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0.006801009178161621, + "tick": 8 + }, + { + "renderSeconds": 0.003114938735961914, + "simulationSeconds": 0.0065070390701293945, + "tick": 9 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.012851953506469727, + "tick": 11 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.013170957565307617, + "tick": 13 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.012526988983154297, + "tick": 15 + }, + { + "renderSeconds": 0.002743959426879883, + "simulationSeconds": 0.005988001823425293, + "tick": 16 + }, + { + "renderSeconds": 0.0031229257583618164, + "simulationSeconds": 0.006248950958251953, + "tick": 17 + }, + { + "renderSeconds": 0.0031670331954956055, + "simulationSeconds": 0.012884974479675293, + "tick": 19 + }, + { + "renderSeconds": 0.002978086471557617, + "simulationSeconds": 0.012750983238220215, + "tick": 21 + }, + { + "renderSeconds": 0.0032619237899780273, + "simulationSeconds": 0.006291031837463379, + "tick": 22 + }, + { + "renderSeconds": 0.003296971321105957, + "simulationSeconds": 0.007069945335388184, + "tick": 23 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.006461977958679199, + "tick": 24 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0.014087915420532227, + "tick": 26 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.013993978500366211, + "tick": 28 + }, + { + "renderSeconds": 0.0029549598693847656, + "simulationSeconds": 0.012823939323425293, + "tick": 30 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.006775021553039551, + "tick": 31 + }, + { + "renderSeconds": 0.003092050552368164, + "simulationSeconds": 0.00622403621673584, + "tick": 32 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.013023972511291504, + "tick": 34 + }, + { + "renderSeconds": 0.0027348995208740234, + "simulationSeconds": 0.006608009338378906, + "tick": 35 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.006666064262390137, + "tick": 36 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.006762027740478516, + "tick": 37 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0029979944229125977, + "simulationSeconds": 0.006124019622802734, + "tick": 38 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 0.006281018257141113, + "tick": 39 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.012929916381835938, + "tick": 41 + }, + { + "renderSeconds": 0.003035902976989746, + "simulationSeconds": 0.00671994686126709, + "tick": 42 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.006636977195739746, + "tick": 43 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.006503939628601074, + "tick": 44 + }, + { + "renderSeconds": 0.0027060508728027344, + "simulationSeconds": 0.006329894065856934, + "tick": 45 + }, + { + "renderSeconds": 0.003065943717956543, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 45 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.007912039756774902, + "tick": 46 + }, + { + "renderSeconds": 0.0034029483795166016, + "simulationSeconds": 0.007830023765563965, + "tick": 47 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.013972997665405273, + "tick": 49 + }, + { + "renderSeconds": 0.0027959346771240234, + "simulationSeconds": 0.006788969039916992, + "tick": 50 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0.006132960319519043, + "tick": 51 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.006229996681213379, + "tick": 52 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0032500028610229492, + "simulationSeconds": 0.007624983787536621, + "tick": 53 + }, + { + "renderSeconds": 0.0034700632095336914, + "simulationSeconds": 0.007752060890197754, + "tick": 54 + }, + { + "renderSeconds": 0.0032230615615844727, + "simulationSeconds": 0.014657974243164062, + "tick": 56 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.01489400863647461, + "tick": 58 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.007523059844970703, + "tick": 59 + }, + { + "renderSeconds": 0.0026149749755859375, + "simulationSeconds": 0.00721895694732666, + "tick": 60 + }, + { + "renderSeconds": 0.002947092056274414, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.006271958351135254, + "tick": 61 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.006211996078491211, + "tick": 62 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.012738943099975586, + "tick": 64 + }, + { + "renderSeconds": 0.003425002098083496, + "simulationSeconds": 0.006801009178161621, + "tick": 65 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.006577014923095703, + "tick": 66 + }, + { + "renderSeconds": 0.0029119253158569336, + "simulationSeconds": 0.006754040718078613, + "tick": 67 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.006635069847106934, + "tick": 68 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006559967994689941, + "tick": 69 + }, + { + "renderSeconds": 0.0026319026947021484, + "simulationSeconds": 0.012440919876098633, + "tick": 71 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.006348013877868652, + "tick": 72 + }, + { + "renderSeconds": 0.0032149553298950195, + "simulationSeconds": 0.006211996078491211, + "tick": 73 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.00783693790435791, + "tick": 74 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0.0063550472259521484, + "tick": 75 + }, + { + "renderSeconds": 0.002756953239440918, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 75 + }, + { + "renderSeconds": 0.0027670860290527344, + "simulationSeconds": 0.0067059993743896484, + "tick": 76 + }, + { + "renderSeconds": 0.002769947052001953, + "simulationSeconds": 0.006726980209350586, + "tick": 77 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.012565970420837402, + "tick": 79 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.0064508914947509766, + "tick": 80 + }, + { + "renderSeconds": 0.0030961036682128906, + "simulationSeconds": 0.007591962814331055, + "tick": 81 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.00639796257019043, + "tick": 82 + }, + { + "renderSeconds": 0.0029419660568237305, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0.006494998931884766, + "tick": 83 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0.006499052047729492, + "tick": 84 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.012776970863342285, + "tick": 86 + }, + { + "renderSeconds": 0.0030480623245239258, + "simulationSeconds": 0.006825923919677734, + "tick": 87 + }, + { + "renderSeconds": 0.0028449296951293945, + "simulationSeconds": 0.006199002265930176, + "tick": 88 + }, + { + "renderSeconds": 0.003672003746032715, + "simulationSeconds": 0.00601804256439209, + "tick": 89 + }, + { + "renderSeconds": 0.0027649402618408203, + "simulationSeconds": 0.0061740875244140625, + "tick": 90 + }, + { + "renderSeconds": 0.0026030540466308594, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.0064029693603515625, + "tick": 91 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006537079811096191, + "tick": 92 + }, + { + "renderSeconds": 0.002642035484313965, + "simulationSeconds": 0.013273954391479492, + "tick": 94 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.006556987762451172, + "tick": 95 + }, + { + "renderSeconds": 0.002662062644958496, + "simulationSeconds": 0.007667064666748047, + "tick": 96 + }, + { + "renderSeconds": 0.0029169321060180664, + "simulationSeconds": 0.006410002708435059, + "tick": 97 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.006474018096923828, + "tick": 98 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006176948547363281, + "tick": 99 + }, + { + "renderSeconds": 0.0029450654983520508, + "simulationSeconds": 0.012941956520080566, + "tick": 101 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.00604403018951416, + "tick": 102 + }, + { + "renderSeconds": 0.0029550790786743164, + "simulationSeconds": 0.006393909454345703, + "tick": 103 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.008558988571166992, + "tick": 104 + }, + { + "renderSeconds": 0.0034439563751220703, + "simulationSeconds": 0.0074700117111206055, + "tick": 105 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.0032759904861450195, + "simulationSeconds": 0.007844090461730957, + "tick": 106 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.007666945457458496, + "tick": 107 + }, + { + "renderSeconds": 0.0031740665435791016, + "simulationSeconds": 0.014167070388793945, + "tick": 109 + }, + { + "renderSeconds": 0.0031429529190063477, + "simulationSeconds": 0.007792949676513672, + "tick": 110 + }, + { + "renderSeconds": 0.003113985061645508, + "simulationSeconds": 0.007210969924926758, + "tick": 111 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.007299065589904785, + "tick": 112 + }, + { + "renderSeconds": 0.003018021583557129, + "simulationSeconds": 0.006269931793212891, + "tick": 113 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.006615042686462402, + "tick": 114 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.01220405101776123, + "tick": 116 + }, + { + "renderSeconds": 0.0027370452880859375, + "simulationSeconds": 0.006082057952880859, + "tick": 117 + }, + { + "renderSeconds": 0.002583026885986328, + "simulationSeconds": 0.007004976272583008, + "tick": 118 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.006790041923522949, + "tick": 119 + }, + { + "renderSeconds": 0.0029430389404296875, + "simulationSeconds": 0.006425023078918457, + "tick": 120 + }, + { + "renderSeconds": 0.003262042999267578, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.007254958152770996, + "tick": 121 + }, + { + "renderSeconds": 0.003246903419494629, + "simulationSeconds": 0.006948113441467285, + "tick": 122 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0.014309048652648926, + "tick": 124 + }, + { + "renderSeconds": 0.003515005111694336, + "simulationSeconds": 0.008111953735351562, + "tick": 125 + }, + { + "renderSeconds": 0.0030080080032348633, + "simulationSeconds": 0.012651920318603516, + "tick": 127 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.006298065185546875, + "tick": 128 + }, + { + "renderSeconds": 0.0025870800018310547, + "simulationSeconds": 0.006493926048278809, + "tick": 129 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.012553930282592773, + "tick": 131 + }, + { + "renderSeconds": 0.0031429529190063477, + "simulationSeconds": 0.006006002426147461, + "tick": 132 + }, + { + "renderSeconds": 0.0031319856643676758, + "simulationSeconds": 0.006476044654846191, + "tick": 133 + }, + { + "renderSeconds": 0.00307309627532959, + "simulationSeconds": 0.0066449642181396484, + "tick": 134 + }, + { + "renderSeconds": 0.0030499696731567383, + "simulationSeconds": 0.006647944450378418, + "tick": 135 + }, + { + "renderSeconds": 0.002743959426879883, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0027049779891967773, + "simulationSeconds": 0.0068340301513671875, + "tick": 136 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.006245017051696777, + "tick": 137 + }, + { + "renderSeconds": 0.0027060508728027344, + "simulationSeconds": 0.013345003128051758, + "tick": 139 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006031990051269531, + "tick": 140 + }, + { + "renderSeconds": 0.0039490461349487305, + "simulationSeconds": 0.0075130462646484375, + "tick": 141 + }, + { + "renderSeconds": 0.003298044204711914, + "simulationSeconds": 0.007467031478881836, + "tick": 142 + }, + { + "renderSeconds": 0.003007054328918457, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.006794929504394531, + "tick": 143 + }, + { + "renderSeconds": 0.003175973892211914, + "simulationSeconds": 0.0063179731369018555, + "tick": 144 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.012432098388671875, + "tick": 146 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.005958080291748047, + "tick": 147 + }, + { + "renderSeconds": 0.0029219388961791992, + "simulationSeconds": 0.007143974304199219, + "tick": 148 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0.0068509578704833984, + "tick": 149 + }, + { + "renderSeconds": 0.0026650428771972656, + "simulationSeconds": 0.006054997444152832, + "tick": 150 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 9.5367431640625e-07, + "tick": 150 + }, + { + "renderSeconds": 0.0028499364852905273, + "simulationSeconds": 0.0061299800872802734, + "tick": 151 + }, + { + "renderSeconds": 0.0030170679092407227, + "simulationSeconds": 0.006502032279968262, + "tick": 152 + }, + { + "renderSeconds": 0.003029942512512207, + "simulationSeconds": 0.013997912406921387, + "tick": 154 + }, + { + "renderSeconds": 0.0033779144287109375, + "simulationSeconds": 0.006878018379211426, + "tick": 155 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.007089018821716309, + "tick": 156 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.006956934928894043, + "tick": 157 + }, + { + "renderSeconds": 0.0031229257583618164, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 157 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.0061980485916137695, + "tick": 158 + }, + { + "renderSeconds": 0.002794981002807617, + "simulationSeconds": 0.006002068519592285, + "tick": 159 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.012421965599060059, + "tick": 161 + }, + { + "renderSeconds": 0.0031480789184570312, + "simulationSeconds": 0.006314992904663086, + "tick": 162 + }, + { + "renderSeconds": 0.003076910972595215, + "simulationSeconds": 0.005972027778625488, + "tick": 163 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.007342100143432617, + "tick": 164 + }, + { + "renderSeconds": 0.0036829710006713867, + "simulationSeconds": 0.006394028663635254, + "tick": 165 + }, + { + "renderSeconds": 0.0029140710830688477, + "simulationSeconds": 0, + "tick": 165 + }, + { + "renderSeconds": 0.0028879642486572266, + "simulationSeconds": 0.006103038787841797, + "tick": 166 + }, + { + "renderSeconds": 0.002527952194213867, + "simulationSeconds": 0.006802082061767578, + "tick": 167 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.012660026550292969, + "tick": 169 + }, + { + "renderSeconds": 0.0032259225845336914, + "simulationSeconds": 0.006794095039367676, + "tick": 170 + }, + { + "renderSeconds": 0.0033559799194335938, + "simulationSeconds": 0.0065670013427734375, + "tick": 171 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.006641983985900879, + "tick": 172 + }, + { + "renderSeconds": 0.003080010414123535, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.003861069679260254, + "simulationSeconds": 0.007360935211181641, + "tick": 173 + }, + { + "renderSeconds": 0.003094911575317383, + "simulationSeconds": 0.006680011749267578, + "tick": 174 + }, + { + "renderSeconds": 0.0027600526809692383, + "simulationSeconds": 0.012750983238220215, + "tick": 176 + }, + { + "renderSeconds": 0.003101944923400879, + "simulationSeconds": 0.006883978843688965, + "tick": 177 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006438016891479492, + "tick": 178 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.006456971168518066, + "tick": 179 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.0061910152435302734, + "tick": 180 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.006307005882263184, + "tick": 181 + }, + { + "renderSeconds": 0.0028209686279296875, + "simulationSeconds": 0.006178021430969238, + "tick": 182 + }, + { + "renderSeconds": 0.0026439428329467773, + "simulationSeconds": 0.012405991554260254, + "tick": 184 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.0062329769134521484, + "tick": 185 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.006886005401611328, + "tick": 186 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006631970405578613, + "tick": 187 + }, + { + "renderSeconds": 0.003274083137512207, + "simulationSeconds": 9.5367431640625e-07, + "tick": 187 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.0062400102615356445, + "tick": 188 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.0063419342041015625, + "tick": 189 + }, + { + "renderSeconds": 0.0027201175689697266, + "simulationSeconds": 0.012673020362854004, + "tick": 191 + }, + { + "renderSeconds": 0.0027600526809692383, + "simulationSeconds": 0.007051944732666016, + "tick": 192 + }, + { + "renderSeconds": 0.0034979581832885742, + "simulationSeconds": 0.00742495059967041, + "tick": 193 + }, + { + "renderSeconds": 0.003180980682373047, + "simulationSeconds": 0.007177948951721191, + "tick": 194 + }, + { + "renderSeconds": 0.0028160810470581055, + "simulationSeconds": 0.006938934326171875, + "tick": 195 + }, + { + "renderSeconds": 0.0028508901596069336, + "simulationSeconds": 0, + "tick": 195 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.007442951202392578, + "tick": 196 + }, + { + "renderSeconds": 0.002667069435119629, + "simulationSeconds": 0.006501913070678711, + "tick": 197 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.012259960174560547, + "tick": 199 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.007031917572021484, + "tick": 200 + }, + { + "renderSeconds": 0.003162980079650879, + "simulationSeconds": 0.006468057632446289, + "tick": 201 + }, + { + "renderSeconds": 0.0033550262451171875, + "simulationSeconds": 0.006276965141296387, + "tick": 202 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.002798914909362793, + "simulationSeconds": 0.006973981857299805, + "tick": 203 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0.006424903869628906, + "tick": 204 + }, + { + "renderSeconds": 0.002968907356262207, + "simulationSeconds": 0.0127180814743042, + "tick": 206 + }, + { + "renderSeconds": 0.003165006637573242, + "simulationSeconds": 0.006392002105712891, + "tick": 207 + }, + { + "renderSeconds": 0.0030870437622070312, + "simulationSeconds": 0.0070950984954833984, + "tick": 208 + }, + { + "renderSeconds": 0.003096938133239746, + "simulationSeconds": 0.006762027740478516, + "tick": 209 + }, + { + "renderSeconds": 0.003141045570373535, + "simulationSeconds": 0.006353974342346191, + "tick": 210 + }, + { + "renderSeconds": 0.0030820369720458984, + "simulationSeconds": 9.5367431640625e-07, + "tick": 210 + }, + { + "renderSeconds": 0.0030809640884399414, + "simulationSeconds": 0.006411075592041016, + "tick": 211 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.006507992744445801, + "tick": 212 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.0128248929977417, + "tick": 214 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0.0067479610443115234, + "tick": 215 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.007660984992980957, + "tick": 216 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006500959396362305, + "tick": 217 + }, + { + "renderSeconds": 0.0030480623245239258, + "simulationSeconds": 0, + "tick": 217 + }, + { + "renderSeconds": 0.00277101993560791, + "simulationSeconds": 0.007773995399475098, + "tick": 218 + }, + { + "renderSeconds": 0.0028570890426635742, + "simulationSeconds": 0.007437944412231445, + "tick": 219 + }, + { + "renderSeconds": 0.00291597843170166, + "simulationSeconds": 0.012791037559509277, + "tick": 221 + }, + { + "renderSeconds": 0.0029178857803344727, + "simulationSeconds": 0.006794095039367676, + "tick": 222 + }, + { + "renderSeconds": 0.003098011016845703, + "simulationSeconds": 0.007318019866943359, + "tick": 223 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.012742996215820312, + "tick": 225 + }, + { + "renderSeconds": 0.006248950958251953, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.002846956253051758, + "simulationSeconds": 0.006844997406005859, + "tick": 226 + }, + { + "renderSeconds": 0.0031720399856567383, + "simulationSeconds": 0.0062580108642578125, + "tick": 227 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.013159036636352539, + "tick": 229 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006588935852050781, + "tick": 230 + }, + { + "renderSeconds": 0.0028020143508911133, + "simulationSeconds": 0.013599991798400879, + "tick": 232 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 9.5367431640625e-07, + "tick": 232 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.0065430402755737305, + "tick": 233 + }, + { + "renderSeconds": 0.0037889480590820312, + "simulationSeconds": 0.006680965423583984, + "tick": 234 + }, + { + "renderSeconds": 0.0030330419540405273, + "simulationSeconds": 0.01289510726928711, + "tick": 236 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.013473033905029297, + "tick": 238 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.007550954818725586, + "tick": 239 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.0065909624099731445, + "tick": 240 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 240 + }, + { + "renderSeconds": 0.0027620792388916016, + "simulationSeconds": 0.00612795352935791, + "tick": 241 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.006367087364196777, + "tick": 242 + }, + { + "renderSeconds": 0.002669095993041992, + "simulationSeconds": 0.012814998626708984, + "tick": 244 + }, + { + "renderSeconds": 0.0027620792388916016, + "simulationSeconds": 0.01337897777557373, + "tick": 246 + }, + { + "renderSeconds": 0.0027959346771240234, + "simulationSeconds": 0.01545703411102295, + "tick": 247 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.007077932357788086, + "tick": 248 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.0065460205078125, + "tick": 249 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.013668060302734375, + "tick": 251 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.006592988967895508, + "tick": 252 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 0.007212042808532715, + "tick": 253 + }, + { + "renderSeconds": 0.0031179189682006836, + "simulationSeconds": 0.007079005241394043, + "tick": 254 + }, + { + "renderSeconds": 0.003374934196472168, + "simulationSeconds": 0.006852984428405762, + "tick": 255 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 255 + }, + { + "renderSeconds": 0.002929091453552246, + "simulationSeconds": 0.006765007972717285, + "tick": 256 + }, + { + "renderSeconds": 0.003059983253479004, + "simulationSeconds": 0.006329059600830078, + "tick": 257 + }, + { + "renderSeconds": 0.0031180381774902344, + "simulationSeconds": 0.014155983924865723, + "tick": 259 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.015015959739685059, + "tick": 261 + }, + { + "renderSeconds": 0.0027399063110351562, + "simulationSeconds": 0.012531042098999023, + "tick": 263 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.0065460205078125, + "tick": 264 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.013386964797973633, + "tick": 266 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.013679027557373047, + "tick": 268 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.006806015968322754, + "tick": 269 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006371974945068359, + "tick": 270 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 0, + "tick": 270 + }, + { + "renderSeconds": 0.0033799409866333008, + "simulationSeconds": 0.0067729949951171875, + "tick": 271 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.006726980209350586, + "tick": 272 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.012612104415893555, + "tick": 274 + }, + { + "renderSeconds": 0.0033309459686279297, + "simulationSeconds": 0.01287996768951416, + "tick": 276 + }, + { + "renderSeconds": 0.0026880502700805664, + "simulationSeconds": 0.01454007625579834, + "tick": 278 + }, + { + "renderSeconds": 0.0028688907623291016, + "simulationSeconds": 0.006702065467834473, + "tick": 279 + }, + { + "renderSeconds": 0.002770066261291504, + "simulationSeconds": 0.01403200626373291, + "tick": 281 + }, + { + "renderSeconds": 0.00268399715423584, + "simulationSeconds": 0.02033400535583496, + "tick": 283 + }, + { + "renderSeconds": 0.0028688907623291016, + "simulationSeconds": 0.012619972229003906, + "tick": 285 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.012534022331237793, + "tick": 287 + }, + { + "renderSeconds": 0.00282895565032959, + "simulationSeconds": 0.01282811164855957, + "tick": 289 + }, + { + "renderSeconds": 0.007935047149658203, + "simulationSeconds": 0.006595015525817871, + "tick": 290 + }, + { + "renderSeconds": 0.0027000904083251953, + "simulationSeconds": 0.012761950492858887, + "tick": 292 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0.01312708854675293, + "tick": 294 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 0.012208938598632812, + "tick": 296 + }, + { + "renderSeconds": 0.0027669668197631836, + "simulationSeconds": 0.006296992301940918, + "tick": 297 + }, + { + "renderSeconds": 0.002255082130432129, + "simulationSeconds": 0.012228012084960938, + "tick": 298 + }, + { + "renderSeconds": 0.003286004066467285, + "simulationSeconds": 0.011967062950134277, + "tick": 300 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.01144099235534668, + "tick": 302 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.013275980949401855, + "tick": 304 + }, + { + "renderSeconds": 0.0030580759048461914, + "simulationSeconds": 0.011068940162658691, + "tick": 305 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.011670947074890137, + "tick": 307 + }, + { + "renderSeconds": 0.0026570558547973633, + "simulationSeconds": 0, + "tick": 307 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.00707697868347168, + "tick": 308 + }, + { + "renderSeconds": 0.0028400421142578125, + "simulationSeconds": 0.006506919860839844, + "tick": 309 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.011934041976928711, + "tick": 311 + }, + { + "renderSeconds": 0.0031090974807739258, + "simulationSeconds": 0.005928993225097656, + "tick": 312 + }, + { + "renderSeconds": 0.0032570362091064453, + "simulationSeconds": 0.007128000259399414, + "tick": 313 + }, + { + "renderSeconds": 0.007423043251037598, + "simulationSeconds": 0.0061119794845581055, + "tick": 314 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006309986114501953, + "tick": 315 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 9.5367431640625e-07, + "tick": 315 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.0064209699630737305, + "tick": 316 + }, + { + "renderSeconds": 0.003062009811401367, + "simulationSeconds": 0.006788969039916992, + "tick": 317 + }, + { + "renderSeconds": 0.003304004669189453, + "simulationSeconds": 0.01326000690460205, + "tick": 319 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.006532907485961914, + "tick": 320 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.007005929946899414, + "tick": 321 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.00634002685546875, + "tick": 322 + }, + { + "renderSeconds": 0.003103017807006836, + "simulationSeconds": 0.006219029426574707, + "tick": 323 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.006114959716796875, + "tick": 324 + }, + { + "renderSeconds": 0.002623915672302246, + "simulationSeconds": 0.012169957160949707, + "tick": 326 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.006395101547241211, + "tick": 327 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.006573081016540527, + "tick": 328 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.007021903991699219, + "tick": 329 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.006575942039489746, + "tick": 330 + }, + { + "renderSeconds": 0.0028470754623413086, + "simulationSeconds": 0, + "tick": 330 + }, + { + "renderSeconds": 0.0031889677047729492, + "simulationSeconds": 0.00612795352935791, + "tick": 331 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.006204009056091309, + "tick": 332 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.013005971908569336, + "tick": 334 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.014075040817260742, + "tick": 336 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.006637930870056152, + "tick": 337 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0, + "tick": 337 + }, + { + "renderSeconds": 0.003079056739807129, + "simulationSeconds": 0.008276939392089844, + "tick": 338 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.0064629316329956055, + "tick": 339 + }, + { + "renderSeconds": 0.0028519630432128906, + "simulationSeconds": 0.01353907585144043, + "tick": 341 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.006505012512207031, + "tick": 342 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.008173942565917969, + "tick": 343 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.00945901870727539, + "tick": 344 + }, + { + "renderSeconds": 0.00279390811920166, + "simulationSeconds": 0.006546974182128906, + "tick": 345 + }, + { + "renderSeconds": 0.003018021583557129, + "simulationSeconds": 0.0067969560623168945, + "tick": 346 + }, + { + "renderSeconds": 0.0030330419540405273, + "simulationSeconds": 0.007008075714111328, + "tick": 347 + }, + { + "renderSeconds": 0.0027390718460083008, + "simulationSeconds": 0.013087034225463867, + "tick": 349 + }, + { + "renderSeconds": 0.0028679370880126953, + "simulationSeconds": 0.008079051971435547, + "tick": 350 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.006800055503845215, + "tick": 351 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.006255030632019043, + "tick": 352 + }, + { + "renderSeconds": 0.0030249357223510742, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 352 + }, + { + "renderSeconds": 0.0036809444427490234, + "simulationSeconds": 0.006786942481994629, + "tick": 353 + }, + { + "renderSeconds": 0.004367947578430176, + "simulationSeconds": 0.006740093231201172, + "tick": 354 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.0130690336227417, + "tick": 356 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.013300061225891113, + "tick": 358 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0.00672602653503418, + "tick": 359 + }, + { + "renderSeconds": 0.0031120777130126953, + "simulationSeconds": 0.006445050239562988, + "tick": 360 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0, + "tick": 360 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.006837010383605957, + "tick": 361 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.006559014320373535, + "tick": 362 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.012951016426086426, + "tick": 364 + }, + { + "renderSeconds": 0.0029190778732299805, + "simulationSeconds": 0.0064018964767456055, + "tick": 365 + }, + { + "renderSeconds": 0.0029219388961791992, + "simulationSeconds": 0.006590008735656738, + "tick": 366 + }, + { + "renderSeconds": 0.00338900089263916, + "simulationSeconds": 0.007654070854187012, + "tick": 367 + }, + { + "renderSeconds": 0.003065943717956543, + "simulationSeconds": 0, + "tick": 367 + }, + { + "renderSeconds": 0.0038219690322875977, + "simulationSeconds": 0.007201075553894043, + "tick": 368 + }, + { + "renderSeconds": 0.0030668973922729492, + "simulationSeconds": 0.006429076194763184, + "tick": 369 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 0.016056060791015625, + "tick": 371 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.012966036796569824, + "tick": 373 + }, + { + "renderSeconds": 0.010743975639343262, + "simulationSeconds": 0.020385026931762695, + "tick": 375 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.014376044273376465, + "tick": 377 + }, + { + "renderSeconds": 0.00350797176361084, + "simulationSeconds": 0.01329803466796875, + "tick": 379 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.015459060668945312, + "tick": 381 + }, + { + "renderSeconds": 0.0034160614013671875, + "simulationSeconds": 0.007473945617675781, + "tick": 382 + }, + { + "renderSeconds": 0.003468036651611328, + "simulationSeconds": 0.006432056427001953, + "tick": 383 + }, + { + "renderSeconds": 0.0033489465713500977, + "simulationSeconds": 0.0221099853515625, + "tick": 386 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.014185905456542969, + "tick": 388 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0.0120619535446167, + "tick": 390 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0, + "tick": 390 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.006680965423583984, + "tick": 391 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.007193922996520996, + "tick": 392 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.013154029846191406, + "tick": 394 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.012185931205749512, + "tick": 396 + }, + { + "renderSeconds": 0.002690911293029785, + "simulationSeconds": 0.006280064582824707, + "tick": 397 + }, + { + "renderSeconds": 0.003081083297729492, + "simulationSeconds": 0.006433010101318359, + "tick": 398 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.006763935089111328, + "tick": 399 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 0.017869949340820312, + "tick": 401 + }, + { + "renderSeconds": 0.0028960704803466797, + "simulationSeconds": 0.012835979461669922, + "tick": 403 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.012575984001159668, + "tick": 405 + }, + { + "renderSeconds": 0.009563922882080078, + "simulationSeconds": 0.0063190460205078125, + "tick": 406 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.00623011589050293, + "tick": 407 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.013661026954650879, + "tick": 409 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0.01312708854675293, + "tick": 411 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.012942075729370117, + "tick": 413 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006751060485839844, + "tick": 414 + }, + { + "renderSeconds": 0.0027779340744018555, + "simulationSeconds": 0.013345956802368164, + "tick": 416 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.0072019100189208984, + "tick": 417 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.014333009719848633, + "tick": 419 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.00647890567779541, + "tick": 420 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0, + "tick": 420 + }, + { + "renderSeconds": 0.002888917922973633, + "simulationSeconds": 0.006342053413391113, + "tick": 421 + }, + { + "renderSeconds": 0.009948968887329102, + "simulationSeconds": 0.006914019584655762, + "tick": 422 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.013261079788208008, + "tick": 424 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.01299595832824707, + "tick": 426 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.016013026237487793, + "tick": 428 + }, + { + "renderSeconds": 0.0032699108123779297, + "simulationSeconds": 0.0069730281829833984, + "tick": 429 + }, + { + "renderSeconds": 0.003092050552368164, + "simulationSeconds": 0.019675016403198242, + "tick": 432 + }, + { + "renderSeconds": 0.003388047218322754, + "simulationSeconds": 0.007043957710266113, + "tick": 433 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.012959957122802734, + "tick": 435 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0, + "tick": 435 + }, + { + "renderSeconds": 0.003343939781188965, + "simulationSeconds": 0.006670951843261719, + "tick": 436 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0.007066965103149414, + "tick": 437 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.012688994407653809, + "tick": 439 + }, + { + "renderSeconds": 0.003304004669189453, + "simulationSeconds": 0.006610989570617676, + "tick": 440 + }, + { + "renderSeconds": 0.0025548934936523438, + "simulationSeconds": 0.00728297233581543, + "tick": 441 + }, + { + "renderSeconds": 0.002788066864013672, + "simulationSeconds": 0.006744980812072754, + "tick": 442 + }, + { + "renderSeconds": 0.003296971321105957, + "simulationSeconds": 9.5367431640625e-07, + "tick": 442 + }, + { + "renderSeconds": 0.0038399696350097656, + "simulationSeconds": 0.006854057312011719, + "tick": 443 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.006824016571044922, + "tick": 444 + }, + { + "renderSeconds": 0.0029529333114624023, + "simulationSeconds": 0.012662053108215332, + "tick": 446 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.010318994522094727, + "tick": 447 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.012926936149597168, + "tick": 449 + }, + { + "renderSeconds": 0.0029549598693847656, + "simulationSeconds": 0.007377982139587402, + "tick": 450 + }, + { + "renderSeconds": 0.0031669139862060547, + "simulationSeconds": 0, + "tick": 450 + }, + { + "renderSeconds": 0.002991914749145508, + "simulationSeconds": 0.0069980621337890625, + "tick": 451 + }, + { + "renderSeconds": 0.004259943962097168, + "simulationSeconds": 0.006421923637390137, + "tick": 452 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.0127180814743042, + "tick": 454 + }, + { + "renderSeconds": 0.0031510591506958008, + "simulationSeconds": 0.006986021995544434, + "tick": 455 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.01209402084350586, + "tick": 457 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 9.5367431640625e-07, + "tick": 457 + }, + { + "renderSeconds": 0.0028839111328125, + "simulationSeconds": 0.0065239667892456055, + "tick": 458 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.0058890581130981445, + "tick": 459 + }, + { + "renderSeconds": 0.00289309024810791, + "simulationSeconds": 0.01252603530883789, + "tick": 461 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0.006214022636413574, + "tick": 462 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.006649017333984375, + "tick": 463 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.006649017333984375, + "tick": 464 + }, + { + "renderSeconds": 0.0028499364852905273, + "simulationSeconds": 0.006145000457763672, + "tick": 465 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0, + "tick": 465 + }, + { + "renderSeconds": 0.0029659271240234375, + "simulationSeconds": 0.006376028060913086, + "tick": 466 + }, + { + "renderSeconds": 0.0030061006546020508, + "simulationSeconds": 0.006641983985900879, + "tick": 467 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.012215018272399902, + "tick": 469 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.016093969345092773, + "tick": 471 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0.0060579776763916016, + "tick": 472 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 9.5367431640625e-07, + "tick": 472 + }, + { + "renderSeconds": 0.00317990779876709, + "simulationSeconds": 0.006318092346191406, + "tick": 473 + }, + { + "renderSeconds": 0.0033169984817504883, + "simulationSeconds": 0.00639796257019043, + "tick": 474 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.012874007225036621, + "tick": 476 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.006328105926513672, + "tick": 477 + }, + { + "renderSeconds": 0.0027130842208862305, + "simulationSeconds": 0.00621795654296875, + "tick": 478 + }, + { + "renderSeconds": 0.0031450986862182617, + "simulationSeconds": 0.006634950637817383, + "tick": 479 + }, + { + "renderSeconds": 0.0032519102096557617, + "simulationSeconds": 0.006352066993713379, + "tick": 480 + }, + { + "renderSeconds": 0.0028960704803466797, + "simulationSeconds": 9.5367431640625e-07, + "tick": 480 + }, + { + "renderSeconds": 0.003246903419494629, + "simulationSeconds": 0.009148001670837402, + "tick": 481 + }, + { + "renderSeconds": 0.0026030540466308594, + "simulationSeconds": 0.006324052810668945, + "tick": 482 + }, + { + "renderSeconds": 0.002744913101196289, + "simulationSeconds": 0.015511035919189453, + "tick": 484 + }, + { + "renderSeconds": 0.0029430389404296875, + "simulationSeconds": 0.006208062171936035, + "tick": 485 + }, + { + "renderSeconds": 0.006827950477600098, + "simulationSeconds": 0.005921006202697754, + "tick": 486 + }, + { + "renderSeconds": 0.002770066261291504, + "simulationSeconds": 0.006206989288330078, + "tick": 487 + }, + { + "renderSeconds": 0.0029278993606567383, + "simulationSeconds": 0, + "tick": 487 + }, + { + "renderSeconds": 0.0029599666595458984, + "simulationSeconds": 0.0063849687576293945, + "tick": 488 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 0.007063031196594238, + "tick": 489 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.012717962265014648, + "tick": 491 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.006577014923095703, + "tick": 492 + }, + { + "renderSeconds": 0.00462496280670166, + "simulationSeconds": 0.006554007530212402, + "tick": 493 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.006350994110107422, + "tick": 494 + }, + { + "renderSeconds": 0.0031000375747680664, + "simulationSeconds": 0.006843090057373047, + "tick": 495 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0, + "tick": 495 + }, + { + "renderSeconds": 0.0029391050338745117, + "simulationSeconds": 0.006477952003479004, + "tick": 496 + }, + { + "renderSeconds": 0.0025310516357421875, + "simulationSeconds": 0.006186008453369141, + "tick": 497 + }, + { + "renderSeconds": 0.0071179866790771484, + "simulationSeconds": 0.01314997673034668, + "tick": 499 + }, + { + "renderSeconds": 0.002550959587097168, + "simulationSeconds": 0.006487011909484863, + "tick": 500 + }, + { + "renderSeconds": 0.0025979280471801758, + "simulationSeconds": 0.012394070625305176, + "tick": 501 + }, + { + "renderSeconds": 0.0027909278869628906, + "simulationSeconds": 0.006417036056518555, + "tick": 502 + }, + { + "renderSeconds": 0.0027850866317749023, + "simulationSeconds": 0, + "tick": 502 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.007242083549499512, + "tick": 503 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.006555914878845215, + "tick": 504 + }, + { + "renderSeconds": 0.002581954002380371, + "simulationSeconds": 0.013424038887023926, + "tick": 506 + }, + { + "renderSeconds": 0.0032999515533447266, + "simulationSeconds": 0.006872892379760742, + "tick": 507 + }, + { + "renderSeconds": 0.0027289390563964844, + "simulationSeconds": 0.00686490535736084, + "tick": 508 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006507992744445801, + "tick": 509 + }, + { + "renderSeconds": 0.004467964172363281, + "simulationSeconds": 0.006597995758056641, + "tick": 510 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.05034200000227429, + "moveTicks": 480, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 828, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.44344282150268555, + "preparationSeconds": 0.6099330186843872, + "reducedMotion": true, + "renderSeconds": 1.3611127138137817, + "repetition": 21, + "scenePreparationSeconds": 0.23522603511810303, + "simulationSeconds": 3.4420859813690186, + "snapshotBuildCount": 447, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 35.457416670396924, + "callbackMaxMS": 45.34416666137986, + "postActionRecords": 445, + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.23355424404144287, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0007519721984863281, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007059574127197266, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006399154663085938, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0007300376892089844, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0.005254983901977539, + "tick": 1 + }, + { + "renderSeconds": 0.0022870302200317383, + "simulationSeconds": 0.006112933158874512, + "tick": 2 + }, + { + "renderSeconds": 0.0025099515914916992, + "simulationSeconds": 0.011729955673217773, + "tick": 4 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.006433963775634766, + "tick": 5 + }, + { + "renderSeconds": 0.002564072608947754, + "simulationSeconds": 0.007297039031982422, + "tick": 6 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.006588935852050781, + "tick": 7 + }, + { + "renderSeconds": 0.0030670166015625, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0031849145889282227, + "simulationSeconds": 0.00713503360748291, + "tick": 8 + }, + { + "renderSeconds": 0.0036219358444213867, + "simulationSeconds": 0.008176922798156738, + "tick": 9 + }, + { + "renderSeconds": 0.0034879446029663086, + "simulationSeconds": 0.00981295108795166, + "tick": 10 + }, + { + "renderSeconds": 0.003155946731567383, + "simulationSeconds": 0.016749978065490723, + "tick": 12 + }, + { + "renderSeconds": 0.002795100212097168, + "simulationSeconds": 0.01238095760345459, + "tick": 14 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.01305699348449707, + "tick": 16 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.00678706169128418, + "tick": 17 + }, + { + "renderSeconds": 0.002539992332458496, + "simulationSeconds": 0.012734055519104004, + "tick": 19 + }, + { + "renderSeconds": 0.0030099153518676758, + "simulationSeconds": 0.006371974945068359, + "tick": 20 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.006260037422180176, + "tick": 21 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.006206035614013672, + "tick": 22 + }, + { + "renderSeconds": 0.003040909767150879, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0025249719619750977, + "simulationSeconds": 0.006605982780456543, + "tick": 23 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.0066269636154174805, + "tick": 24 + }, + { + "renderSeconds": 0.0024529695510864258, + "simulationSeconds": 0.006271004676818848, + "tick": 25 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.012953996658325195, + "tick": 27 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.006184101104736328, + "tick": 28 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.006404995918273926, + "tick": 29 + }, + { + "renderSeconds": 0.003059983253479004, + "simulationSeconds": 0.006417989730834961, + "tick": 30 + }, + { + "renderSeconds": 0.003527998924255371, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 30 + }, + { + "renderSeconds": 0.0025800466537475586, + "simulationSeconds": 0.006579041481018066, + "tick": 31 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.006587982177734375, + "tick": 32 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.01333606243133545, + "tick": 34 + }, + { + "renderSeconds": 0.0034409761428833008, + "simulationSeconds": 0.006938934326171875, + "tick": 35 + }, + { + "renderSeconds": 0.0027420520782470703, + "simulationSeconds": 0.006170988082885742, + "tick": 36 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.006587028503417969, + "tick": 37 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.006330966949462891, + "tick": 38 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.006348967552185059, + "tick": 39 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.006342053413391113, + "tick": 40 + }, + { + "renderSeconds": 0.0025320053100585938, + "simulationSeconds": 0.012651920318603516, + "tick": 42 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0.006808042526245117, + "tick": 43 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.0068929195404052734, + "tick": 44 + }, + { + "renderSeconds": 0.00282895565032959, + "simulationSeconds": 0.007313966751098633, + "tick": 45 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.002885103225708008, + "simulationSeconds": 0.007339954376220703, + "tick": 46 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.007423043251037598, + "tick": 47 + }, + { + "renderSeconds": 0.003618955612182617, + "simulationSeconds": 0.017586946487426758, + "tick": 49 + }, + { + "renderSeconds": 0.003329038619995117, + "simulationSeconds": 0.007822036743164062, + "tick": 50 + }, + { + "renderSeconds": 0.0028879642486572266, + "simulationSeconds": 0.013985037803649902, + "tick": 52 + }, + { + "renderSeconds": 0.003229975700378418, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0031229257583618164, + "simulationSeconds": 0.007733941078186035, + "tick": 53 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.006344914436340332, + "tick": 54 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.00665593147277832, + "tick": 55 + }, + { + "renderSeconds": 0.0027130842208862305, + "simulationSeconds": 0.013229012489318848, + "tick": 57 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.00622105598449707, + "tick": 58 + }, + { + "renderSeconds": 0.0031129121780395508, + "simulationSeconds": 0.007606029510498047, + "tick": 59 + }, + { + "renderSeconds": 0.0029458999633789062, + "simulationSeconds": 0.006951093673706055, + "tick": 60 + }, + { + "renderSeconds": 0.0034040212631225586, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0025129318237304688, + "simulationSeconds": 0.006489992141723633, + "tick": 61 + }, + { + "renderSeconds": 0.002557992935180664, + "simulationSeconds": 0.006303071975708008, + "tick": 62 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 0.012120962142944336, + "tick": 64 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.00693202018737793, + "tick": 65 + }, + { + "renderSeconds": 0.002669095993041992, + "simulationSeconds": 0.00701296329498291, + "tick": 66 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.00639796257019043, + "tick": 67 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.006698012351989746, + "tick": 68 + }, + { + "renderSeconds": 0.002684950828552246, + "simulationSeconds": 0.006457090377807617, + "tick": 69 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.006504058837890625, + "tick": 70 + }, + { + "renderSeconds": 0.002720952033996582, + "simulationSeconds": 0.012215971946716309, + "tick": 72 + }, + { + "renderSeconds": 0.00291597843170166, + "simulationSeconds": 0.006212949752807617, + "tick": 73 + }, + { + "renderSeconds": 0.002749919891357422, + "simulationSeconds": 0.007299065589904785, + "tick": 74 + }, + { + "renderSeconds": 0.002599954605102539, + "simulationSeconds": 0.0071489810943603516, + "tick": 75 + }, + { + "renderSeconds": 0.0027529001235961914, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0.006415009498596191, + "tick": 76 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.006561994552612305, + "tick": 77 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.013661980628967285, + "tick": 79 + }, + { + "renderSeconds": 0.003338932991027832, + "simulationSeconds": 0.007534980773925781, + "tick": 80 + }, + { + "renderSeconds": 0.0032900571823120117, + "simulationSeconds": 0.007421970367431641, + "tick": 81 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.007104992866516113, + "tick": 82 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0032999515533447266, + "simulationSeconds": 0.006439924240112305, + "tick": 83 + }, + { + "renderSeconds": 0.002794981002807617, + "simulationSeconds": 0.006618022918701172, + "tick": 84 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.006602048873901367, + "tick": 85 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.012542963027954102, + "tick": 87 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.006360054016113281, + "tick": 88 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.006690025329589844, + "tick": 89 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.0061789751052856445, + "tick": 90 + }, + { + "renderSeconds": 0.0028319358825683594, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.0027670860290527344, + "simulationSeconds": 0.007243037223815918, + "tick": 91 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.0070639848709106445, + "tick": 92 + }, + { + "renderSeconds": 0.0026799440383911133, + "simulationSeconds": 0.013811945915222168, + "tick": 94 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.006569027900695801, + "tick": 95 + }, + { + "renderSeconds": 0.0026770830154418945, + "simulationSeconds": 0.005993008613586426, + "tick": 96 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.00601506233215332, + "tick": 97 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0025169849395751953, + "simulationSeconds": 0.006803035736083984, + "tick": 98 + }, + { + "renderSeconds": 0.0031499862670898438, + "simulationSeconds": 0.007122039794921875, + "tick": 99 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.007120966911315918, + "tick": 100 + }, + { + "renderSeconds": 0.002584099769592285, + "simulationSeconds": 0.012649893760681152, + "tick": 102 + }, + { + "renderSeconds": 0.0031249523162841797, + "simulationSeconds": 0.006219983100891113, + "tick": 103 + }, + { + "renderSeconds": 0.0033780336380004883, + "simulationSeconds": 0.006856083869934082, + "tick": 104 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0.006898999214172363, + "tick": 105 + }, + { + "renderSeconds": 0.0026770830154418945, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.00266110897064209, + "simulationSeconds": 0.006837010383605957, + "tick": 106 + }, + { + "renderSeconds": 0.003156900405883789, + "simulationSeconds": 0.007418036460876465, + "tick": 107 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.013971090316772461, + "tick": 109 + }, + { + "renderSeconds": 0.0032650232315063477, + "simulationSeconds": 0.007130980491638184, + "tick": 110 + }, + { + "renderSeconds": 0.0031319856643676758, + "simulationSeconds": 0.007918000221252441, + "tick": 111 + }, + { + "renderSeconds": 0.0029600858688354492, + "simulationSeconds": 0.006325960159301758, + "tick": 112 + }, + { + "renderSeconds": 0.0030939579010009766, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.006556034088134766, + "tick": 113 + }, + { + "renderSeconds": 0.003152012825012207, + "simulationSeconds": 0.007794976234436035, + "tick": 114 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.006152987480163574, + "tick": 115 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.01276099681854248, + "tick": 117 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.007031083106994629, + "tick": 118 + }, + { + "renderSeconds": 0.0024999380111694336, + "simulationSeconds": 0.0063419342041015625, + "tick": 119 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.006455063819885254, + "tick": 120 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003219008445739746, + "simulationSeconds": 0.008193016052246094, + "tick": 121 + }, + { + "renderSeconds": 0.0029410123825073242, + "simulationSeconds": 0.007310032844543457, + "tick": 122 + }, + { + "renderSeconds": 0.0026960372924804688, + "simulationSeconds": 0.013319969177246094, + "tick": 124 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006062030792236328, + "tick": 125 + }, + { + "renderSeconds": 0.003260970115661621, + "simulationSeconds": 0.007139921188354492, + "tick": 126 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0.00699305534362793, + "tick": 127 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002599954605102539, + "simulationSeconds": 0.006862044334411621, + "tick": 128 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006533026695251465, + "tick": 129 + }, + { + "renderSeconds": 0.0023300647735595703, + "simulationSeconds": 0.0064699649810791016, + "tick": 130 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.01243293285369873, + "tick": 132 + }, + { + "renderSeconds": 0.0021049976348876953, + "simulationSeconds": 0.006682038307189941, + "tick": 133 + }, + { + "renderSeconds": 0.0022200345993041992, + "simulationSeconds": 0.006742954254150391, + "tick": 134 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006794929504394531, + "tick": 135 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006429910659790039, + "tick": 136 + }, + { + "renderSeconds": 0.0026339292526245117, + "simulationSeconds": 0.006608009338378906, + "tick": 137 + }, + { + "renderSeconds": 0.002460002899169922, + "simulationSeconds": 0.011621952056884766, + "tick": 139 + }, + { + "renderSeconds": 0.0024629831314086914, + "simulationSeconds": 0.006538987159729004, + "tick": 140 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006849050521850586, + "tick": 141 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.006500959396362305, + "tick": 142 + }, + { + "renderSeconds": 0.0025300979614257812, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0023059844970703125, + "simulationSeconds": 0.006658077239990234, + "tick": 143 + }, + { + "renderSeconds": 0.002341032028198242, + "simulationSeconds": 0.006459951400756836, + "tick": 144 + }, + { + "renderSeconds": 0.0020439624786376953, + "simulationSeconds": 0.006275057792663574, + "tick": 145 + }, + { + "renderSeconds": 0.0025539398193359375, + "simulationSeconds": 0.012678980827331543, + "tick": 147 + }, + { + "renderSeconds": 0.0028809309005737305, + "simulationSeconds": 0.007131099700927734, + "tick": 148 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.006956934928894043, + "tick": 149 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.006520986557006836, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04431929165730253, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 232, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006038546562194824, + "preparationSeconds": 0.4766240119934082, + "reducedMotion": true, + "renderSeconds": 0.4132840633392334, + "repetition": 3, + "scenePreparationSeconds": 0.16477501392364502, + "simulationSeconds": 1.0081028938293457, + "snapshotBuildCount": 149, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 36.565624992363155, + "postActionRecords": 147, + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics" + } +] diff --git a/docs/review/cadence-live-comparison/contact-observations.json b/docs/review/cadence-live-comparison/contact-observations.json new file mode 100644 index 00000000..8fafbab3 --- /dev/null +++ b/docs/review/cadence-live-comparison/contact-observations.json @@ -0,0 +1,18683 @@ +{ + "status": "MEASUREMENTS_NOT_VISUAL_ACCEPTANCE", + "method": "Projected authored toe plus rendered root; not pixel tracked. Single observations yield null displacement. Holds and missing frames retained. No tolerance inferred.", + "segments": [ + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229598.33333333337, + "tick": 27, + "frame": 8, + "toeX": 228.0, + "toeY": 290.5 + }, + { + "time": 229598.35000000006, + "tick": 28, + "frame": 8, + "toeX": 228.0, + "toeY": 288.5 + }, + { + "time": 229598.36666666673, + "tick": 29, + "frame": 9, + "toeX": 228.0, + "toeY": 290.25 + }, + { + "time": 229598.3833333334, + "tick": 30, + "frame": 9, + "toeX": 228.0, + "toeY": 288.25 + }, + { + "time": 229598.40000000005, + "tick": 31, + "frame": 10, + "toeX": 228.0, + "toeY": 290.0 + }, + { + "time": 229598.41666666672, + "tick": 32, + "frame": 11, + "toeX": 228.0, + "toeY": 291.75 + }, + { + "time": 229598.43333333338, + "tick": 33, + "frame": 11, + "toeX": 228.0, + "toeY": 289.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229598.83333333337, + "tick": 57, + "frame": 8, + "toeX": 228.0, + "toeY": 230.5 + }, + { + "time": 229598.85000000006, + "tick": 58, + "frame": 8, + "toeX": 228.0, + "toeY": 228.5 + }, + { + "time": 229598.86666666673, + "tick": 59, + "frame": 9, + "toeX": 228.0, + "toeY": 230.25 + }, + { + "time": 229598.8833333334, + "tick": 60, + "frame": 9, + "toeX": 228.0, + "toeY": 228.25 + }, + { + "time": 229598.90000000005, + "tick": 61, + "frame": 10, + "toeX": 228.0, + "toeY": 230.0 + }, + { + "time": 229598.91666666672, + "tick": 62, + "frame": 11, + "toeX": 228.0, + "toeY": 231.75 + }, + { + "time": 229598.93333333338, + "tick": 63, + "frame": 11, + "toeX": 228.0, + "toeY": 229.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229599.33333333337, + "tick": 87, + "frame": 8, + "toeX": 228.0, + "toeY": 170.5 + }, + { + "time": 229599.35000000006, + "tick": 88, + "frame": 8, + "toeX": 228.0, + "toeY": 168.5 + }, + { + "time": 229599.36666666673, + "tick": 89, + "frame": 9, + "toeX": 228.0, + "toeY": 170.25 + }, + { + "time": 229599.3833333334, + "tick": 90, + "frame": 9, + "toeX": 228.0, + "toeY": 168.25 + }, + { + "time": 229599.40000000005, + "tick": 91, + "frame": 10, + "toeX": 228.0, + "toeY": 170.0 + }, + { + "time": 229599.41666666672, + "tick": 92, + "frame": 11, + "toeX": 228.0, + "toeY": 171.75 + }, + { + "time": 229599.43333333338, + "tick": 93, + "frame": 11, + "toeX": 228.0, + "toeY": 169.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 4, + "distinctFrames": 2, + "firstFrame": 8, + "lastFrame": 9, + "durationSeconds": 0.0500000000174623, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 229599.83333333337, + "tick": 117, + "frame": 8, + "toeX": 228.0, + "toeY": 110.5 + }, + { + "time": 229599.85000000006, + "tick": 118, + "frame": 8, + "toeX": 228.0, + "toeY": 108.5 + }, + { + "time": 229599.86666666673, + "tick": 119, + "frame": 9, + "toeX": 228.0, + "toeY": 110.25 + }, + { + "time": 229599.8833333334, + "tick": 120, + "frame": 9, + "toeX": 228.0, + "toeY": 108.25 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 2, + "distinctFrames": 2, + "firstFrame": 0, + "lastFrame": 2, + "durationSeconds": 0.08642566666821949, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229598.07291012505, + "tick": 12, + "frame": 0, + "toeX": 220.0, + "toeY": 320.5 + }, + { + "time": 229598.15933579172, + "tick": 17, + "frame": 2, + "toeX": 220.0, + "toeY": 318.0 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229598.58333333337, + "tick": 42, + "frame": 0, + "toeX": 220.0, + "toeY": 260.5 + }, + { + "time": 229598.60000000006, + "tick": 43, + "frame": 0, + "toeX": 220.0, + "toeY": 258.5 + }, + { + "time": 229598.61666666673, + "tick": 44, + "frame": 1, + "toeX": 220.0, + "toeY": 260.25 + }, + { + "time": 229598.6333333334, + "tick": 45, + "frame": 1, + "toeX": 220.0, + "toeY": 258.25 + }, + { + "time": 229598.65000000005, + "tick": 46, + "frame": 2, + "toeX": 220.0, + "toeY": 260.0 + }, + { + "time": 229598.66666666672, + "tick": 47, + "frame": 3, + "toeX": 220.0, + "toeY": 261.75 + }, + { + "time": 229598.68333333338, + "tick": 48, + "frame": 3, + "toeX": 220.0, + "toeY": 259.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229599.08333333337, + "tick": 72, + "frame": 0, + "toeX": 220.0, + "toeY": 200.5 + }, + { + "time": 229599.10000000006, + "tick": 73, + "frame": 0, + "toeX": 220.0, + "toeY": 198.5 + }, + { + "time": 229599.11666666673, + "tick": 74, + "frame": 1, + "toeX": 220.0, + "toeY": 200.25 + }, + { + "time": 229599.1333333334, + "tick": 75, + "frame": 1, + "toeX": 220.0, + "toeY": 198.25 + }, + { + "time": 229599.15000000005, + "tick": 76, + "frame": 2, + "toeX": 220.0, + "toeY": 200.0 + }, + { + "time": 229599.16666666672, + "tick": 77, + "frame": 3, + "toeX": 220.0, + "toeY": 201.75 + }, + { + "time": 229599.18333333338, + "tick": 78, + "frame": 3, + "toeX": 220.0, + "toeY": 199.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229599.58333333337, + "tick": 102, + "frame": 0, + "toeX": 220.0, + "toeY": 140.5 + }, + { + "time": 229599.60000000006, + "tick": 103, + "frame": 0, + "toeX": 220.0, + "toeY": 138.5 + }, + { + "time": 229599.61666666673, + "tick": 104, + "frame": 1, + "toeX": 220.0, + "toeY": 140.25 + }, + { + "time": 229599.6333333334, + "tick": 105, + "frame": 1, + "toeX": 220.0, + "toeY": 138.25 + }, + { + "time": 229599.65000000005, + "tick": 106, + "frame": 2, + "toeX": 220.0, + "toeY": 140.0 + }, + { + "time": 229599.66666666672, + "tick": 107, + "frame": 3, + "toeX": 220.0, + "toeY": 141.75 + }, + { + "time": 229599.68333333338, + "tick": 108, + "frame": 3, + "toeX": 220.0, + "toeY": 139.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229605.66666666672, + "tick": 30, + "frame": 8, + "toeX": 228.0, + "toeY": 284.5 + }, + { + "time": 229605.68333333338, + "tick": 31, + "frame": 9, + "toeX": 228.0, + "toeY": 286.25 + }, + { + "time": 229605.70000000004, + "tick": 32, + "frame": 9, + "toeX": 228.0, + "toeY": 284.25 + }, + { + "time": 229605.7166666667, + "tick": 33, + "frame": 10, + "toeX": 228.0, + "toeY": 286.0 + }, + { + "time": 229605.7333333334, + "tick": 34, + "frame": 10, + "toeX": 228.0, + "toeY": 284.0 + }, + { + "time": 229605.76666666672, + "tick": 36, + "frame": 11, + "toeX": 228.0, + "toeY": 283.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229606.16666666672, + "tick": 60, + "frame": 8, + "toeX": 228.0, + "toeY": 224.5 + }, + { + "time": 229606.18333333338, + "tick": 61, + "frame": 9, + "toeX": 228.0, + "toeY": 226.25 + }, + { + "time": 229606.20000000004, + "tick": 62, + "frame": 9, + "toeX": 228.0, + "toeY": 224.25 + }, + { + "time": 229606.2166666667, + "tick": 63, + "frame": 10, + "toeX": 228.0, + "toeY": 226.0 + }, + { + "time": 229606.2333333334, + "tick": 64, + "frame": 10, + "toeX": 228.0, + "toeY": 224.0 + }, + { + "time": 229606.25000000006, + "tick": 65, + "frame": 11, + "toeX": 228.0, + "toeY": 225.75 + }, + { + "time": 229606.26666666672, + "tick": 66, + "frame": 11, + "toeX": 228.0, + "toeY": 223.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229606.66666666672, + "tick": 90, + "frame": 8, + "toeX": 228.0, + "toeY": 164.5 + }, + { + "time": 229606.68333333338, + "tick": 91, + "frame": 9, + "toeX": 228.0, + "toeY": 166.25 + }, + { + "time": 229606.70000000004, + "tick": 92, + "frame": 9, + "toeX": 228.0, + "toeY": 164.25 + }, + { + "time": 229606.7166666667, + "tick": 93, + "frame": 10, + "toeX": 228.0, + "toeY": 166.0 + }, + { + "time": 229606.7333333334, + "tick": 94, + "frame": 10, + "toeX": 228.0, + "toeY": 164.0 + }, + { + "time": 229606.75000000006, + "tick": 95, + "frame": 11, + "toeX": 228.0, + "toeY": 165.75 + }, + { + "time": 229606.76666666672, + "tick": 96, + "frame": 11, + "toeX": 228.0, + "toeY": 163.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 1, + "distinctFrames": 1, + "firstFrame": 8, + "lastFrame": 8, + "durationSeconds": 0.0, + "rangeLogicalPixels": null, + "observations": [ + { + "time": 229607.16666666672, + "tick": 120, + "frame": 8, + "toeX": 228.0, + "toeY": 104.5 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 2, + "distinctFrames": 2, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.0955838333175052, + "rangeLogicalPixels": 1.25, + "observations": [ + { + "time": 229605.40028691673, + "tick": 14, + "frame": 0, + "toeX": 220.0, + "toeY": 316.5 + }, + { + "time": 229605.49587075005, + "tick": 19, + "frame": 3, + "toeX": 220.0, + "toeY": 317.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229605.91666666672, + "tick": 45, + "frame": 0, + "toeX": 220.0, + "toeY": 254.5 + }, + { + "time": 229605.93333333338, + "tick": 46, + "frame": 1, + "toeX": 220.0, + "toeY": 256.25 + }, + { + "time": 229605.95000000004, + "tick": 47, + "frame": 1, + "toeX": 220.0, + "toeY": 254.25 + }, + { + "time": 229605.9666666667, + "tick": 48, + "frame": 2, + "toeX": 220.0, + "toeY": 256.0 + }, + { + "time": 229605.9833333334, + "tick": 49, + "frame": 2, + "toeX": 220.0, + "toeY": 254.0 + }, + { + "time": 229606.00000000006, + "tick": 50, + "frame": 3, + "toeX": 220.0, + "toeY": 255.75 + }, + { + "time": 229606.01666666672, + "tick": 51, + "frame": 3, + "toeX": 220.0, + "toeY": 253.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229606.41666666672, + "tick": 75, + "frame": 0, + "toeX": 220.0, + "toeY": 194.5 + }, + { + "time": 229606.43333333338, + "tick": 76, + "frame": 1, + "toeX": 220.0, + "toeY": 196.25 + }, + { + "time": 229606.45000000004, + "tick": 77, + "frame": 1, + "toeX": 220.0, + "toeY": 194.25 + }, + { + "time": 229606.4666666667, + "tick": 78, + "frame": 2, + "toeX": 220.0, + "toeY": 196.0 + }, + { + "time": 229606.4833333334, + "tick": 79, + "frame": 2, + "toeX": 220.0, + "toeY": 194.0 + }, + { + "time": 229606.50000000006, + "tick": 80, + "frame": 3, + "toeX": 220.0, + "toeY": 195.75 + }, + { + "time": 229606.51666666672, + "tick": 81, + "frame": 3, + "toeX": 220.0, + "toeY": 193.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229606.91666666672, + "tick": 105, + "frame": 0, + "toeX": 220.0, + "toeY": 134.5 + }, + { + "time": 229606.93333333338, + "tick": 106, + "frame": 1, + "toeX": 220.0, + "toeY": 136.25 + }, + { + "time": 229606.95000000004, + "tick": 107, + "frame": 1, + "toeX": 220.0, + "toeY": 134.25 + }, + { + "time": 229606.9666666667, + "tick": 108, + "frame": 2, + "toeX": 220.0, + "toeY": 136.0 + }, + { + "time": 229606.9833333334, + "tick": 109, + "frame": 2, + "toeX": 220.0, + "toeY": 134.0 + }, + { + "time": 229607.00000000006, + "tick": 110, + "frame": 3, + "toeX": 220.0, + "toeY": 135.75 + }, + { + "time": 229607.01666666672, + "tick": 111, + "frame": 3, + "toeX": 220.0, + "toeY": 133.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229616.6333333334, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 328.5 + }, + { + "time": 229616.65000000005, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 327.5 + }, + { + "time": 229616.66666666672, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 330.25 + }, + { + "time": 229616.68333333338, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 329.25 + }, + { + "time": 229616.70000000004, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 332.0 + }, + { + "time": 229616.7166666667, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 331.0 + }, + { + "time": 229616.7333333334, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 333.75 + }, + { + "time": 229616.75000000006, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 332.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229617.1333333334, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 298.5 + }, + { + "time": 229617.15000000005, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 297.5 + }, + { + "time": 229617.16666666672, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 300.25 + }, + { + "time": 229617.18333333338, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 299.25 + }, + { + "time": 229617.20000000004, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 302.0 + }, + { + "time": 229617.2166666667, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 301.0 + }, + { + "time": 229617.2333333334, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 303.75 + }, + { + "time": 229617.25000000006, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 302.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229617.6333333334, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 268.5 + }, + { + "time": 229617.65000000005, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 267.5 + }, + { + "time": 229617.66666666672, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 270.25 + }, + { + "time": 229617.68333333338, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 269.25 + }, + { + "time": 229617.70000000004, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 272.0 + }, + { + "time": 229617.7166666667, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 271.0 + }, + { + "time": 229617.7333333334, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 273.75 + }, + { + "time": 229617.75000000006, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 272.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229618.1333333334, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 238.5 + }, + { + "time": 229618.15000000005, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 237.5 + }, + { + "time": 229618.16666666672, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 240.25 + }, + { + "time": 229618.18333333338, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 239.25 + }, + { + "time": 229618.20000000004, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 242.0 + }, + { + "time": 229618.2166666667, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 241.0 + }, + { + "time": 229618.2333333334, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 243.75 + }, + { + "time": 229618.25000000006, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 242.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229616.3833333334, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229616.40000000005, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229616.41666666672, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 345.25 + }, + { + "time": 229616.43333333338, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 344.25 + }, + { + "time": 229616.45000000004, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 347.0 + }, + { + "time": 229616.4666666667, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 346.0 + }, + { + "time": 229616.4833333334, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 348.75 + }, + { + "time": 229616.50000000006, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 347.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229616.8833333334, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 313.5 + }, + { + "time": 229616.90000000005, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 312.5 + }, + { + "time": 229616.91666666672, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 315.25 + }, + { + "time": 229616.93333333338, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 314.25 + }, + { + "time": 229616.95000000004, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 317.0 + }, + { + "time": 229616.9666666667, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 316.0 + }, + { + "time": 229616.9833333334, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 318.75 + }, + { + "time": 229617.00000000006, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 317.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229617.3833333334, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229617.40000000005, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229617.41666666672, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 285.25 + }, + { + "time": 229617.43333333338, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 284.25 + }, + { + "time": 229617.45000000004, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 287.0 + }, + { + "time": 229617.4666666667, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 286.0 + }, + { + "time": 229617.4833333334, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 288.75 + }, + { + "time": 229617.50000000006, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 287.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229617.8833333334, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 253.5 + }, + { + "time": 229617.90000000005, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 252.5 + }, + { + "time": 229617.91666666672, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 255.25 + }, + { + "time": 229617.93333333338, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 254.25 + }, + { + "time": 229617.95000000004, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 257.0 + }, + { + "time": 229617.9666666667, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 256.0 + }, + { + "time": 229617.9833333334, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 258.75 + }, + { + "time": 229618.00000000006, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 257.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229635.0666666667, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229635.08333333337, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229635.10000000006, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229635.11666666673, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 229635.1333333334, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229635.15000000005, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 229635.16666666672, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229635.18333333338, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229635.5666666667, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229635.58333333337, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229635.60000000006, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229635.61666666673, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 248.25 + }, + { + "time": 229635.6333333334, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229635.65000000005, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 229635.66666666672, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229635.68333333338, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229636.0666666667, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229636.08333333337, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229636.10000000006, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229636.11666666673, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 188.25 + }, + { + "time": 229636.1333333334, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229636.15000000005, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 229636.16666666672, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229636.18333333338, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229636.5666666667, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229636.58333333337, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229636.60000000006, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229636.61666666673, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 128.25 + }, + { + "time": 229636.6333333334, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229636.65000000005, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 229636.66666666672, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229636.68333333338, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229634.8166666667, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229634.83333333337, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229634.85000000006, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229634.86666666673, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 338.25 + }, + { + "time": 229634.8833333334, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229634.90000000005, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 229634.91666666672, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229634.93333333338, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229635.3166666667, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229635.33333333337, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229635.35000000006, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229635.36666666673, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 278.25 + }, + { + "time": 229635.3833333334, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229635.40000000005, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 229635.41666666672, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229635.43333333338, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229635.8166666667, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229635.83333333337, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229635.85000000006, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229635.86666666673, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 218.25 + }, + { + "time": 229635.8833333334, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229635.90000000005, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 229635.91666666672, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229635.93333333338, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229636.3166666667, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229636.33333333337, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229636.35000000006, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229636.36666666673, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 158.25 + }, + { + "time": 229636.3833333334, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229636.40000000005, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 229636.41666666672, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229636.43333333338, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229620.35000000006, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 336.0 + }, + { + "time": 229620.36666666673, + "tick": 18, + "frame": 8, + "toeX": 228.0, + "toeY": 335.5 + }, + { + "time": 229620.3833333334, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 338.75 + }, + { + "time": 229620.40000000005, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 338.25 + }, + { + "time": 229620.41666666672, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 341.5 + }, + { + "time": 229620.43333333338, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 341.0 + }, + { + "time": 229620.45000000004, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 344.75 + }, + { + "time": 229620.4666666667, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 344.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229620.85000000006, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 321.0 + }, + { + "time": 229620.86666666673, + "tick": 48, + "frame": 8, + "toeX": 228.0, + "toeY": 320.5 + }, + { + "time": 229620.8833333334, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 323.75 + }, + { + "time": 229620.90000000005, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 323.25 + }, + { + "time": 229620.91666666672, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 326.5 + }, + { + "time": 229620.93333333338, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 326.0 + }, + { + "time": 229620.95000000004, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 329.75 + }, + { + "time": 229620.9666666667, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 329.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229621.35000000006, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 306.0 + }, + { + "time": 229621.36666666673, + "tick": 78, + "frame": 8, + "toeX": 228.0, + "toeY": 305.5 + }, + { + "time": 229621.3833333334, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 308.75 + }, + { + "time": 229621.40000000005, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 229621.41666666672, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 229621.43333333338, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229621.45000000004, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 314.75 + }, + { + "time": 229621.4666666667, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 314.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229621.85000000006, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 291.0 + }, + { + "time": 229621.86666666673, + "tick": 108, + "frame": 8, + "toeX": 228.0, + "toeY": 290.5 + }, + { + "time": 229621.8833333334, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 293.75 + }, + { + "time": 229621.90000000005, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 293.25 + }, + { + "time": 229621.91666666672, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 296.5 + }, + { + "time": 229621.93333333338, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 296.0 + }, + { + "time": 229621.95000000004, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 299.75 + }, + { + "time": 229621.9666666667, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 299.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229620.10000000006, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229620.11666666673, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 343.0 + }, + { + "time": 229620.1333333334, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 346.25 + }, + { + "time": 229620.15000000005, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 345.75 + }, + { + "time": 229620.16666666672, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 349.0 + }, + { + "time": 229620.18333333338, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 348.5 + }, + { + "time": 229620.20000000004, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 352.25 + }, + { + "time": 229620.2166666667, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 351.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229620.60000000006, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 328.5 + }, + { + "time": 229620.61666666673, + "tick": 33, + "frame": 0, + "toeX": 220.0, + "toeY": 328.0 + }, + { + "time": 229620.6333333334, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 331.25 + }, + { + "time": 229620.65000000005, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 330.75 + }, + { + "time": 229620.66666666672, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 334.0 + }, + { + "time": 229620.68333333338, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 333.5 + }, + { + "time": 229620.70000000004, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 337.25 + }, + { + "time": 229620.7166666667, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 336.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229621.10000000006, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 313.5 + }, + { + "time": 229621.11666666673, + "tick": 63, + "frame": 0, + "toeX": 220.0, + "toeY": 313.0 + }, + { + "time": 229621.1333333334, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 316.25 + }, + { + "time": 229621.15000000005, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 315.75 + }, + { + "time": 229621.16666666672, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 319.0 + }, + { + "time": 229621.18333333338, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 318.5 + }, + { + "time": 229621.20000000004, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 322.25 + }, + { + "time": 229621.2166666667, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 321.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229621.60000000006, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 298.5 + }, + { + "time": 229621.61666666673, + "tick": 93, + "frame": 0, + "toeX": 220.0, + "toeY": 298.0 + }, + { + "time": 229621.6333333334, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 301.25 + }, + { + "time": 229621.65000000005, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 300.75 + }, + { + "time": 229621.66666666672, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 304.0 + }, + { + "time": 229621.68333333338, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 303.5 + }, + { + "time": 229621.70000000004, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 307.25 + }, + { + "time": 229621.7166666667, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 306.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229601.93333333338, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229601.95000000004, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229601.9666666667, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 229601.9833333334, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 229602.00000000006, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229602.01666666672, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 229602.03333333338, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229602.05000000005, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229602.43333333338, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229602.45000000004, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229602.4666666667, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229602.4833333334, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 248.25 + }, + { + "time": 229602.50000000006, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229602.51666666672, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 229602.55000000005, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229602.93333333338, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229602.95000000004, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229602.9666666667, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229602.9833333334, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 188.25 + }, + { + "time": 229603.00000000006, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229603.01666666672, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 229603.03333333338, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229603.05000000005, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229603.43333333338, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229603.45000000004, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229603.4666666667, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229603.4833333334, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 128.25 + }, + { + "time": 229603.50000000006, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229603.51666666672, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 229603.53333333338, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229603.55000000005, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.25, + "observations": [ + { + "time": 229601.68333333338, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229601.70000000004, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229601.7166666667, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229601.7333333334, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 338.25 + }, + { + "time": 229601.75000000006, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229601.78333333338, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229601.80000000005, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229602.18333333338, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229602.20000000004, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229602.2166666667, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229602.2333333334, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 278.25 + }, + { + "time": 229602.25000000006, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229602.26666666672, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 229602.28333333338, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229602.30000000005, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229602.68333333338, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229602.70000000004, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229602.7166666667, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229602.7333333334, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 218.25 + }, + { + "time": 229602.75000000006, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229602.76666666672, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 229602.78333333338, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229602.80000000005, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229603.18333333338, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229603.20000000004, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229603.2166666667, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229603.2333333334, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 158.25 + }, + { + "time": 229603.25000000006, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229603.26666666672, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 229603.28333333338, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229603.30000000005, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229624.1333333334, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229624.15000000005, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229624.16666666672, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 229624.18333333338, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229624.20000000004, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229624.2166666667, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229624.2333333334, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229624.25000000006, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229624.6333333334, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229624.65000000005, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229624.66666666672, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229624.68333333338, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229624.70000000004, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229624.7166666667, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229624.7333333334, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229624.75000000006, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229625.1333333334, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229625.15000000005, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229625.16666666672, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229625.18333333338, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229625.20000000004, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229625.2166666667, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229625.2333333334, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229625.25000000006, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229625.6333333334, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229625.65000000005, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229625.66666666672, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229625.68333333338, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229625.70000000004, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229625.7166666667, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229625.7333333334, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229625.75000000006, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229623.8833333334, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229623.90000000005, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229623.91666666672, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229623.93333333338, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229623.95000000004, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229623.9666666667, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229623.9833333334, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229624.00000000006, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229624.3833333334, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229624.40000000005, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229624.41666666672, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229624.43333333338, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229624.45000000004, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229624.4666666667, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229624.4833333334, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229624.50000000006, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229624.8833333334, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229624.90000000005, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229624.91666666672, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229624.93333333338, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229624.95000000004, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229624.9666666667, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229624.9833333334, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229625.00000000006, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229625.3833333334, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229625.40000000005, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229625.41666666672, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229625.43333333338, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229625.45000000004, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229625.4666666667, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229625.4833333334, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229625.50000000006, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10286024998640642, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 229612.85000000006, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229612.86666666673, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229612.90000000005, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229612.91666666672, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229612.95286025005, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229613.35000000006, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229613.36666666673, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229613.3833333334, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229613.40000000005, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229613.41666666672, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229613.43333333338, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229613.45000000004, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229613.4666666667, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229613.85000000006, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229613.86666666673, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229613.8833333334, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229613.90000000005, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229613.91666666672, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229613.93333333338, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229613.95000000004, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229613.9666666667, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229614.35000000006, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229614.36666666673, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229614.3833333334, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229614.40000000005, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229614.41666666672, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229614.43333333338, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229614.45000000004, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229614.4666666667, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229612.60000000006, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229612.61666666673, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229612.6333333334, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229612.65000000005, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229612.66666666672, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229612.68333333338, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229612.70000000004, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229612.7166666667, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229613.10000000006, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229613.11666666673, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229613.1333333334, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229613.15000000005, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229613.16666666672, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229613.18333333338, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229613.20000000004, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229613.2166666667, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229613.60000000006, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229613.61666666673, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229613.6333333334, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229613.65000000005, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229613.66666666672, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229613.68333333338, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229613.70000000004, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229613.7166666667, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229614.10000000006, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229614.11666666673, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229614.1333333334, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229614.15000000005, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229614.16666666672, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229614.18333333338, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229614.20000000004, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229614.2166666667, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229609.10000000006, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229609.11666666673, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229609.1333333334, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 229609.15000000005, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229609.16666666672, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229609.18333333338, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229609.20000000004, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229609.2166666667, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229609.60000000006, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229609.61666666673, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229609.6333333334, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229609.65000000005, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229609.66666666672, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229609.68333333338, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229609.70000000004, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229609.7166666667, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229610.10000000006, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229610.11666666673, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229610.1333333334, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229610.15000000005, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229610.16666666672, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229610.18333333338, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229610.20000000004, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229610.2166666667, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229610.60000000006, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229610.61666666673, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229610.6333333334, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229610.65000000005, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229610.66666666672, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229610.68333333338, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229610.70000000004, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229610.7166666667, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229608.85000000006, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229608.86666666673, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229608.8833333334, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229608.90000000005, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229608.91666666672, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229608.93333333338, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229608.95000000004, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229608.9666666667, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229609.35000000006, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229609.36666666673, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229609.3833333334, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229609.40000000005, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229609.41666666672, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229609.43333333338, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229609.45000000004, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229609.4666666667, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229609.85000000006, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229609.86666666673, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229609.8833333334, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229609.90000000005, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229609.91666666672, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229609.93333333338, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229609.95000000004, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229609.9666666667, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229610.35000000006, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229610.36666666673, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229610.3833333334, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229610.40000000005, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229610.41666666672, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229610.43333333338, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229610.45000000004, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229610.4666666667, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229627.7166666667, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229627.7333333334, + "tick": 18, + "frame": 8, + "toeX": 228.0, + "toeY": 308.5 + }, + { + "time": 229627.75000000006, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229627.76666666672, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 229627.78333333338, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229627.80000000005, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 229627.8166666667, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229627.83333333337, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229628.2166666667, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229628.2333333334, + "tick": 48, + "frame": 8, + "toeX": 228.0, + "toeY": 248.5 + }, + { + "time": 229628.25000000006, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229628.26666666672, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 248.25 + }, + { + "time": 229628.28333333338, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229628.30000000005, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 229628.3166666667, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229628.33333333337, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229628.7166666667, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229628.7333333334, + "tick": 78, + "frame": 8, + "toeX": 228.0, + "toeY": 188.5 + }, + { + "time": 229628.75000000006, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229628.76666666672, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 188.25 + }, + { + "time": 229628.78333333338, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229628.80000000005, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 229628.8166666667, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229628.83333333337, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229629.2166666667, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229629.2333333334, + "tick": 108, + "frame": 8, + "toeX": 228.0, + "toeY": 128.5 + }, + { + "time": 229629.25000000006, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229629.26666666672, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 128.25 + }, + { + "time": 229629.28333333338, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229629.30000000005, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 229629.3166666667, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229629.33333333337, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229627.4666666667, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229627.4833333334, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 338.5 + }, + { + "time": 229627.50000000006, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229627.51666666672, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 338.25 + }, + { + "time": 229627.53333333338, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229627.55000000005, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 229627.5666666667, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229627.58333333337, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229627.9666666667, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229627.9833333334, + "tick": 33, + "frame": 0, + "toeX": 220.0, + "toeY": 278.5 + }, + { + "time": 229628.00000000006, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229628.01666666672, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 278.25 + }, + { + "time": 229628.03333333338, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229628.05000000005, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 229628.0666666667, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229628.08333333337, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229628.4666666667, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229628.4833333334, + "tick": 63, + "frame": 0, + "toeX": 220.0, + "toeY": 218.5 + }, + { + "time": 229628.50000000006, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229628.51666666672, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 218.25 + }, + { + "time": 229628.53333333338, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229628.55000000005, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 229628.5666666667, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229628.58333333337, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229628.9666666667, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229628.9833333334, + "tick": 93, + "frame": 0, + "toeX": 220.0, + "toeY": 158.5 + }, + { + "time": 229629.00000000006, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229629.01666666672, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 158.25 + }, + { + "time": 229629.03333333338, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229629.05000000005, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 229629.0666666667, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229629.08333333337, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 15, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229522.65000000005, + "tick": 31, + "frame": 8, + "toeX": 228.0, + "toeY": 313.5 + }, + { + "time": 229522.66666666672, + "tick": 32, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229522.68333333338, + "tick": 33, + "frame": 8, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 229522.70000000004, + "tick": 34, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229522.7166666667, + "tick": 35, + "frame": 9, + "toeX": 228.0, + "toeY": 313.25 + }, + { + "time": 229522.7333333334, + "tick": 37, + "frame": 9, + "toeX": 228.0, + "toeY": 311.25 + }, + { + "time": 229522.75000000006, + "tick": 37, + "frame": 9, + "toeX": 228.0, + "toeY": 311.25 + }, + { + "time": 229522.76666666672, + "tick": 38, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229522.78333333338, + "tick": 39, + "frame": 10, + "toeX": 228.0, + "toeY": 313.0 + }, + { + "time": 229522.80000000005, + "tick": 40, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229522.8166666667, + "tick": 41, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229522.83333333337, + "tick": 42, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229522.85000000006, + "tick": 44, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229522.86666666673, + "tick": 45, + "frame": 11, + "toeX": 228.0, + "toeY": 310.75 + }, + { + "time": 229522.8833333334, + "tick": 45, + "frame": 11, + "toeX": 228.0, + "toeY": 310.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 15, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229523.65000000005, + "tick": 91, + "frame": 8, + "toeX": 228.0, + "toeY": 253.5 + }, + { + "time": 229523.66666666672, + "tick": 92, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229523.68333333338, + "tick": 93, + "frame": 8, + "toeX": 228.0, + "toeY": 251.5 + }, + { + "time": 229523.70000000004, + "tick": 94, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229523.7166666667, + "tick": 95, + "frame": 9, + "toeX": 228.0, + "toeY": 253.25 + }, + { + "time": 229523.7333333334, + "tick": 97, + "frame": 9, + "toeX": 228.0, + "toeY": 251.25 + }, + { + "time": 229523.75000000006, + "tick": 97, + "frame": 9, + "toeX": 228.0, + "toeY": 251.25 + }, + { + "time": 229523.76666666672, + "tick": 98, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229523.78333333338, + "tick": 99, + "frame": 10, + "toeX": 228.0, + "toeY": 253.0 + }, + { + "time": 229523.80000000005, + "tick": 100, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229523.8166666667, + "tick": 101, + "frame": 10, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229523.83333333337, + "tick": 102, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229523.85000000006, + "tick": 104, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229523.86666666673, + "tick": 105, + "frame": 11, + "toeX": 228.0, + "toeY": 250.75 + }, + { + "time": 229523.8833333334, + "tick": 105, + "frame": 11, + "toeX": 228.0, + "toeY": 250.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 13, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229524.65000000005, + "tick": 151, + "frame": 8, + "toeX": 228.0, + "toeY": 193.5 + }, + { + "time": 229524.66666666672, + "tick": 152, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229524.68333333338, + "tick": 153, + "frame": 8, + "toeX": 228.0, + "toeY": 191.5 + }, + { + "time": 229524.70000000004, + "tick": 154, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229524.7166666667, + "tick": 155, + "frame": 9, + "toeX": 228.0, + "toeY": 193.25 + }, + { + "time": 229524.7333333334, + "tick": 157, + "frame": 9, + "toeX": 228.0, + "toeY": 191.25 + }, + { + "time": 229524.76666666672, + "tick": 158, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229524.78333333338, + "tick": 159, + "frame": 10, + "toeX": 228.0, + "toeY": 193.0 + }, + { + "time": 229524.80000000005, + "tick": 160, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229524.8166666667, + "tick": 161, + "frame": 10, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229524.83333333337, + "tick": 162, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229524.85000000006, + "tick": 164, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229524.8833333334, + "tick": 165, + "frame": 11, + "toeX": 228.0, + "toeY": 190.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 12, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229525.65000000005, + "tick": 211, + "frame": 8, + "toeX": 228.0, + "toeY": 133.5 + }, + { + "time": 229525.66666666672, + "tick": 212, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229525.68333333338, + "tick": 213, + "frame": 8, + "toeX": 228.0, + "toeY": 131.5 + }, + { + "time": 229525.70000000004, + "tick": 214, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229525.7166666667, + "tick": 215, + "frame": 9, + "toeX": 228.0, + "toeY": 133.25 + }, + { + "time": 229525.7333333334, + "tick": 217, + "frame": 9, + "toeX": 228.0, + "toeY": 131.25 + }, + { + "time": 229525.76797050005, + "tick": 219, + "frame": 10, + "toeX": 228.0, + "toeY": 133.0 + }, + { + "time": 229525.80782212506, + "tick": 221, + "frame": 10, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229525.83333333337, + "tick": 222, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229525.85000000006, + "tick": 224, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229525.86666666673, + "tick": 225, + "frame": 11, + "toeX": 228.0, + "toeY": 130.75 + }, + { + "time": 229525.8833333334, + "tick": 225, + "frame": 11, + "toeX": 228.0, + "toeY": 130.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 15, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229522.15000000005, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229522.16666666672, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229522.18333333338, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 341.5 + }, + { + "time": 229522.20000000004, + "tick": 4, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229522.2166666667, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 343.25 + }, + { + "time": 229522.2333333334, + "tick": 7, + "frame": 1, + "toeX": 220.0, + "toeY": 341.25 + }, + { + "time": 229522.25000000006, + "tick": 7, + "frame": 1, + "toeX": 220.0, + "toeY": 341.25 + }, + { + "time": 229522.26666666672, + "tick": 8, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229522.28333333338, + "tick": 9, + "frame": 2, + "toeX": 220.0, + "toeY": 343.0 + }, + { + "time": 229522.30000000005, + "tick": 10, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229522.3166666667, + "tick": 11, + "frame": 2, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229522.33333333337, + "tick": 12, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229522.35000000006, + "tick": 14, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229522.36666666673, + "tick": 15, + "frame": 3, + "toeX": 220.0, + "toeY": 340.75 + }, + { + "time": 229522.3833333334, + "tick": 15, + "frame": 3, + "toeX": 220.0, + "toeY": 340.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 15, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229523.15000000005, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229523.16666666672, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229523.18333333338, + "tick": 63, + "frame": 0, + "toeX": 220.0, + "toeY": 281.5 + }, + { + "time": 229523.20000000004, + "tick": 64, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229523.2166666667, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 283.25 + }, + { + "time": 229523.2333333334, + "tick": 67, + "frame": 1, + "toeX": 220.0, + "toeY": 281.25 + }, + { + "time": 229523.25000000006, + "tick": 67, + "frame": 1, + "toeX": 220.0, + "toeY": 281.25 + }, + { + "time": 229523.26666666672, + "tick": 68, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229523.28333333338, + "tick": 69, + "frame": 2, + "toeX": 220.0, + "toeY": 283.0 + }, + { + "time": 229523.30000000005, + "tick": 70, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229523.3166666667, + "tick": 71, + "frame": 2, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229523.33333333337, + "tick": 72, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229523.35000000006, + "tick": 74, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229523.36666666673, + "tick": 75, + "frame": 3, + "toeX": 220.0, + "toeY": 280.75 + }, + { + "time": 229523.3833333334, + "tick": 75, + "frame": 3, + "toeX": 220.0, + "toeY": 280.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 15, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229524.15000000005, + "tick": 121, + "frame": 0, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229524.16666666672, + "tick": 122, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229524.18333333338, + "tick": 123, + "frame": 0, + "toeX": 220.0, + "toeY": 221.5 + }, + { + "time": 229524.20000000004, + "tick": 124, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229524.2166666667, + "tick": 125, + "frame": 1, + "toeX": 220.0, + "toeY": 223.25 + }, + { + "time": 229524.2333333334, + "tick": 127, + "frame": 1, + "toeX": 220.0, + "toeY": 221.25 + }, + { + "time": 229524.25000000006, + "tick": 127, + "frame": 1, + "toeX": 220.0, + "toeY": 221.25 + }, + { + "time": 229524.26666666672, + "tick": 128, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229524.28333333338, + "tick": 129, + "frame": 2, + "toeX": 220.0, + "toeY": 223.0 + }, + { + "time": 229524.30000000005, + "tick": 130, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229524.3166666667, + "tick": 131, + "frame": 2, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229524.33333333337, + "tick": 132, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229524.35000000006, + "tick": 134, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229524.36666666673, + "tick": 135, + "frame": 3, + "toeX": 220.0, + "toeY": 220.75 + }, + { + "time": 229524.3833333334, + "tick": 135, + "frame": 3, + "toeX": 220.0, + "toeY": 220.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 14, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229525.15000000005, + "tick": 181, + "frame": 0, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229525.16666666672, + "tick": 182, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229525.18333333338, + "tick": 183, + "frame": 0, + "toeX": 220.0, + "toeY": 161.5 + }, + { + "time": 229525.20000000004, + "tick": 184, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229525.2166666667, + "tick": 185, + "frame": 1, + "toeX": 220.0, + "toeY": 163.25 + }, + { + "time": 229525.2333333334, + "tick": 187, + "frame": 1, + "toeX": 220.0, + "toeY": 161.25 + }, + { + "time": 229525.26666666672, + "tick": 188, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229525.28333333338, + "tick": 189, + "frame": 2, + "toeX": 220.0, + "toeY": 163.0 + }, + { + "time": 229525.30000000005, + "tick": 190, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229525.3166666667, + "tick": 191, + "frame": 2, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229525.33333333337, + "tick": 192, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229525.35000000006, + "tick": 194, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229525.36666666673, + "tick": 195, + "frame": 3, + "toeX": 220.0, + "toeY": 160.75 + }, + { + "time": 229525.3833333334, + "tick": 195, + "frame": 3, + "toeX": 220.0, + "toeY": 160.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 12, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.22716158334515058, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229563.4228384167, + "tick": 32, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229563.45000000004, + "tick": 33, + "frame": 8, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 229563.4666666667, + "tick": 34, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229563.4833333334, + "tick": 36, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 229563.51671925004, + "tick": 38, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229563.53333333338, + "tick": 38, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229563.55000000005, + "tick": 39, + "frame": 10, + "toeX": 228.0, + "toeY": 313.0 + }, + { + "time": 229563.5666666667, + "tick": 40, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229563.58333333337, + "tick": 41, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229563.60000000006, + "tick": 43, + "frame": 11, + "toeX": 228.0, + "toeY": 312.75 + }, + { + "time": 229563.6333333334, + "tick": 45, + "frame": 11, + "toeX": 228.0, + "toeY": 310.75 + }, + { + "time": 229563.65000000005, + "tick": 45, + "frame": 11, + "toeX": 228.0, + "toeY": 310.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 10, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.2237874999991618, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229564.41666666672, + "tick": 91, + "frame": 8, + "toeX": 228.0, + "toeY": 253.5 + }, + { + "time": 229564.43333333338, + "tick": 92, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229564.45000000004, + "tick": 93, + "frame": 8, + "toeX": 228.0, + "toeY": 251.5 + }, + { + "time": 229564.4666666667, + "tick": 94, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229564.4833333334, + "tick": 96, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229564.51865750004, + "tick": 98, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229564.55704958338, + "tick": 100, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229564.58333333337, + "tick": 101, + "frame": 10, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229564.60000000006, + "tick": 103, + "frame": 11, + "toeX": 228.0, + "toeY": 252.75 + }, + { + "time": 229564.6404541667, + "tick": 105, + "frame": 11, + "toeX": 228.0, + "toeY": 250.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 11, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229565.41666666672, + "tick": 151, + "frame": 8, + "toeX": 228.0, + "toeY": 193.5 + }, + { + "time": 229565.43333333338, + "tick": 152, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229565.45000000004, + "tick": 153, + "frame": 8, + "toeX": 228.0, + "toeY": 191.5 + }, + { + "time": 229565.4666666667, + "tick": 154, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229565.4833333334, + "tick": 156, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229565.51914975006, + "tick": 158, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229565.55740008337, + "tick": 160, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229565.58333333337, + "tick": 161, + "frame": 10, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229565.60000000006, + "tick": 163, + "frame": 11, + "toeX": 228.0, + "toeY": 192.75 + }, + { + "time": 229565.6333333334, + "tick": 165, + "frame": 11, + "toeX": 228.0, + "toeY": 190.75 + }, + { + "time": 229565.65000000005, + "tick": 165, + "frame": 11, + "toeX": 228.0, + "toeY": 190.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.20441758332890458, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229566.41666666672, + "tick": 211, + "frame": 8, + "toeX": 228.0, + "toeY": 133.5 + }, + { + "time": 229566.43333333338, + "tick": 212, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229566.45000000004, + "tick": 213, + "frame": 8, + "toeX": 228.0, + "toeY": 131.5 + }, + { + "time": 229566.4666666667, + "tick": 214, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229566.4833333334, + "tick": 216, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229566.52148966672, + "tick": 218, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229566.5678892917, + "tick": 221, + "frame": 10, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229566.62108425004, + "tick": 224, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 14, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229562.91666666672, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229562.93333333338, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229562.95000000004, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 341.5 + }, + { + "time": 229562.9666666667, + "tick": 4, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229562.9833333334, + "tick": 6, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229563.00000000006, + "tick": 7, + "frame": 1, + "toeX": 220.0, + "toeY": 341.25 + }, + { + "time": 229563.03333333338, + "tick": 8, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229563.05000000005, + "tick": 9, + "frame": 2, + "toeX": 220.0, + "toeY": 343.0 + }, + { + "time": 229563.0666666667, + "tick": 10, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229563.08333333337, + "tick": 11, + "frame": 2, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229563.10000000006, + "tick": 13, + "frame": 3, + "toeX": 220.0, + "toeY": 342.75 + }, + { + "time": 229563.11666666673, + "tick": 14, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229563.1333333334, + "tick": 15, + "frame": 3, + "toeX": 220.0, + "toeY": 340.75 + }, + { + "time": 229563.15000000005, + "tick": 15, + "frame": 3, + "toeX": 220.0, + "toeY": 340.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 12, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.23333333333721384, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229563.91666666672, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229563.93333333338, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229563.95000000004, + "tick": 63, + "frame": 0, + "toeX": 220.0, + "toeY": 281.5 + }, + { + "time": 229563.9666666667, + "tick": 64, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229563.9833333334, + "tick": 66, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229564.01981216672, + "tick": 68, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229564.05698316672, + "tick": 70, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229564.08333333337, + "tick": 71, + "frame": 2, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229564.10000000006, + "tick": 73, + "frame": 3, + "toeX": 220.0, + "toeY": 282.75 + }, + { + "time": 229564.11666666673, + "tick": 74, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229564.1333333334, + "tick": 75, + "frame": 3, + "toeX": 220.0, + "toeY": 280.75 + }, + { + "time": 229564.15000000005, + "tick": 75, + "frame": 3, + "toeX": 220.0, + "toeY": 280.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 10, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.2259885833482258, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 229564.9240114167, + "tick": 122, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229564.95000000004, + "tick": 123, + "frame": 0, + "toeX": 220.0, + "toeY": 221.5 + }, + { + "time": 229564.9666666667, + "tick": 124, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229564.9833333334, + "tick": 126, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229565.0198917084, + "tick": 128, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229565.05666337506, + "tick": 130, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229565.08333333337, + "tick": 131, + "frame": 2, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229565.10000000006, + "tick": 133, + "frame": 3, + "toeX": 220.0, + "toeY": 222.75 + }, + { + "time": 229565.1333333334, + "tick": 135, + "frame": 3, + "toeX": 220.0, + "toeY": 220.75 + }, + { + "time": 229565.15000000005, + "tick": 135, + "frame": 3, + "toeX": 220.0, + "toeY": 220.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 13, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.2166666666744277, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229565.91666666672, + "tick": 181, + "frame": 0, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229565.93333333338, + "tick": 182, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229565.95000000004, + "tick": 183, + "frame": 0, + "toeX": 220.0, + "toeY": 161.5 + }, + { + "time": 229565.9666666667, + "tick": 184, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229565.9833333334, + "tick": 186, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229566.01666666672, + "tick": 187, + "frame": 1, + "toeX": 220.0, + "toeY": 161.25 + }, + { + "time": 229566.03333333338, + "tick": 188, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229566.05000000005, + "tick": 189, + "frame": 2, + "toeX": 220.0, + "toeY": 163.0 + }, + { + "time": 229566.0666666667, + "tick": 190, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229566.08333333337, + "tick": 191, + "frame": 2, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229566.10000000006, + "tick": 193, + "frame": 3, + "toeX": 220.0, + "toeY": 162.75 + }, + { + "time": 229566.11666666673, + "tick": 194, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229566.1333333334, + "tick": 195, + "frame": 3, + "toeX": 220.0, + "toeY": 160.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.1256756666698493, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229512.57432433337, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229512.60000000006, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 229512.61666666673, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229512.6333333334, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229512.65000000005, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229512.66666666672, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229512.68333333338, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229512.70000000004, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229513.08333333337, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229513.10000000006, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229513.11666666673, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229513.1333333334, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229513.15000000005, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229513.16666666672, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229513.18333333338, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229513.20000000004, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229513.58333333337, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229513.60000000006, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229513.6333333334, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229513.65000000005, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229513.66666666672, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229513.68333333338, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229513.70000000004, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229514.08333333337, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229514.10000000006, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229514.11666666673, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229514.1333333334, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229514.15000000005, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229514.16666666672, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229514.18333333338, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229514.20000000004, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229512.33333333337, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229512.35000000006, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229512.36666666673, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229512.3833333334, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229512.40000000005, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229512.41666666672, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229512.43333333338, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229512.45000000004, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229512.83333333337, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229512.85000000006, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229512.86666666673, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229512.8833333334, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229512.90000000005, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229512.91666666672, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229512.93333333338, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229512.95000000004, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229513.33333333337, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229513.35000000006, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229513.36666666673, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229513.3833333334, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229513.40000000005, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229513.43333333338, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229513.45000000004, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229513.83333333337, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229513.85000000006, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229513.86666666673, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229513.8833333334, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229513.90000000005, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229513.91666666672, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229513.93333333338, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229513.95000000004, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.09824254168779589, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 229552.8850907917, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229552.92541625004, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 229552.95000000004, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229552.9666666667, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229552.9833333334, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 6, + "distinctFrames": 3, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229553.40000000005, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229553.41666666672, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229553.45046537506, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229553.4666666667, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229553.4833333334, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229553.51666666672, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 4, + "distinctFrames": 3, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10153704165713862, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 229553.8849009584, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229553.9235036667, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229553.95000000004, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229553.98643800005, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229554.40000000005, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229554.41666666672, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229554.43333333338, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229554.45000000004, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229554.4666666667, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229554.4833333334, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229554.50000000006, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229554.51666666672, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229552.65000000005, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229552.66666666672, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229552.68333333338, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229552.70000000004, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229552.7166666667, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229552.7333333334, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229552.75000000006, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229552.76666666672, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.09273054168443196, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 229553.1406027917, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229553.16666666672, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229553.18333333338, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229553.20000000004, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229553.2166666667, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229553.2333333334, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 4, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.080581375019392, + "rangeLogicalPixels": 1.75, + "observations": [ + { + "time": 229553.65275195838, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229553.69349466672, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229553.7166666667, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229553.7333333334, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.08333333334303461, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 229554.15000000005, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229554.16666666672, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229554.18333333338, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229554.20000000004, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229554.2166666667, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229554.2333333334, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 30, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.48333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229540.05000000005, + "tick": 61, + "frame": 8, + "toeX": 228.0, + "toeY": 314.0 + }, + { + "time": 229540.0666666667, + "tick": 62, + "frame": 8, + "toeX": 228.0, + "toeY": 313.5 + }, + { + "time": 229540.08333333337, + "tick": 63, + "frame": 8, + "toeX": 228.0, + "toeY": 313.0 + }, + { + "time": 229540.10000000006, + "tick": 65, + "frame": 8, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229540.11666666673, + "tick": 66, + "frame": 8, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 229540.1333333334, + "tick": 67, + "frame": 8, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229540.15000000005, + "tick": 67, + "frame": 8, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229540.16666666672, + "tick": 68, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229540.18333333338, + "tick": 69, + "frame": 9, + "toeX": 228.0, + "toeY": 313.75 + }, + { + "time": 229540.20000000004, + "tick": 70, + "frame": 9, + "toeX": 228.0, + "toeY": 313.25 + }, + { + "time": 229540.2166666667, + "tick": 71, + "frame": 9, + "toeX": 228.0, + "toeY": 312.75 + }, + { + "time": 229540.2333333334, + "tick": 73, + "frame": 9, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229540.25000000006, + "tick": 74, + "frame": 9, + "toeX": 228.0, + "toeY": 311.25 + }, + { + "time": 229540.26666666672, + "tick": 75, + "frame": 9, + "toeX": 228.0, + "toeY": 310.75 + }, + { + "time": 229540.28333333338, + "tick": 75, + "frame": 9, + "toeX": 228.0, + "toeY": 310.75 + }, + { + "time": 229540.30000000005, + "tick": 76, + "frame": 10, + "toeX": 228.0, + "toeY": 314.0 + }, + { + "time": 229540.3166666667, + "tick": 77, + "frame": 10, + "toeX": 228.0, + "toeY": 313.5 + }, + { + "time": 229540.33333333337, + "tick": 78, + "frame": 10, + "toeX": 228.0, + "toeY": 313.0 + }, + { + "time": 229540.35000000006, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229540.36666666673, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 229540.3833333334, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229540.40000000005, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229540.41666666672, + "tick": 83, + "frame": 10, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229540.43333333338, + "tick": 84, + "frame": 11, + "toeX": 228.0, + "toeY": 313.75 + }, + { + "time": 229540.45000000004, + "tick": 85, + "frame": 11, + "toeX": 228.0, + "toeY": 313.25 + }, + { + "time": 229540.4666666667, + "tick": 86, + "frame": 11, + "toeX": 228.0, + "toeY": 312.75 + }, + { + "time": 229540.4833333334, + "tick": 88, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229540.50000000006, + "tick": 89, + "frame": 11, + "toeX": 228.0, + "toeY": 311.25 + }, + { + "time": 229540.51666666672, + "tick": 90, + "frame": 11, + "toeX": 228.0, + "toeY": 310.75 + }, + { + "time": 229540.53333333338, + "tick": 90, + "frame": 11, + "toeX": 228.0, + "toeY": 310.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 30, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.48333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229542.05000000005, + "tick": 181, + "frame": 8, + "toeX": 228.0, + "toeY": 254.0 + }, + { + "time": 229542.0666666667, + "tick": 182, + "frame": 8, + "toeX": 228.0, + "toeY": 253.5 + }, + { + "time": 229542.08333333337, + "tick": 183, + "frame": 8, + "toeX": 228.0, + "toeY": 253.0 + }, + { + "time": 229542.10000000006, + "tick": 185, + "frame": 8, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229542.11666666673, + "tick": 186, + "frame": 8, + "toeX": 228.0, + "toeY": 251.5 + }, + { + "time": 229542.1333333334, + "tick": 187, + "frame": 8, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229542.15000000005, + "tick": 187, + "frame": 8, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229542.16666666672, + "tick": 188, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229542.18333333338, + "tick": 189, + "frame": 9, + "toeX": 228.0, + "toeY": 253.75 + }, + { + "time": 229542.20000000004, + "tick": 190, + "frame": 9, + "toeX": 228.0, + "toeY": 253.25 + }, + { + "time": 229542.2166666667, + "tick": 191, + "frame": 9, + "toeX": 228.0, + "toeY": 252.75 + }, + { + "time": 229542.2333333334, + "tick": 193, + "frame": 9, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229542.25000000006, + "tick": 194, + "frame": 9, + "toeX": 228.0, + "toeY": 251.25 + }, + { + "time": 229542.26666666672, + "tick": 195, + "frame": 9, + "toeX": 228.0, + "toeY": 250.75 + }, + { + "time": 229542.28333333338, + "tick": 195, + "frame": 9, + "toeX": 228.0, + "toeY": 250.75 + }, + { + "time": 229542.30000000005, + "tick": 196, + "frame": 10, + "toeX": 228.0, + "toeY": 254.0 + }, + { + "time": 229542.3166666667, + "tick": 197, + "frame": 10, + "toeX": 228.0, + "toeY": 253.5 + }, + { + "time": 229542.33333333337, + "tick": 198, + "frame": 10, + "toeX": 228.0, + "toeY": 253.0 + }, + { + "time": 229542.35000000006, + "tick": 200, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229542.36666666673, + "tick": 201, + "frame": 10, + "toeX": 228.0, + "toeY": 251.5 + }, + { + "time": 229542.3833333334, + "tick": 202, + "frame": 10, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229542.40000000005, + "tick": 202, + "frame": 10, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229542.41666666672, + "tick": 203, + "frame": 10, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229542.43333333338, + "tick": 204, + "frame": 11, + "toeX": 228.0, + "toeY": 253.75 + }, + { + "time": 229542.45000000004, + "tick": 205, + "frame": 11, + "toeX": 228.0, + "toeY": 253.25 + }, + { + "time": 229542.4666666667, + "tick": 206, + "frame": 11, + "toeX": 228.0, + "toeY": 252.75 + }, + { + "time": 229542.4833333334, + "tick": 208, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229542.50000000006, + "tick": 209, + "frame": 11, + "toeX": 228.0, + "toeY": 251.25 + }, + { + "time": 229542.51666666672, + "tick": 210, + "frame": 11, + "toeX": 228.0, + "toeY": 250.75 + }, + { + "time": 229542.53333333338, + "tick": 210, + "frame": 11, + "toeX": 228.0, + "toeY": 250.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 30, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.48333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229544.05000000005, + "tick": 301, + "frame": 8, + "toeX": 228.0, + "toeY": 194.0 + }, + { + "time": 229544.0666666667, + "tick": 302, + "frame": 8, + "toeX": 228.0, + "toeY": 193.5 + }, + { + "time": 229544.08333333337, + "tick": 303, + "frame": 8, + "toeX": 228.0, + "toeY": 193.0 + }, + { + "time": 229544.10000000006, + "tick": 305, + "frame": 8, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229544.11666666673, + "tick": 306, + "frame": 8, + "toeX": 228.0, + "toeY": 191.5 + }, + { + "time": 229544.1333333334, + "tick": 307, + "frame": 8, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229544.15000000005, + "tick": 307, + "frame": 8, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229544.16666666672, + "tick": 308, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229544.18333333338, + "tick": 309, + "frame": 9, + "toeX": 228.0, + "toeY": 193.75 + }, + { + "time": 229544.20000000004, + "tick": 310, + "frame": 9, + "toeX": 228.0, + "toeY": 193.25 + }, + { + "time": 229544.2166666667, + "tick": 311, + "frame": 9, + "toeX": 228.0, + "toeY": 192.75 + }, + { + "time": 229544.2333333334, + "tick": 313, + "frame": 9, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229544.25000000006, + "tick": 314, + "frame": 9, + "toeX": 228.0, + "toeY": 191.25 + }, + { + "time": 229544.26666666672, + "tick": 315, + "frame": 9, + "toeX": 228.0, + "toeY": 190.75 + }, + { + "time": 229544.28333333338, + "tick": 315, + "frame": 9, + "toeX": 228.0, + "toeY": 190.75 + }, + { + "time": 229544.30000000005, + "tick": 316, + "frame": 10, + "toeX": 228.0, + "toeY": 194.0 + }, + { + "time": 229544.3166666667, + "tick": 317, + "frame": 10, + "toeX": 228.0, + "toeY": 193.5 + }, + { + "time": 229544.33333333337, + "tick": 318, + "frame": 10, + "toeX": 228.0, + "toeY": 193.0 + }, + { + "time": 229544.35000000006, + "tick": 320, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229544.36666666673, + "tick": 321, + "frame": 10, + "toeX": 228.0, + "toeY": 191.5 + }, + { + "time": 229544.3833333334, + "tick": 322, + "frame": 10, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229544.40000000005, + "tick": 322, + "frame": 10, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229544.41666666672, + "tick": 323, + "frame": 10, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229544.43333333338, + "tick": 324, + "frame": 11, + "toeX": 228.0, + "toeY": 193.75 + }, + { + "time": 229544.45000000004, + "tick": 325, + "frame": 11, + "toeX": 228.0, + "toeY": 193.25 + }, + { + "time": 229544.4666666667, + "tick": 326, + "frame": 11, + "toeX": 228.0, + "toeY": 192.75 + }, + { + "time": 229544.4833333334, + "tick": 328, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229544.50000000006, + "tick": 329, + "frame": 11, + "toeX": 228.0, + "toeY": 191.25 + }, + { + "time": 229544.51666666672, + "tick": 330, + "frame": 11, + "toeX": 228.0, + "toeY": 190.75 + }, + { + "time": 229544.53333333338, + "tick": 330, + "frame": 11, + "toeX": 228.0, + "toeY": 190.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 26, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.48333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229546.05000000005, + "tick": 421, + "frame": 8, + "toeX": 228.0, + "toeY": 134.0 + }, + { + "time": 229546.0666666667, + "tick": 422, + "frame": 8, + "toeX": 228.0, + "toeY": 133.5 + }, + { + "time": 229546.08333333337, + "tick": 423, + "frame": 8, + "toeX": 228.0, + "toeY": 133.0 + }, + { + "time": 229546.10000000006, + "tick": 425, + "frame": 8, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229546.1341170417, + "tick": 427, + "frame": 8, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229546.15000000005, + "tick": 427, + "frame": 8, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229546.16666666672, + "tick": 428, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229546.18333333338, + "tick": 429, + "frame": 9, + "toeX": 228.0, + "toeY": 133.75 + }, + { + "time": 229546.20000000004, + "tick": 430, + "frame": 9, + "toeX": 228.0, + "toeY": 133.25 + }, + { + "time": 229546.2166666667, + "tick": 431, + "frame": 9, + "toeX": 228.0, + "toeY": 132.75 + }, + { + "time": 229546.2333333334, + "tick": 433, + "frame": 9, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229546.26666666672, + "tick": 435, + "frame": 9, + "toeX": 228.0, + "toeY": 130.75 + }, + { + "time": 229546.28333333338, + "tick": 435, + "frame": 9, + "toeX": 228.0, + "toeY": 130.75 + }, + { + "time": 229546.30000000005, + "tick": 436, + "frame": 10, + "toeX": 228.0, + "toeY": 134.0 + }, + { + "time": 229546.3166666667, + "tick": 437, + "frame": 10, + "toeX": 228.0, + "toeY": 133.5 + }, + { + "time": 229546.33333333337, + "tick": 438, + "frame": 10, + "toeX": 228.0, + "toeY": 133.0 + }, + { + "time": 229546.35000000006, + "tick": 440, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229546.38863537504, + "tick": 442, + "frame": 10, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229546.41666666672, + "tick": 443, + "frame": 10, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229546.43333333338, + "tick": 444, + "frame": 11, + "toeX": 228.0, + "toeY": 133.75 + }, + { + "time": 229546.45000000004, + "tick": 445, + "frame": 11, + "toeX": 228.0, + "toeY": 133.25 + }, + { + "time": 229546.4666666667, + "tick": 446, + "frame": 11, + "toeX": 228.0, + "toeY": 132.75 + }, + { + "time": 229546.4833333334, + "tick": 448, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229546.50000000006, + "tick": 449, + "frame": 11, + "toeX": 228.0, + "toeY": 131.25 + }, + { + "time": 229546.51666666672, + "tick": 450, + "frame": 11, + "toeX": 228.0, + "toeY": 130.75 + }, + { + "time": 229546.53333333338, + "tick": 450, + "frame": 11, + "toeX": 228.0, + "toeY": 130.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 28, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.4704934166802559, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229539.05000000005, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 344.0 + }, + { + "time": 229539.0666666667, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229539.08333333337, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 343.0 + }, + { + "time": 229539.10000000006, + "tick": 5, + "frame": 0, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229539.11666666673, + "tick": 6, + "frame": 0, + "toeX": 220.0, + "toeY": 341.5 + }, + { + "time": 229539.1333333334, + "tick": 7, + "frame": 0, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229539.15000000005, + "tick": 7, + "frame": 0, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229539.16666666672, + "tick": 8, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229539.18333333338, + "tick": 9, + "frame": 1, + "toeX": 220.0, + "toeY": 343.75 + }, + { + "time": 229539.20000000004, + "tick": 10, + "frame": 1, + "toeX": 220.0, + "toeY": 343.25 + }, + { + "time": 229539.2166666667, + "tick": 11, + "frame": 1, + "toeX": 220.0, + "toeY": 342.75 + }, + { + "time": 229539.2333333334, + "tick": 13, + "frame": 1, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229539.25000000006, + "tick": 14, + "frame": 1, + "toeX": 220.0, + "toeY": 341.25 + }, + { + "time": 229539.26666666672, + "tick": 15, + "frame": 1, + "toeX": 220.0, + "toeY": 340.75 + }, + { + "time": 229539.28333333338, + "tick": 15, + "frame": 1, + "toeX": 220.0, + "toeY": 340.75 + }, + { + "time": 229539.30000000005, + "tick": 16, + "frame": 2, + "toeX": 220.0, + "toeY": 344.0 + }, + { + "time": 229539.3166666667, + "tick": 17, + "frame": 2, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229539.33333333337, + "tick": 18, + "frame": 2, + "toeX": 220.0, + "toeY": 343.0 + }, + { + "time": 229539.35000000006, + "tick": 20, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229539.36666666673, + "tick": 21, + "frame": 2, + "toeX": 220.0, + "toeY": 341.5 + }, + { + "time": 229539.3833333334, + "tick": 22, + "frame": 2, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229539.40000000005, + "tick": 22, + "frame": 2, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229539.41666666672, + "tick": 23, + "frame": 2, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229539.43333333338, + "tick": 24, + "frame": 3, + "toeX": 220.0, + "toeY": 343.75 + }, + { + "time": 229539.45000000004, + "tick": 25, + "frame": 3, + "toeX": 220.0, + "toeY": 343.25 + }, + { + "time": 229539.4666666667, + "tick": 26, + "frame": 3, + "toeX": 220.0, + "toeY": 342.75 + }, + { + "time": 229539.4833333334, + "tick": 28, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229539.52049341673, + "tick": 30, + "frame": 3, + "toeX": 220.0, + "toeY": 340.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 29, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.48333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229541.05000000005, + "tick": 121, + "frame": 0, + "toeX": 220.0, + "toeY": 284.0 + }, + { + "time": 229541.0666666667, + "tick": 122, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229541.08333333337, + "tick": 123, + "frame": 0, + "toeX": 220.0, + "toeY": 283.0 + }, + { + "time": 229541.10000000006, + "tick": 125, + "frame": 0, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229541.11666666673, + "tick": 126, + "frame": 0, + "toeX": 220.0, + "toeY": 281.5 + }, + { + "time": 229541.1333333334, + "tick": 127, + "frame": 0, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229541.15000000005, + "tick": 127, + "frame": 0, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229541.16666666672, + "tick": 128, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229541.18333333338, + "tick": 129, + "frame": 1, + "toeX": 220.0, + "toeY": 283.75 + }, + { + "time": 229541.20000000004, + "tick": 130, + "frame": 1, + "toeX": 220.0, + "toeY": 283.25 + }, + { + "time": 229541.2166666667, + "tick": 131, + "frame": 1, + "toeX": 220.0, + "toeY": 282.75 + }, + { + "time": 229541.2333333334, + "tick": 133, + "frame": 1, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229541.25000000006, + "tick": 134, + "frame": 1, + "toeX": 220.0, + "toeY": 281.25 + }, + { + "time": 229541.26666666672, + "tick": 135, + "frame": 1, + "toeX": 220.0, + "toeY": 280.75 + }, + { + "time": 229541.28333333338, + "tick": 135, + "frame": 1, + "toeX": 220.0, + "toeY": 280.75 + }, + { + "time": 229541.30000000005, + "tick": 136, + "frame": 2, + "toeX": 220.0, + "toeY": 284.0 + }, + { + "time": 229541.3166666667, + "tick": 137, + "frame": 2, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229541.33333333337, + "tick": 138, + "frame": 2, + "toeX": 220.0, + "toeY": 283.0 + }, + { + "time": 229541.35000000006, + "tick": 140, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229541.36666666673, + "tick": 141, + "frame": 2, + "toeX": 220.0, + "toeY": 281.5 + }, + { + "time": 229541.3833333334, + "tick": 142, + "frame": 2, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229541.40000000005, + "tick": 142, + "frame": 2, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229541.41666666672, + "tick": 143, + "frame": 2, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229541.43333333338, + "tick": 144, + "frame": 3, + "toeX": 220.0, + "toeY": 283.75 + }, + { + "time": 229541.45000000004, + "tick": 145, + "frame": 3, + "toeX": 220.0, + "toeY": 283.25 + }, + { + "time": 229541.4666666667, + "tick": 146, + "frame": 3, + "toeX": 220.0, + "toeY": 282.75 + }, + { + "time": 229541.4833333334, + "tick": 148, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229541.50000000006, + "tick": 149, + "frame": 3, + "toeX": 220.0, + "toeY": 281.25 + }, + { + "time": 229541.53333333338, + "tick": 150, + "frame": 3, + "toeX": 220.0, + "toeY": 280.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 27, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.48333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229543.05000000005, + "tick": 241, + "frame": 0, + "toeX": 220.0, + "toeY": 224.0 + }, + { + "time": 229543.0666666667, + "tick": 242, + "frame": 0, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229543.08333333337, + "tick": 243, + "frame": 0, + "toeX": 220.0, + "toeY": 223.0 + }, + { + "time": 229543.10000000006, + "tick": 245, + "frame": 0, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229543.11666666673, + "tick": 246, + "frame": 0, + "toeX": 220.0, + "toeY": 221.5 + }, + { + "time": 229543.1333333334, + "tick": 247, + "frame": 0, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229543.15000000005, + "tick": 247, + "frame": 0, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229543.16666666672, + "tick": 248, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229543.18333333338, + "tick": 249, + "frame": 1, + "toeX": 220.0, + "toeY": 223.75 + }, + { + "time": 229543.20000000004, + "tick": 250, + "frame": 1, + "toeX": 220.0, + "toeY": 223.25 + }, + { + "time": 229543.2166666667, + "tick": 251, + "frame": 1, + "toeX": 220.0, + "toeY": 222.75 + }, + { + "time": 229543.2333333334, + "tick": 253, + "frame": 1, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229543.26880441673, + "tick": 255, + "frame": 1, + "toeX": 220.0, + "toeY": 220.75 + }, + { + "time": 229543.30661979172, + "tick": 257, + "frame": 2, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229543.33333333337, + "tick": 258, + "frame": 2, + "toeX": 220.0, + "toeY": 223.0 + }, + { + "time": 229543.35000000006, + "tick": 260, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229543.36666666673, + "tick": 261, + "frame": 2, + "toeX": 220.0, + "toeY": 221.5 + }, + { + "time": 229543.3833333334, + "tick": 262, + "frame": 2, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229543.40000000005, + "tick": 262, + "frame": 2, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229543.41666666672, + "tick": 263, + "frame": 2, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229543.43333333338, + "tick": 264, + "frame": 3, + "toeX": 220.0, + "toeY": 223.75 + }, + { + "time": 229543.45000000004, + "tick": 265, + "frame": 3, + "toeX": 220.0, + "toeY": 223.25 + }, + { + "time": 229543.4666666667, + "tick": 266, + "frame": 3, + "toeX": 220.0, + "toeY": 222.75 + }, + { + "time": 229543.4833333334, + "tick": 268, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229543.50000000006, + "tick": 269, + "frame": 3, + "toeX": 220.0, + "toeY": 221.25 + }, + { + "time": 229543.51666666672, + "tick": 270, + "frame": 3, + "toeX": 220.0, + "toeY": 220.75 + }, + { + "time": 229543.53333333338, + "tick": 270, + "frame": 3, + "toeX": 220.0, + "toeY": 220.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 29, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.48333333333721384, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229545.05000000005, + "tick": 361, + "frame": 0, + "toeX": 220.0, + "toeY": 164.0 + }, + { + "time": 229545.0666666667, + "tick": 362, + "frame": 0, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229545.08333333337, + "tick": 363, + "frame": 0, + "toeX": 220.0, + "toeY": 163.0 + }, + { + "time": 229545.10000000006, + "tick": 365, + "frame": 0, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229545.11666666673, + "tick": 366, + "frame": 0, + "toeX": 220.0, + "toeY": 161.5 + }, + { + "time": 229545.1333333334, + "tick": 367, + "frame": 0, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229545.15000000005, + "tick": 367, + "frame": 0, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229545.16666666672, + "tick": 368, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229545.18333333338, + "tick": 369, + "frame": 1, + "toeX": 220.0, + "toeY": 163.75 + }, + { + "time": 229545.20000000004, + "tick": 370, + "frame": 1, + "toeX": 220.0, + "toeY": 163.25 + }, + { + "time": 229545.2166666667, + "tick": 371, + "frame": 1, + "toeX": 220.0, + "toeY": 162.75 + }, + { + "time": 229545.2333333334, + "tick": 373, + "frame": 1, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229545.25000000006, + "tick": 374, + "frame": 1, + "toeX": 220.0, + "toeY": 161.25 + }, + { + "time": 229545.26666666672, + "tick": 375, + "frame": 1, + "toeX": 220.0, + "toeY": 160.75 + }, + { + "time": 229545.28333333338, + "tick": 375, + "frame": 1, + "toeX": 220.0, + "toeY": 160.75 + }, + { + "time": 229545.30000000005, + "tick": 376, + "frame": 2, + "toeX": 220.0, + "toeY": 164.0 + }, + { + "time": 229545.3166666667, + "tick": 377, + "frame": 2, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229545.33333333337, + "tick": 378, + "frame": 2, + "toeX": 220.0, + "toeY": 163.0 + }, + { + "time": 229545.35000000006, + "tick": 380, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229545.36666666673, + "tick": 381, + "frame": 2, + "toeX": 220.0, + "toeY": 161.5 + }, + { + "time": 229545.3833333334, + "tick": 382, + "frame": 2, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229545.40000000005, + "tick": 382, + "frame": 2, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229545.41666666672, + "tick": 383, + "frame": 2, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229545.43333333338, + "tick": 384, + "frame": 3, + "toeX": 220.0, + "toeY": 163.75 + }, + { + "time": 229545.45000000004, + "tick": 385, + "frame": 3, + "toeX": 220.0, + "toeY": 163.25 + }, + { + "time": 229545.4666666667, + "tick": 386, + "frame": 3, + "toeX": 220.0, + "toeY": 162.75 + }, + { + "time": 229545.4833333334, + "tick": 388, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229545.51716650004, + "tick": 390, + "frame": 3, + "toeX": 220.0, + "toeY": 160.75 + }, + { + "time": 229545.53333333338, + "tick": 390, + "frame": 3, + "toeX": 220.0, + "toeY": 160.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 21, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.48333333330811, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229581.60000000006, + "tick": 61, + "frame": 8, + "toeX": 228.0, + "toeY": 314.0 + }, + { + "time": 229581.61666666673, + "tick": 62, + "frame": 8, + "toeX": 228.0, + "toeY": 313.5 + }, + { + "time": 229581.65000000005, + "tick": 64, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229581.66666666672, + "tick": 65, + "frame": 8, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229581.70000000004, + "tick": 67, + "frame": 8, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229581.7166666667, + "tick": 67, + "frame": 8, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229581.7333333334, + "tick": 69, + "frame": 9, + "toeX": 228.0, + "toeY": 313.75 + }, + { + "time": 229581.76772775006, + "tick": 71, + "frame": 9, + "toeX": 228.0, + "toeY": 312.75 + }, + { + "time": 229581.80796000006, + "tick": 73, + "frame": 9, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229581.83333333337, + "tick": 75, + "frame": 9, + "toeX": 228.0, + "toeY": 310.75 + }, + { + "time": 229581.8789825417, + "tick": 77, + "frame": 10, + "toeX": 228.0, + "toeY": 313.5 + }, + { + "time": 229581.90000000005, + "tick": 79, + "frame": 10, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229581.93333333338, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 229581.95000000004, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229581.9666666667, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229581.9833333334, + "tick": 84, + "frame": 11, + "toeX": 228.0, + "toeY": 313.75 + }, + { + "time": 229582.00000000006, + "tick": 85, + "frame": 11, + "toeX": 228.0, + "toeY": 313.25 + }, + { + "time": 229582.01666666672, + "tick": 86, + "frame": 11, + "toeX": 228.0, + "toeY": 312.75 + }, + { + "time": 229582.05000000005, + "tick": 88, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229582.0666666667, + "tick": 89, + "frame": 11, + "toeX": 228.0, + "toeY": 311.25 + }, + { + "time": 229582.08333333337, + "tick": 90, + "frame": 11, + "toeX": 228.0, + "toeY": 310.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 28, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.48333333330811, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229583.60000000006, + "tick": 181, + "frame": 8, + "toeX": 228.0, + "toeY": 254.0 + }, + { + "time": 229583.61666666673, + "tick": 182, + "frame": 8, + "toeX": 228.0, + "toeY": 253.5 + }, + { + "time": 229583.6333333334, + "tick": 183, + "frame": 8, + "toeX": 228.0, + "toeY": 253.0 + }, + { + "time": 229583.65000000005, + "tick": 184, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229583.68333333338, + "tick": 186, + "frame": 8, + "toeX": 228.0, + "toeY": 251.5 + }, + { + "time": 229583.70000000004, + "tick": 187, + "frame": 8, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229583.7166666667, + "tick": 187, + "frame": 8, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229583.7333333334, + "tick": 189, + "frame": 9, + "toeX": 228.0, + "toeY": 253.75 + }, + { + "time": 229583.75000000006, + "tick": 190, + "frame": 9, + "toeX": 228.0, + "toeY": 253.25 + }, + { + "time": 229583.76666666672, + "tick": 191, + "frame": 9, + "toeX": 228.0, + "toeY": 252.75 + }, + { + "time": 229583.78333333338, + "tick": 192, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229583.80000000005, + "tick": 193, + "frame": 9, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229583.8166666667, + "tick": 194, + "frame": 9, + "toeX": 228.0, + "toeY": 251.25 + }, + { + "time": 229583.83333333337, + "tick": 195, + "frame": 9, + "toeX": 228.0, + "toeY": 250.75 + }, + { + "time": 229583.85000000006, + "tick": 196, + "frame": 10, + "toeX": 228.0, + "toeY": 254.0 + }, + { + "time": 229583.8833333334, + "tick": 198, + "frame": 10, + "toeX": 228.0, + "toeY": 253.0 + }, + { + "time": 229583.90000000005, + "tick": 199, + "frame": 10, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229583.91666666672, + "tick": 200, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229583.93333333338, + "tick": 201, + "frame": 10, + "toeX": 228.0, + "toeY": 251.5 + }, + { + "time": 229583.95000000004, + "tick": 202, + "frame": 10, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229583.9666666667, + "tick": 202, + "frame": 10, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229583.9833333334, + "tick": 204, + "frame": 11, + "toeX": 228.0, + "toeY": 253.75 + }, + { + "time": 229584.00000000006, + "tick": 205, + "frame": 11, + "toeX": 228.0, + "toeY": 253.25 + }, + { + "time": 229584.01666666672, + "tick": 206, + "frame": 11, + "toeX": 228.0, + "toeY": 252.75 + }, + { + "time": 229584.03333333338, + "tick": 207, + "frame": 11, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229584.05000000005, + "tick": 208, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229584.0666666667, + "tick": 209, + "frame": 11, + "toeX": 228.0, + "toeY": 251.25 + }, + { + "time": 229584.08333333337, + "tick": 210, + "frame": 11, + "toeX": 228.0, + "toeY": 250.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 27, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.46666666664532386, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229585.60000000006, + "tick": 301, + "frame": 8, + "toeX": 228.0, + "toeY": 194.0 + }, + { + "time": 229585.61666666673, + "tick": 302, + "frame": 8, + "toeX": 228.0, + "toeY": 193.5 + }, + { + "time": 229585.6333333334, + "tick": 303, + "frame": 8, + "toeX": 228.0, + "toeY": 193.0 + }, + { + "time": 229585.65000000005, + "tick": 304, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229585.66666666672, + "tick": 305, + "frame": 8, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229585.68333333338, + "tick": 306, + "frame": 8, + "toeX": 228.0, + "toeY": 191.5 + }, + { + "time": 229585.7166666667, + "tick": 307, + "frame": 8, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229585.7333333334, + "tick": 309, + "frame": 9, + "toeX": 228.0, + "toeY": 193.75 + }, + { + "time": 229585.75000000006, + "tick": 310, + "frame": 9, + "toeX": 228.0, + "toeY": 193.25 + }, + { + "time": 229585.76666666672, + "tick": 311, + "frame": 9, + "toeX": 228.0, + "toeY": 192.75 + }, + { + "time": 229585.78333333338, + "tick": 312, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229585.8166666667, + "tick": 314, + "frame": 9, + "toeX": 228.0, + "toeY": 191.25 + }, + { + "time": 229585.83333333337, + "tick": 315, + "frame": 9, + "toeX": 228.0, + "toeY": 190.75 + }, + { + "time": 229585.85000000006, + "tick": 316, + "frame": 10, + "toeX": 228.0, + "toeY": 194.0 + }, + { + "time": 229585.86666666673, + "tick": 317, + "frame": 10, + "toeX": 228.0, + "toeY": 193.5 + }, + { + "time": 229585.8833333334, + "tick": 318, + "frame": 10, + "toeX": 228.0, + "toeY": 193.0 + }, + { + "time": 229585.90000000005, + "tick": 319, + "frame": 10, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229585.91666666672, + "tick": 320, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229585.93333333338, + "tick": 321, + "frame": 10, + "toeX": 228.0, + "toeY": 191.5 + }, + { + "time": 229585.95000000004, + "tick": 322, + "frame": 10, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229585.9666666667, + "tick": 322, + "frame": 10, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229585.9833333334, + "tick": 324, + "frame": 11, + "toeX": 228.0, + "toeY": 193.75 + }, + { + "time": 229586.00000000006, + "tick": 325, + "frame": 11, + "toeX": 228.0, + "toeY": 193.25 + }, + { + "time": 229586.01666666672, + "tick": 326, + "frame": 11, + "toeX": 228.0, + "toeY": 192.75 + }, + { + "time": 229586.03333333338, + "tick": 327, + "frame": 11, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229586.05000000005, + "tick": 328, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229586.0666666667, + "tick": 329, + "frame": 11, + "toeX": 228.0, + "toeY": 191.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 24, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.46666666664532386, + "rangeLogicalPixels": 3.5, + "observations": [ + { + "time": 229587.61666666673, + "tick": 422, + "frame": 8, + "toeX": 228.0, + "toeY": 133.5 + }, + { + "time": 229587.6333333334, + "tick": 423, + "frame": 8, + "toeX": 228.0, + "toeY": 133.0 + }, + { + "time": 229587.65000000005, + "tick": 424, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229587.6849099584, + "tick": 426, + "frame": 8, + "toeX": 228.0, + "toeY": 131.5 + }, + { + "time": 229587.7245906667, + "tick": 428, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229587.75000000006, + "tick": 430, + "frame": 9, + "toeX": 228.0, + "toeY": 133.25 + }, + { + "time": 229587.78333333338, + "tick": 432, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229587.80000000005, + "tick": 433, + "frame": 9, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229587.8166666667, + "tick": 434, + "frame": 9, + "toeX": 228.0, + "toeY": 131.25 + }, + { + "time": 229587.83333333337, + "tick": 435, + "frame": 9, + "toeX": 228.0, + "toeY": 130.75 + }, + { + "time": 229587.85000000006, + "tick": 436, + "frame": 10, + "toeX": 228.0, + "toeY": 134.0 + }, + { + "time": 229587.86666666673, + "tick": 437, + "frame": 10, + "toeX": 228.0, + "toeY": 133.5 + }, + { + "time": 229587.8833333334, + "tick": 438, + "frame": 10, + "toeX": 228.0, + "toeY": 133.0 + }, + { + "time": 229587.90000000005, + "tick": 439, + "frame": 10, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229587.91666666672, + "tick": 440, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229587.93333333338, + "tick": 441, + "frame": 10, + "toeX": 228.0, + "toeY": 131.5 + }, + { + "time": 229587.95000000004, + "tick": 442, + "frame": 10, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229587.9666666667, + "tick": 442, + "frame": 10, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229587.9833333334, + "tick": 444, + "frame": 11, + "toeX": 228.0, + "toeY": 133.75 + }, + { + "time": 229588.00000000006, + "tick": 445, + "frame": 11, + "toeX": 228.0, + "toeY": 133.25 + }, + { + "time": 229588.03333333338, + "tick": 447, + "frame": 11, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229588.05000000005, + "tick": 448, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229588.0666666667, + "tick": 449, + "frame": 11, + "toeX": 228.0, + "toeY": 131.25 + }, + { + "time": 229588.08333333337, + "tick": 450, + "frame": 11, + "toeX": 228.0, + "toeY": 130.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 26, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.48333333330811, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229580.60000000006, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 344.0 + }, + { + "time": 229580.61666666673, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229580.6333333334, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 343.0 + }, + { + "time": 229580.65000000005, + "tick": 4, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229580.66666666672, + "tick": 5, + "frame": 0, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229580.68333333338, + "tick": 6, + "frame": 0, + "toeX": 220.0, + "toeY": 341.5 + }, + { + "time": 229580.70000000004, + "tick": 7, + "frame": 0, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229580.7166666667, + "tick": 7, + "frame": 0, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229580.7333333334, + "tick": 9, + "frame": 1, + "toeX": 220.0, + "toeY": 343.75 + }, + { + "time": 229580.75000000006, + "tick": 10, + "frame": 1, + "toeX": 220.0, + "toeY": 343.25 + }, + { + "time": 229580.78406500004, + "tick": 12, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229580.80000000005, + "tick": 13, + "frame": 1, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229580.8166666667, + "tick": 14, + "frame": 1, + "toeX": 220.0, + "toeY": 341.25 + }, + { + "time": 229580.83333333337, + "tick": 14, + "frame": 1, + "toeX": 220.0, + "toeY": 341.25 + }, + { + "time": 229580.85000000006, + "tick": 16, + "frame": 2, + "toeX": 220.0, + "toeY": 344.0 + }, + { + "time": 229580.8833333334, + "tick": 18, + "frame": 2, + "toeX": 220.0, + "toeY": 343.0 + }, + { + "time": 229580.90000000005, + "tick": 19, + "frame": 2, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229580.91666666672, + "tick": 20, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229580.93333333338, + "tick": 21, + "frame": 2, + "toeX": 220.0, + "toeY": 341.5 + }, + { + "time": 229580.95000000004, + "tick": 22, + "frame": 2, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229580.9666666667, + "tick": 22, + "frame": 2, + "toeX": 220.0, + "toeY": 341.0 + }, + { + "time": 229580.9833333334, + "tick": 24, + "frame": 3, + "toeX": 220.0, + "toeY": 343.75 + }, + { + "time": 229581.01666666672, + "tick": 26, + "frame": 3, + "toeX": 220.0, + "toeY": 342.75 + }, + { + "time": 229581.03333333338, + "tick": 27, + "frame": 3, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229581.0666666667, + "tick": 29, + "frame": 3, + "toeX": 220.0, + "toeY": 341.25 + }, + { + "time": 229581.08333333337, + "tick": 30, + "frame": 3, + "toeX": 220.0, + "toeY": 340.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 26, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.48333333330811, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229582.60000000006, + "tick": 121, + "frame": 0, + "toeX": 220.0, + "toeY": 284.0 + }, + { + "time": 229582.6333333334, + "tick": 123, + "frame": 0, + "toeX": 220.0, + "toeY": 283.0 + }, + { + "time": 229582.65000000005, + "tick": 124, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229582.66666666672, + "tick": 125, + "frame": 0, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229582.68333333338, + "tick": 126, + "frame": 0, + "toeX": 220.0, + "toeY": 281.5 + }, + { + "time": 229582.70000000004, + "tick": 127, + "frame": 0, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229582.7166666667, + "tick": 127, + "frame": 0, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229582.7333333334, + "tick": 129, + "frame": 1, + "toeX": 220.0, + "toeY": 283.75 + }, + { + "time": 229582.75000000006, + "tick": 130, + "frame": 1, + "toeX": 220.0, + "toeY": 283.25 + }, + { + "time": 229582.76666666672, + "tick": 131, + "frame": 1, + "toeX": 220.0, + "toeY": 282.75 + }, + { + "time": 229582.78333333338, + "tick": 132, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229582.80000000005, + "tick": 133, + "frame": 1, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229582.8166666667, + "tick": 134, + "frame": 1, + "toeX": 220.0, + "toeY": 281.25 + }, + { + "time": 229582.83333333337, + "tick": 135, + "frame": 1, + "toeX": 220.0, + "toeY": 280.75 + }, + { + "time": 229582.85000000006, + "tick": 136, + "frame": 2, + "toeX": 220.0, + "toeY": 284.0 + }, + { + "time": 229582.86666666673, + "tick": 137, + "frame": 2, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229582.8833333334, + "tick": 138, + "frame": 2, + "toeX": 220.0, + "toeY": 283.0 + }, + { + "time": 229582.90000000005, + "tick": 139, + "frame": 2, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229582.91666666672, + "tick": 140, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229582.93333333338, + "tick": 141, + "frame": 2, + "toeX": 220.0, + "toeY": 281.5 + }, + { + "time": 229582.95000000004, + "tick": 142, + "frame": 2, + "toeX": 220.0, + "toeY": 281.0 + }, + { + "time": 229582.98355075004, + "tick": 144, + "frame": 3, + "toeX": 220.0, + "toeY": 283.75 + }, + { + "time": 229583.00000000006, + "tick": 145, + "frame": 3, + "toeX": 220.0, + "toeY": 283.25 + }, + { + "time": 229583.03333333338, + "tick": 147, + "frame": 3, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229583.05000000005, + "tick": 148, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229583.08333333337, + "tick": 150, + "frame": 3, + "toeX": 220.0, + "toeY": 280.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 22, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.44749683333793655, + "rangeLogicalPixels": 3.0, + "observations": [ + { + "time": 229584.61916983337, + "tick": 242, + "frame": 0, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229584.65703970837, + "tick": 244, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229584.68333333338, + "tick": 246, + "frame": 0, + "toeX": 220.0, + "toeY": 221.5 + }, + { + "time": 229584.70000000004, + "tick": 247, + "frame": 0, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229584.7166666667, + "tick": 247, + "frame": 0, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229584.7333333334, + "tick": 249, + "frame": 1, + "toeX": 220.0, + "toeY": 223.75 + }, + { + "time": 229584.77135308337, + "tick": 251, + "frame": 1, + "toeX": 220.0, + "toeY": 222.75 + }, + { + "time": 229584.80000000005, + "tick": 253, + "frame": 1, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229584.8166666667, + "tick": 254, + "frame": 1, + "toeX": 220.0, + "toeY": 221.25 + }, + { + "time": 229584.83333333337, + "tick": 255, + "frame": 1, + "toeX": 220.0, + "toeY": 220.75 + }, + { + "time": 229584.86666666673, + "tick": 257, + "frame": 2, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229584.8833333334, + "tick": 258, + "frame": 2, + "toeX": 220.0, + "toeY": 223.0 + }, + { + "time": 229584.90000000005, + "tick": 259, + "frame": 2, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229584.91666666672, + "tick": 260, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229584.93333333338, + "tick": 261, + "frame": 2, + "toeX": 220.0, + "toeY": 221.5 + }, + { + "time": 229584.95000000004, + "tick": 262, + "frame": 2, + "toeX": 220.0, + "toeY": 221.0 + }, + { + "time": 229584.9833333334, + "tick": 264, + "frame": 3, + "toeX": 220.0, + "toeY": 223.75 + }, + { + "time": 229585.00000000006, + "tick": 265, + "frame": 3, + "toeX": 220.0, + "toeY": 223.25 + }, + { + "time": 229585.01666666672, + "tick": 266, + "frame": 3, + "toeX": 220.0, + "toeY": 222.75 + }, + { + "time": 229585.03333333338, + "tick": 267, + "frame": 3, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229585.05000000005, + "tick": 268, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229585.0666666667, + "tick": 269, + "frame": 3, + "toeX": 220.0, + "toeY": 221.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 26, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.46666666664532386, + "rangeLogicalPixels": 3.25, + "observations": [ + { + "time": 229586.61666666673, + "tick": 362, + "frame": 0, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229586.6333333334, + "tick": 363, + "frame": 0, + "toeX": 220.0, + "toeY": 163.0 + }, + { + "time": 229586.65000000005, + "tick": 364, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229586.66666666672, + "tick": 365, + "frame": 0, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229586.68333333338, + "tick": 366, + "frame": 0, + "toeX": 220.0, + "toeY": 161.5 + }, + { + "time": 229586.70000000004, + "tick": 367, + "frame": 0, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229586.7166666667, + "tick": 367, + "frame": 0, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229586.7333333334, + "tick": 369, + "frame": 1, + "toeX": 220.0, + "toeY": 163.75 + }, + { + "time": 229586.75000000006, + "tick": 370, + "frame": 1, + "toeX": 220.0, + "toeY": 163.25 + }, + { + "time": 229586.78333333338, + "tick": 372, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229586.80000000005, + "tick": 373, + "frame": 1, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229586.8166666667, + "tick": 374, + "frame": 1, + "toeX": 220.0, + "toeY": 161.25 + }, + { + "time": 229586.83333333337, + "tick": 375, + "frame": 1, + "toeX": 220.0, + "toeY": 160.75 + }, + { + "time": 229586.85000000006, + "tick": 376, + "frame": 2, + "toeX": 220.0, + "toeY": 164.0 + }, + { + "time": 229586.86666666673, + "tick": 377, + "frame": 2, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229586.8833333334, + "tick": 378, + "frame": 2, + "toeX": 220.0, + "toeY": 163.0 + }, + { + "time": 229586.90000000005, + "tick": 379, + "frame": 2, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229586.93333333338, + "tick": 381, + "frame": 2, + "toeX": 220.0, + "toeY": 161.5 + }, + { + "time": 229586.95000000004, + "tick": 382, + "frame": 2, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229586.9666666667, + "tick": 382, + "frame": 2, + "toeX": 220.0, + "toeY": 161.0 + }, + { + "time": 229586.9833333334, + "tick": 384, + "frame": 3, + "toeX": 220.0, + "toeY": 163.75 + }, + { + "time": 229587.00000000006, + "tick": 385, + "frame": 3, + "toeX": 220.0, + "toeY": 163.25 + }, + { + "time": 229587.01666666672, + "tick": 386, + "frame": 3, + "toeX": 220.0, + "toeY": 162.75 + }, + { + "time": 229587.03333333338, + "tick": 387, + "frame": 3, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229587.0666666667, + "tick": 389, + "frame": 3, + "toeX": 220.0, + "toeY": 161.25 + }, + { + "time": 229587.08333333337, + "tick": 390, + "frame": 3, + "toeX": 220.0, + "toeY": 160.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229516.53333333338, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 328.5 + }, + { + "time": 229516.55000000005, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 327.5 + }, + { + "time": 229516.5666666667, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 330.25 + }, + { + "time": 229516.58333333337, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 329.25 + }, + { + "time": 229516.60000000006, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 331.0 + }, + { + "time": 229516.61666666673, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 330.0 + }, + { + "time": 229516.6333333334, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 333.75 + }, + { + "time": 229516.65000000005, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 332.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229517.03333333338, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 298.5 + }, + { + "time": 229517.05000000005, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 297.5 + }, + { + "time": 229517.0666666667, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 300.25 + }, + { + "time": 229517.08333333337, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 299.25 + }, + { + "time": 229517.10000000006, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 301.0 + }, + { + "time": 229517.11666666673, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 300.0 + }, + { + "time": 229517.1333333334, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 303.75 + }, + { + "time": 229517.15000000005, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 302.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229517.53333333338, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 268.5 + }, + { + "time": 229517.55000000005, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 267.5 + }, + { + "time": 229517.5666666667, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 270.25 + }, + { + "time": 229517.58333333337, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 269.25 + }, + { + "time": 229517.60000000006, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 271.0 + }, + { + "time": 229517.61666666673, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 270.0 + }, + { + "time": 229517.6333333334, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 273.75 + }, + { + "time": 229517.65000000005, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 272.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229518.03333333338, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 238.5 + }, + { + "time": 229518.05000000005, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 237.5 + }, + { + "time": 229518.0666666667, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 240.25 + }, + { + "time": 229518.08333333337, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 239.25 + }, + { + "time": 229518.10000000006, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 241.0 + }, + { + "time": 229518.11666666673, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 240.0 + }, + { + "time": 229518.1333333334, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 243.75 + }, + { + "time": 229518.15000000005, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 242.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229518.53333333338, + "tick": 136, + "frame": 8, + "toeX": 228.0, + "toeY": 208.5 + }, + { + "time": 229518.55000000005, + "tick": 137, + "frame": 8, + "toeX": 228.0, + "toeY": 207.5 + }, + { + "time": 229518.5666666667, + "tick": 138, + "frame": 9, + "toeX": 228.0, + "toeY": 210.25 + }, + { + "time": 229518.58333333337, + "tick": 139, + "frame": 9, + "toeX": 228.0, + "toeY": 209.25 + }, + { + "time": 229518.60000000006, + "tick": 141, + "frame": 10, + "toeX": 228.0, + "toeY": 211.0 + }, + { + "time": 229518.61666666673, + "tick": 142, + "frame": 10, + "toeX": 228.0, + "toeY": 210.0 + }, + { + "time": 229518.6333333334, + "tick": 142, + "frame": 11, + "toeX": 228.0, + "toeY": 213.75 + }, + { + "time": 229518.65000000005, + "tick": 143, + "frame": 11, + "toeX": 228.0, + "toeY": 212.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229519.03333333338, + "tick": 166, + "frame": 8, + "toeX": 228.0, + "toeY": 178.5 + }, + { + "time": 229519.05000000005, + "tick": 167, + "frame": 8, + "toeX": 228.0, + "toeY": 177.5 + }, + { + "time": 229519.0666666667, + "tick": 168, + "frame": 9, + "toeX": 228.0, + "toeY": 180.25 + }, + { + "time": 229519.08333333337, + "tick": 169, + "frame": 9, + "toeX": 228.0, + "toeY": 179.25 + }, + { + "time": 229519.10000000006, + "tick": 171, + "frame": 10, + "toeX": 228.0, + "toeY": 181.0 + }, + { + "time": 229519.11666666673, + "tick": 172, + "frame": 10, + "toeX": 228.0, + "toeY": 180.0 + }, + { + "time": 229519.1333333334, + "tick": 172, + "frame": 11, + "toeX": 228.0, + "toeY": 183.75 + }, + { + "time": 229519.15000000005, + "tick": 173, + "frame": 11, + "toeX": 228.0, + "toeY": 182.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229519.53333333338, + "tick": 196, + "frame": 8, + "toeX": 228.0, + "toeY": 148.5 + }, + { + "time": 229519.55000000005, + "tick": 197, + "frame": 8, + "toeX": 228.0, + "toeY": 147.5 + }, + { + "time": 229519.5666666667, + "tick": 198, + "frame": 9, + "toeX": 228.0, + "toeY": 150.25 + }, + { + "time": 229519.58333333337, + "tick": 199, + "frame": 9, + "toeX": 228.0, + "toeY": 149.25 + }, + { + "time": 229519.60000000006, + "tick": 201, + "frame": 10, + "toeX": 228.0, + "toeY": 151.0 + }, + { + "time": 229519.61666666673, + "tick": 202, + "frame": 10, + "toeX": 228.0, + "toeY": 150.0 + }, + { + "time": 229519.6333333334, + "tick": 202, + "frame": 11, + "toeX": 228.0, + "toeY": 153.75 + }, + { + "time": 229519.65000000005, + "tick": 203, + "frame": 11, + "toeX": 228.0, + "toeY": 152.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229520.03333333338, + "tick": 226, + "frame": 8, + "toeX": 228.0, + "toeY": 118.5 + }, + { + "time": 229520.05000000005, + "tick": 227, + "frame": 8, + "toeX": 228.0, + "toeY": 117.5 + }, + { + "time": 229520.0666666667, + "tick": 228, + "frame": 9, + "toeX": 228.0, + "toeY": 120.25 + }, + { + "time": 229520.08333333337, + "tick": 229, + "frame": 9, + "toeX": 228.0, + "toeY": 119.25 + }, + { + "time": 229520.10000000006, + "tick": 231, + "frame": 10, + "toeX": 228.0, + "toeY": 121.0 + }, + { + "time": 229520.11666666673, + "tick": 232, + "frame": 10, + "toeX": 228.0, + "toeY": 120.0 + }, + { + "time": 229520.1333333334, + "tick": 232, + "frame": 11, + "toeX": 228.0, + "toeY": 123.75 + }, + { + "time": 229520.15000000005, + "tick": 233, + "frame": 11, + "toeX": 228.0, + "toeY": 122.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229516.28333333338, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229516.30000000005, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229516.3166666667, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 345.25 + }, + { + "time": 229516.33333333337, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 344.25 + }, + { + "time": 229516.35000000006, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 346.0 + }, + { + "time": 229516.36666666673, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 345.0 + }, + { + "time": 229516.3833333334, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 348.75 + }, + { + "time": 229516.40000000005, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 347.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229516.78333333338, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 313.5 + }, + { + "time": 229516.80000000005, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 312.5 + }, + { + "time": 229516.8166666667, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 315.25 + }, + { + "time": 229516.83333333337, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 314.25 + }, + { + "time": 229516.85000000006, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 316.0 + }, + { + "time": 229516.86666666673, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 315.0 + }, + { + "time": 229516.8833333334, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 318.75 + }, + { + "time": 229516.90000000005, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 317.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229517.28333333338, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229517.30000000005, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229517.3166666667, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 285.25 + }, + { + "time": 229517.33333333337, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 284.25 + }, + { + "time": 229517.35000000006, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 286.0 + }, + { + "time": 229517.36666666673, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 285.0 + }, + { + "time": 229517.3833333334, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 288.75 + }, + { + "time": 229517.40000000005, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 287.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229517.78333333338, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 253.5 + }, + { + "time": 229517.80000000005, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 252.5 + }, + { + "time": 229517.8166666667, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 255.25 + }, + { + "time": 229517.83333333337, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 254.25 + }, + { + "time": 229517.85000000006, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 256.0 + }, + { + "time": 229517.86666666673, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 255.0 + }, + { + "time": 229517.8833333334, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 258.75 + }, + { + "time": 229517.90000000005, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 257.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229518.28333333338, + "tick": 121, + "frame": 0, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229518.30000000005, + "tick": 122, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229518.3166666667, + "tick": 123, + "frame": 1, + "toeX": 220.0, + "toeY": 225.25 + }, + { + "time": 229518.33333333337, + "tick": 124, + "frame": 1, + "toeX": 220.0, + "toeY": 224.25 + }, + { + "time": 229518.35000000006, + "tick": 126, + "frame": 2, + "toeX": 220.0, + "toeY": 226.0 + }, + { + "time": 229518.36666666673, + "tick": 127, + "frame": 2, + "toeX": 220.0, + "toeY": 225.0 + }, + { + "time": 229518.3833333334, + "tick": 127, + "frame": 3, + "toeX": 220.0, + "toeY": 228.75 + }, + { + "time": 229518.40000000005, + "tick": 128, + "frame": 3, + "toeX": 220.0, + "toeY": 227.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229518.78333333338, + "tick": 151, + "frame": 0, + "toeX": 220.0, + "toeY": 193.5 + }, + { + "time": 229518.80000000005, + "tick": 152, + "frame": 0, + "toeX": 220.0, + "toeY": 192.5 + }, + { + "time": 229518.8166666667, + "tick": 153, + "frame": 1, + "toeX": 220.0, + "toeY": 195.25 + }, + { + "time": 229518.83333333337, + "tick": 154, + "frame": 1, + "toeX": 220.0, + "toeY": 194.25 + }, + { + "time": 229518.85000000006, + "tick": 156, + "frame": 2, + "toeX": 220.0, + "toeY": 196.0 + }, + { + "time": 229518.86666666673, + "tick": 157, + "frame": 2, + "toeX": 220.0, + "toeY": 195.0 + }, + { + "time": 229518.8833333334, + "tick": 157, + "frame": 3, + "toeX": 220.0, + "toeY": 198.75 + }, + { + "time": 229518.90000000005, + "tick": 158, + "frame": 3, + "toeX": 220.0, + "toeY": 197.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229519.28333333338, + "tick": 181, + "frame": 0, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229519.30000000005, + "tick": 182, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229519.3166666667, + "tick": 183, + "frame": 1, + "toeX": 220.0, + "toeY": 165.25 + }, + { + "time": 229519.33333333337, + "tick": 184, + "frame": 1, + "toeX": 220.0, + "toeY": 164.25 + }, + { + "time": 229519.35000000006, + "tick": 186, + "frame": 2, + "toeX": 220.0, + "toeY": 166.0 + }, + { + "time": 229519.36666666673, + "tick": 187, + "frame": 2, + "toeX": 220.0, + "toeY": 165.0 + }, + { + "time": 229519.3833333334, + "tick": 187, + "frame": 3, + "toeX": 220.0, + "toeY": 168.75 + }, + { + "time": 229519.40000000005, + "tick": 188, + "frame": 3, + "toeX": 220.0, + "toeY": 167.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229519.78333333338, + "tick": 211, + "frame": 0, + "toeX": 220.0, + "toeY": 133.5 + }, + { + "time": 229519.80000000005, + "tick": 212, + "frame": 0, + "toeX": 220.0, + "toeY": 132.5 + }, + { + "time": 229519.8166666667, + "tick": 213, + "frame": 1, + "toeX": 220.0, + "toeY": 135.25 + }, + { + "time": 229519.83333333337, + "tick": 214, + "frame": 1, + "toeX": 220.0, + "toeY": 134.25 + }, + { + "time": 229519.85000000006, + "tick": 216, + "frame": 2, + "toeX": 220.0, + "toeY": 136.0 + }, + { + "time": 229519.86666666673, + "tick": 217, + "frame": 2, + "toeX": 220.0, + "toeY": 135.0 + }, + { + "time": 229519.8833333334, + "tick": 217, + "frame": 3, + "toeX": 220.0, + "toeY": 138.75 + }, + { + "time": 229519.90000000005, + "tick": 218, + "frame": 3, + "toeX": 220.0, + "toeY": 137.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 3, + "firstFrame": 8, + "lastFrame": 10, + "durationSeconds": 0.08544191665714607, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229557.05000000005, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 328.5 + }, + { + "time": 229557.0666666667, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 327.5 + }, + { + "time": 229557.08333333337, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 330.25 + }, + { + "time": 229557.10000000006, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 328.25 + }, + { + "time": 229557.1354419167, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 330.0 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229557.55000000005, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 298.5 + }, + { + "time": 229557.5666666667, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 297.5 + }, + { + "time": 229557.58333333337, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 300.25 + }, + { + "time": 229557.60000000006, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 298.25 + }, + { + "time": 229557.61666666673, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 301.0 + }, + { + "time": 229557.6333333334, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 300.0 + }, + { + "time": 229557.65000000005, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 303.75 + }, + { + "time": 229557.66666666672, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 302.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229558.05000000005, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 268.5 + }, + { + "time": 229558.0666666667, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 267.5 + }, + { + "time": 229558.08333333337, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 270.25 + }, + { + "time": 229558.10000000006, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 268.25 + }, + { + "time": 229558.11666666673, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 271.0 + }, + { + "time": 229558.1333333334, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 270.0 + }, + { + "time": 229558.15000000005, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 273.75 + }, + { + "time": 229558.16666666672, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 272.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229558.55000000005, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 238.5 + }, + { + "time": 229558.5666666667, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 237.5 + }, + { + "time": 229558.58333333337, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 240.25 + }, + { + "time": 229558.60000000006, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 238.25 + }, + { + "time": 229558.61666666673, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 241.0 + }, + { + "time": 229558.6333333334, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 240.0 + }, + { + "time": 229558.65000000005, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 243.75 + }, + { + "time": 229558.66666666672, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 242.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229559.05000000005, + "tick": 136, + "frame": 8, + "toeX": 228.0, + "toeY": 208.5 + }, + { + "time": 229559.0666666667, + "tick": 137, + "frame": 8, + "toeX": 228.0, + "toeY": 207.5 + }, + { + "time": 229559.08333333337, + "tick": 138, + "frame": 9, + "toeX": 228.0, + "toeY": 210.25 + }, + { + "time": 229559.10000000006, + "tick": 140, + "frame": 9, + "toeX": 228.0, + "toeY": 208.25 + }, + { + "time": 229559.11666666673, + "tick": 141, + "frame": 10, + "toeX": 228.0, + "toeY": 211.0 + }, + { + "time": 229559.1333333334, + "tick": 142, + "frame": 10, + "toeX": 228.0, + "toeY": 210.0 + }, + { + "time": 229559.15000000005, + "tick": 142, + "frame": 11, + "toeX": 228.0, + "toeY": 213.75 + }, + { + "time": 229559.16666666672, + "tick": 143, + "frame": 11, + "toeX": 228.0, + "toeY": 212.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229559.55000000005, + "tick": 166, + "frame": 8, + "toeX": 228.0, + "toeY": 178.5 + }, + { + "time": 229559.5666666667, + "tick": 167, + "frame": 8, + "toeX": 228.0, + "toeY": 177.5 + }, + { + "time": 229559.58333333337, + "tick": 168, + "frame": 9, + "toeX": 228.0, + "toeY": 180.25 + }, + { + "time": 229559.60000000006, + "tick": 170, + "frame": 9, + "toeX": 228.0, + "toeY": 178.25 + }, + { + "time": 229559.61666666673, + "tick": 171, + "frame": 10, + "toeX": 228.0, + "toeY": 181.0 + }, + { + "time": 229559.6333333334, + "tick": 172, + "frame": 10, + "toeX": 228.0, + "toeY": 180.0 + }, + { + "time": 229559.65000000005, + "tick": 172, + "frame": 11, + "toeX": 228.0, + "toeY": 183.75 + }, + { + "time": 229559.66666666672, + "tick": 173, + "frame": 11, + "toeX": 228.0, + "toeY": 182.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229560.05000000005, + "tick": 196, + "frame": 8, + "toeX": 228.0, + "toeY": 148.5 + }, + { + "time": 229560.0666666667, + "tick": 197, + "frame": 8, + "toeX": 228.0, + "toeY": 147.5 + }, + { + "time": 229560.08333333337, + "tick": 198, + "frame": 9, + "toeX": 228.0, + "toeY": 150.25 + }, + { + "time": 229560.10000000006, + "tick": 200, + "frame": 9, + "toeX": 228.0, + "toeY": 148.25 + }, + { + "time": 229560.11666666673, + "tick": 201, + "frame": 10, + "toeX": 228.0, + "toeY": 151.0 + }, + { + "time": 229560.1333333334, + "tick": 202, + "frame": 10, + "toeX": 228.0, + "toeY": 150.0 + }, + { + "time": 229560.15000000005, + "tick": 202, + "frame": 11, + "toeX": 228.0, + "toeY": 153.75 + }, + { + "time": 229560.16666666672, + "tick": 203, + "frame": 11, + "toeX": 228.0, + "toeY": 152.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229560.55000000005, + "tick": 226, + "frame": 8, + "toeX": 228.0, + "toeY": 118.5 + }, + { + "time": 229560.5666666667, + "tick": 227, + "frame": 8, + "toeX": 228.0, + "toeY": 117.5 + }, + { + "time": 229560.58333333337, + "tick": 228, + "frame": 9, + "toeX": 228.0, + "toeY": 120.25 + }, + { + "time": 229560.60000000006, + "tick": 230, + "frame": 9, + "toeX": 228.0, + "toeY": 118.25 + }, + { + "time": 229560.61666666673, + "tick": 231, + "frame": 10, + "toeX": 228.0, + "toeY": 121.0 + }, + { + "time": 229560.6333333334, + "tick": 232, + "frame": 10, + "toeX": 228.0, + "toeY": 120.0 + }, + { + "time": 229560.65000000005, + "tick": 232, + "frame": 11, + "toeX": 228.0, + "toeY": 123.75 + }, + { + "time": 229560.66666666672, + "tick": 233, + "frame": 11, + "toeX": 228.0, + "toeY": 122.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229556.80000000005, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229556.8166666667, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229556.83333333337, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 345.25 + }, + { + "time": 229556.85000000006, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 343.25 + }, + { + "time": 229556.86666666673, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 346.0 + }, + { + "time": 229556.8833333334, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 345.0 + }, + { + "time": 229556.90000000005, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 348.75 + }, + { + "time": 229556.91666666672, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 347.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229557.30000000005, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 313.5 + }, + { + "time": 229557.3166666667, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 312.5 + }, + { + "time": 229557.33333333337, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 315.25 + }, + { + "time": 229557.35000000006, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 313.25 + }, + { + "time": 229557.36666666673, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 316.0 + }, + { + "time": 229557.3833333334, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 315.0 + }, + { + "time": 229557.40000000005, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 318.75 + }, + { + "time": 229557.41666666672, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 317.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.12302083332906477, + "rangeLogicalPixels": 4.25, + "observations": [ + { + "time": 229557.80000000005, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229557.8166666667, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229557.83333333337, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 285.25 + }, + { + "time": 229557.85000000006, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 283.25 + }, + { + "time": 229557.8843755417, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 285.0 + }, + { + "time": 229557.92302083338, + "tick": 69, + "frame": 3, + "toeX": 220.0, + "toeY": 286.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.12152970832539722, + "rangeLogicalPixels": 4.25, + "observations": [ + { + "time": 229558.30000000005, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 253.5 + }, + { + "time": 229558.3166666667, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 252.5 + }, + { + "time": 229558.33333333337, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 255.25 + }, + { + "time": 229558.35000000006, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 253.25 + }, + { + "time": 229558.36666666673, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 256.0 + }, + { + "time": 229558.3833333334, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 255.0 + }, + { + "time": 229558.42152970837, + "tick": 99, + "frame": 3, + "toeX": 220.0, + "toeY": 256.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 5.25, + "observations": [ + { + "time": 229558.80000000005, + "tick": 121, + "frame": 0, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229558.8166666667, + "tick": 122, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229558.83333333337, + "tick": 123, + "frame": 1, + "toeX": 220.0, + "toeY": 225.25 + }, + { + "time": 229558.85000000006, + "tick": 125, + "frame": 1, + "toeX": 220.0, + "toeY": 223.25 + }, + { + "time": 229558.86666666673, + "tick": 126, + "frame": 2, + "toeX": 220.0, + "toeY": 226.0 + }, + { + "time": 229558.8833333334, + "tick": 127, + "frame": 2, + "toeX": 220.0, + "toeY": 225.0 + }, + { + "time": 229558.91666666672, + "tick": 128, + "frame": 3, + "toeX": 220.0, + "toeY": 227.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229559.30000000005, + "tick": 151, + "frame": 0, + "toeX": 220.0, + "toeY": 193.5 + }, + { + "time": 229559.3166666667, + "tick": 152, + "frame": 0, + "toeX": 220.0, + "toeY": 192.5 + }, + { + "time": 229559.33333333337, + "tick": 153, + "frame": 1, + "toeX": 220.0, + "toeY": 195.25 + }, + { + "time": 229559.35000000006, + "tick": 155, + "frame": 1, + "toeX": 220.0, + "toeY": 193.25 + }, + { + "time": 229559.3833333334, + "tick": 157, + "frame": 2, + "toeX": 220.0, + "toeY": 195.0 + }, + { + "time": 229559.40000000005, + "tick": 157, + "frame": 3, + "toeX": 220.0, + "toeY": 198.75 + }, + { + "time": 229559.41666666672, + "tick": 158, + "frame": 3, + "toeX": 220.0, + "toeY": 197.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229559.80000000005, + "tick": 181, + "frame": 0, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229559.8166666667, + "tick": 182, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229559.83333333337, + "tick": 183, + "frame": 1, + "toeX": 220.0, + "toeY": 165.25 + }, + { + "time": 229559.85000000006, + "tick": 185, + "frame": 1, + "toeX": 220.0, + "toeY": 163.25 + }, + { + "time": 229559.86666666673, + "tick": 186, + "frame": 2, + "toeX": 220.0, + "toeY": 166.0 + }, + { + "time": 229559.8833333334, + "tick": 187, + "frame": 2, + "toeX": 220.0, + "toeY": 165.0 + }, + { + "time": 229559.90000000005, + "tick": 187, + "frame": 3, + "toeX": 220.0, + "toeY": 168.75 + }, + { + "time": 229559.91666666672, + "tick": 188, + "frame": 3, + "toeX": 220.0, + "toeY": 167.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 6.25, + "observations": [ + { + "time": 229560.30000000005, + "tick": 211, + "frame": 0, + "toeX": 220.0, + "toeY": 133.5 + }, + { + "time": 229560.3166666667, + "tick": 212, + "frame": 0, + "toeX": 220.0, + "toeY": 132.5 + }, + { + "time": 229560.33333333337, + "tick": 213, + "frame": 1, + "toeX": 220.0, + "toeY": 135.25 + }, + { + "time": 229560.35000000006, + "tick": 215, + "frame": 1, + "toeX": 220.0, + "toeY": 133.25 + }, + { + "time": 229560.36666666673, + "tick": 216, + "frame": 2, + "toeX": 220.0, + "toeY": 136.0 + }, + { + "time": 229560.3833333334, + "tick": 217, + "frame": 2, + "toeX": 220.0, + "toeY": 135.0 + }, + { + "time": 229560.40000000005, + "tick": 217, + "frame": 3, + "toeX": 220.0, + "toeY": 138.75 + }, + { + "time": 229560.41666666672, + "tick": 218, + "frame": 3, + "toeX": 220.0, + "toeY": 137.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229508.91666666672, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229508.93333333338, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229508.95000000004, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 229508.9666666667, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229508.9833333334, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229509.01666666672, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229509.03333333338, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229509.41666666672, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229509.43333333338, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229509.45000000004, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229509.4666666667, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229509.4833333334, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 229509.50000000006, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 229509.51666666672, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229509.53333333338, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229509.91666666672, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229509.93333333338, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229509.95000000004, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229509.9666666667, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229509.9833333334, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229510.00000000006, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 229510.01666666672, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229510.03333333338, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229510.41666666672, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229510.43333333338, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229510.45000000004, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229510.4666666667, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229510.4833333334, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229510.50000000006, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 229510.51666666672, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229510.53333333338, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229508.66666666672, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229508.68333333338, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229508.70000000004, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229508.7166666667, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229508.7333333334, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229508.75000000006, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 229508.76666666672, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229508.78333333338, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229509.16666666672, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229509.18333333338, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229509.20000000004, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229509.2166666667, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229509.2333333334, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229509.25000000006, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 229509.26666666672, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229509.28333333338, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229509.66666666672, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229509.68333333338, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229509.70000000004, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229509.7166666667, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229509.7333333334, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229509.75000000006, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 229509.76666666672, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229509.78333333338, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 4, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10054154167301022, + "rangeLogicalPixels": 0.75, + "observations": [ + { + "time": 229510.16974016672, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229510.20391191673, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229510.23575500006, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229510.2702817084, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229548.9833333334, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 229549.00000000006, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229549.01666666672, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 229549.05000000005, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 229549.0666666667, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229549.08333333337, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229549.10000000006, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10599354165606201, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 229549.4833333334, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229549.50000000006, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229549.51666666672, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 229549.53333333338, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229549.55000000005, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 229549.58932687505, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229549.9833333334, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229550.00000000006, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229550.01666666672, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 229550.03333333338, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229550.05000000005, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 229550.0666666667, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229550.08333333337, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229550.10000000006, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229550.4833333334, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229550.50000000006, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229550.51666666672, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 229550.53333333338, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229550.55000000005, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 229550.5666666667, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229550.58333333337, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229550.60000000006, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229548.7333333334, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229548.75000000006, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229548.76666666672, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 229548.78333333338, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229548.80000000005, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 229548.8166666667, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229548.85000000006, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229549.2333333334, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229549.25000000006, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229549.26666666672, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 229549.28333333338, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229549.30000000005, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 229549.3166666667, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229549.33333333337, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229549.35000000006, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229549.7333333334, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229549.75000000006, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229549.76666666672, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 229549.80000000005, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 229549.8166666667, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229549.83333333337, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229549.85000000006, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 229550.2333333334, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229550.25000000006, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229550.26666666672, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 229550.28333333338, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229550.30000000005, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 229550.3166666667, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229550.33333333337, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229550.35000000006, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229528.85000000006, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 336.0 + }, + { + "time": 229528.86666666673, + "tick": 18, + "frame": 8, + "toeX": 228.0, + "toeY": 335.5 + }, + { + "time": 229528.8833333334, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 338.75 + }, + { + "time": 229528.90000000005, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 338.25 + }, + { + "time": 229528.91666666672, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 341.5 + }, + { + "time": 229528.93333333338, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 341.0 + }, + { + "time": 229528.95000000004, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 344.75 + }, + { + "time": 229528.9666666667, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 344.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229529.35000000006, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 321.0 + }, + { + "time": 229529.36666666673, + "tick": 48, + "frame": 8, + "toeX": 228.0, + "toeY": 320.5 + }, + { + "time": 229529.3833333334, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 323.75 + }, + { + "time": 229529.40000000005, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 323.25 + }, + { + "time": 229529.41666666672, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 326.5 + }, + { + "time": 229529.43333333338, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 326.0 + }, + { + "time": 229529.45000000004, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 329.75 + }, + { + "time": 229529.4666666667, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 329.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229529.85000000006, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 306.0 + }, + { + "time": 229529.86666666673, + "tick": 78, + "frame": 8, + "toeX": 228.0, + "toeY": 305.5 + }, + { + "time": 229529.8833333334, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 308.75 + }, + { + "time": 229529.90000000005, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 229529.91666666672, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 229529.93333333338, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229529.95000000004, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 314.75 + }, + { + "time": 229529.9666666667, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 314.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229530.35000000006, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 291.0 + }, + { + "time": 229530.36666666673, + "tick": 108, + "frame": 8, + "toeX": 228.0, + "toeY": 290.5 + }, + { + "time": 229530.3833333334, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 293.75 + }, + { + "time": 229530.40000000005, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 293.25 + }, + { + "time": 229530.41666666672, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 296.5 + }, + { + "time": 229530.43333333338, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 296.0 + }, + { + "time": 229530.45000000004, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 299.75 + }, + { + "time": 229530.4666666667, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 299.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229530.85000000006, + "tick": 137, + "frame": 8, + "toeX": 228.0, + "toeY": 276.0 + }, + { + "time": 229530.86666666673, + "tick": 138, + "frame": 8, + "toeX": 228.0, + "toeY": 275.5 + }, + { + "time": 229530.8833333334, + "tick": 139, + "frame": 9, + "toeX": 228.0, + "toeY": 278.75 + }, + { + "time": 229530.90000000005, + "tick": 140, + "frame": 9, + "toeX": 228.0, + "toeY": 278.25 + }, + { + "time": 229530.91666666672, + "tick": 141, + "frame": 10, + "toeX": 228.0, + "toeY": 281.5 + }, + { + "time": 229530.93333333338, + "tick": 142, + "frame": 10, + "toeX": 228.0, + "toeY": 281.0 + }, + { + "time": 229530.95000000004, + "tick": 142, + "frame": 11, + "toeX": 228.0, + "toeY": 284.75 + }, + { + "time": 229530.9666666667, + "tick": 143, + "frame": 11, + "toeX": 228.0, + "toeY": 284.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11707862498587929, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 229531.35000000006, + "tick": 167, + "frame": 8, + "toeX": 228.0, + "toeY": 261.0 + }, + { + "time": 229531.36666666673, + "tick": 168, + "frame": 8, + "toeX": 228.0, + "toeY": 260.5 + }, + { + "time": 229531.3833333334, + "tick": 169, + "frame": 9, + "toeX": 228.0, + "toeY": 263.75 + }, + { + "time": 229531.40000000005, + "tick": 170, + "frame": 9, + "toeX": 228.0, + "toeY": 263.25 + }, + { + "time": 229531.41666666672, + "tick": 171, + "frame": 10, + "toeX": 228.0, + "toeY": 266.5 + }, + { + "time": 229531.43333333338, + "tick": 172, + "frame": 10, + "toeX": 228.0, + "toeY": 266.0 + }, + { + "time": 229531.46707862505, + "tick": 174, + "frame": 11, + "toeX": 228.0, + "toeY": 268.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229531.85000000006, + "tick": 197, + "frame": 8, + "toeX": 228.0, + "toeY": 246.0 + }, + { + "time": 229531.86666666673, + "tick": 198, + "frame": 8, + "toeX": 228.0, + "toeY": 245.5 + }, + { + "time": 229531.8833333334, + "tick": 199, + "frame": 9, + "toeX": 228.0, + "toeY": 248.75 + }, + { + "time": 229531.90000000005, + "tick": 200, + "frame": 9, + "toeX": 228.0, + "toeY": 248.25 + }, + { + "time": 229531.91666666672, + "tick": 201, + "frame": 10, + "toeX": 228.0, + "toeY": 251.5 + }, + { + "time": 229531.93333333338, + "tick": 202, + "frame": 10, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229531.95000000004, + "tick": 202, + "frame": 11, + "toeX": 228.0, + "toeY": 254.75 + }, + { + "time": 229531.9666666667, + "tick": 203, + "frame": 11, + "toeX": 228.0, + "toeY": 254.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229532.35000000006, + "tick": 227, + "frame": 8, + "toeX": 228.0, + "toeY": 231.0 + }, + { + "time": 229532.36666666673, + "tick": 228, + "frame": 8, + "toeX": 228.0, + "toeY": 230.5 + }, + { + "time": 229532.3833333334, + "tick": 229, + "frame": 9, + "toeX": 228.0, + "toeY": 233.75 + }, + { + "time": 229532.40000000005, + "tick": 230, + "frame": 9, + "toeX": 228.0, + "toeY": 233.25 + }, + { + "time": 229532.41666666672, + "tick": 231, + "frame": 10, + "toeX": 228.0, + "toeY": 236.5 + }, + { + "time": 229532.43333333338, + "tick": 232, + "frame": 10, + "toeX": 228.0, + "toeY": 236.0 + }, + { + "time": 229532.45000000004, + "tick": 232, + "frame": 11, + "toeX": 228.0, + "toeY": 239.75 + }, + { + "time": 229532.4666666667, + "tick": 233, + "frame": 11, + "toeX": 228.0, + "toeY": 239.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229532.85000000006, + "tick": 257, + "frame": 8, + "toeX": 228.0, + "toeY": 216.0 + }, + { + "time": 229532.86666666673, + "tick": 258, + "frame": 8, + "toeX": 228.0, + "toeY": 215.5 + }, + { + "time": 229532.8833333334, + "tick": 259, + "frame": 9, + "toeX": 228.0, + "toeY": 218.75 + }, + { + "time": 229532.90000000005, + "tick": 260, + "frame": 9, + "toeX": 228.0, + "toeY": 218.25 + }, + { + "time": 229532.91666666672, + "tick": 261, + "frame": 10, + "toeX": 228.0, + "toeY": 221.5 + }, + { + "time": 229532.93333333338, + "tick": 262, + "frame": 10, + "toeX": 228.0, + "toeY": 221.0 + }, + { + "time": 229532.95000000004, + "tick": 262, + "frame": 11, + "toeX": 228.0, + "toeY": 224.75 + }, + { + "time": 229532.9666666667, + "tick": 263, + "frame": 11, + "toeX": 228.0, + "toeY": 224.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229533.35000000006, + "tick": 287, + "frame": 8, + "toeX": 228.0, + "toeY": 201.0 + }, + { + "time": 229533.36666666673, + "tick": 288, + "frame": 8, + "toeX": 228.0, + "toeY": 200.5 + }, + { + "time": 229533.3833333334, + "tick": 289, + "frame": 9, + "toeX": 228.0, + "toeY": 203.75 + }, + { + "time": 229533.40000000005, + "tick": 290, + "frame": 9, + "toeX": 228.0, + "toeY": 203.25 + }, + { + "time": 229533.41666666672, + "tick": 291, + "frame": 10, + "toeX": 228.0, + "toeY": 206.5 + }, + { + "time": 229533.43333333338, + "tick": 292, + "frame": 10, + "toeX": 228.0, + "toeY": 206.0 + }, + { + "time": 229533.45000000004, + "tick": 292, + "frame": 11, + "toeX": 228.0, + "toeY": 209.75 + }, + { + "time": 229533.4666666667, + "tick": 293, + "frame": 11, + "toeX": 228.0, + "toeY": 209.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229533.85000000006, + "tick": 317, + "frame": 8, + "toeX": 228.0, + "toeY": 186.0 + }, + { + "time": 229533.86666666673, + "tick": 318, + "frame": 8, + "toeX": 228.0, + "toeY": 185.5 + }, + { + "time": 229533.8833333334, + "tick": 319, + "frame": 9, + "toeX": 228.0, + "toeY": 188.75 + }, + { + "time": 229533.90000000005, + "tick": 320, + "frame": 9, + "toeX": 228.0, + "toeY": 188.25 + }, + { + "time": 229533.91666666672, + "tick": 321, + "frame": 10, + "toeX": 228.0, + "toeY": 191.5 + }, + { + "time": 229533.93333333338, + "tick": 322, + "frame": 10, + "toeX": 228.0, + "toeY": 191.0 + }, + { + "time": 229533.95000000004, + "tick": 322, + "frame": 11, + "toeX": 228.0, + "toeY": 194.75 + }, + { + "time": 229533.9666666667, + "tick": 323, + "frame": 11, + "toeX": 228.0, + "toeY": 194.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229534.35000000006, + "tick": 347, + "frame": 8, + "toeX": 228.0, + "toeY": 171.0 + }, + { + "time": 229534.36666666673, + "tick": 348, + "frame": 8, + "toeX": 228.0, + "toeY": 170.5 + }, + { + "time": 229534.3833333334, + "tick": 349, + "frame": 9, + "toeX": 228.0, + "toeY": 173.75 + }, + { + "time": 229534.40000000005, + "tick": 350, + "frame": 9, + "toeX": 228.0, + "toeY": 173.25 + }, + { + "time": 229534.41666666672, + "tick": 351, + "frame": 10, + "toeX": 228.0, + "toeY": 176.5 + }, + { + "time": 229534.43333333338, + "tick": 352, + "frame": 10, + "toeX": 228.0, + "toeY": 176.0 + }, + { + "time": 229534.45000000004, + "tick": 352, + "frame": 11, + "toeX": 228.0, + "toeY": 179.75 + }, + { + "time": 229534.4666666667, + "tick": 353, + "frame": 11, + "toeX": 228.0, + "toeY": 179.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229534.85000000006, + "tick": 377, + "frame": 8, + "toeX": 228.0, + "toeY": 156.0 + }, + { + "time": 229534.86666666673, + "tick": 378, + "frame": 8, + "toeX": 228.0, + "toeY": 155.5 + }, + { + "time": 229534.8833333334, + "tick": 379, + "frame": 9, + "toeX": 228.0, + "toeY": 158.75 + }, + { + "time": 229534.90000000005, + "tick": 380, + "frame": 9, + "toeX": 228.0, + "toeY": 158.25 + }, + { + "time": 229534.91666666672, + "tick": 381, + "frame": 10, + "toeX": 228.0, + "toeY": 161.5 + }, + { + "time": 229534.93333333338, + "tick": 382, + "frame": 10, + "toeX": 228.0, + "toeY": 161.0 + }, + { + "time": 229534.95000000004, + "tick": 382, + "frame": 11, + "toeX": 228.0, + "toeY": 164.75 + }, + { + "time": 229534.9666666667, + "tick": 383, + "frame": 11, + "toeX": 228.0, + "toeY": 164.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229535.35000000006, + "tick": 407, + "frame": 8, + "toeX": 228.0, + "toeY": 141.0 + }, + { + "time": 229535.36666666673, + "tick": 408, + "frame": 8, + "toeX": 228.0, + "toeY": 140.5 + }, + { + "time": 229535.3833333334, + "tick": 409, + "frame": 9, + "toeX": 228.0, + "toeY": 143.75 + }, + { + "time": 229535.40000000005, + "tick": 410, + "frame": 9, + "toeX": 228.0, + "toeY": 143.25 + }, + { + "time": 229535.41666666672, + "tick": 411, + "frame": 10, + "toeX": 228.0, + "toeY": 146.5 + }, + { + "time": 229535.45000000004, + "tick": 412, + "frame": 11, + "toeX": 228.0, + "toeY": 149.75 + }, + { + "time": 229535.4666666667, + "tick": 413, + "frame": 11, + "toeX": 228.0, + "toeY": 149.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229535.85000000006, + "tick": 437, + "frame": 8, + "toeX": 228.0, + "toeY": 126.0 + }, + { + "time": 229535.86666666673, + "tick": 438, + "frame": 8, + "toeX": 228.0, + "toeY": 125.5 + }, + { + "time": 229535.8833333334, + "tick": 439, + "frame": 9, + "toeX": 228.0, + "toeY": 128.75 + }, + { + "time": 229535.90000000005, + "tick": 440, + "frame": 9, + "toeX": 228.0, + "toeY": 128.25 + }, + { + "time": 229535.91666666672, + "tick": 441, + "frame": 10, + "toeX": 228.0, + "toeY": 131.5 + }, + { + "time": 229535.93333333338, + "tick": 442, + "frame": 10, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229535.95000000004, + "tick": 442, + "frame": 11, + "toeX": 228.0, + "toeY": 134.75 + }, + { + "time": 229535.9666666667, + "tick": 443, + "frame": 11, + "toeX": 228.0, + "toeY": 134.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229536.35000000006, + "tick": 467, + "frame": 8, + "toeX": 228.0, + "toeY": 111.0 + }, + { + "time": 229536.36666666673, + "tick": 468, + "frame": 8, + "toeX": 228.0, + "toeY": 110.5 + }, + { + "time": 229536.3833333334, + "tick": 469, + "frame": 9, + "toeX": 228.0, + "toeY": 113.75 + }, + { + "time": 229536.40000000005, + "tick": 470, + "frame": 9, + "toeX": 228.0, + "toeY": 113.25 + }, + { + "time": 229536.41666666672, + "tick": 471, + "frame": 10, + "toeX": 228.0, + "toeY": 116.5 + }, + { + "time": 229536.43333333338, + "tick": 472, + "frame": 10, + "toeX": 228.0, + "toeY": 116.0 + }, + { + "time": 229536.45000000004, + "tick": 472, + "frame": 11, + "toeX": 228.0, + "toeY": 119.75 + }, + { + "time": 229536.4666666667, + "tick": 473, + "frame": 11, + "toeX": 228.0, + "toeY": 119.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229528.60000000006, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 229528.61666666673, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 343.0 + }, + { + "time": 229528.6333333334, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 346.25 + }, + { + "time": 229528.65000000005, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 345.75 + }, + { + "time": 229528.66666666672, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 349.0 + }, + { + "time": 229528.68333333338, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 348.5 + }, + { + "time": 229528.70000000004, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 352.25 + }, + { + "time": 229528.7166666667, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 351.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229529.10000000006, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 328.5 + }, + { + "time": 229529.11666666673, + "tick": 33, + "frame": 0, + "toeX": 220.0, + "toeY": 328.0 + }, + { + "time": 229529.1333333334, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 331.25 + }, + { + "time": 229529.15000000005, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 330.75 + }, + { + "time": 229529.16666666672, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 334.0 + }, + { + "time": 229529.18333333338, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 333.5 + }, + { + "time": 229529.20000000004, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 337.25 + }, + { + "time": 229529.2166666667, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 336.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229529.60000000006, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 313.5 + }, + { + "time": 229529.61666666673, + "tick": 63, + "frame": 0, + "toeX": 220.0, + "toeY": 313.0 + }, + { + "time": 229529.6333333334, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 316.25 + }, + { + "time": 229529.65000000005, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 315.75 + }, + { + "time": 229529.66666666672, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 319.0 + }, + { + "time": 229529.68333333338, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 318.5 + }, + { + "time": 229529.70000000004, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 322.25 + }, + { + "time": 229529.7166666667, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 321.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229530.10000000006, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 298.5 + }, + { + "time": 229530.11666666673, + "tick": 93, + "frame": 0, + "toeX": 220.0, + "toeY": 298.0 + }, + { + "time": 229530.1333333334, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 301.25 + }, + { + "time": 229530.15000000005, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 300.75 + }, + { + "time": 229530.16666666672, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 304.0 + }, + { + "time": 229530.18333333338, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 303.5 + }, + { + "time": 229530.20000000004, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 307.25 + }, + { + "time": 229530.2166666667, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 306.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229530.60000000006, + "tick": 122, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229530.61666666673, + "tick": 123, + "frame": 0, + "toeX": 220.0, + "toeY": 283.0 + }, + { + "time": 229530.6333333334, + "tick": 124, + "frame": 1, + "toeX": 220.0, + "toeY": 286.25 + }, + { + "time": 229530.65000000005, + "tick": 125, + "frame": 1, + "toeX": 220.0, + "toeY": 285.75 + }, + { + "time": 229530.66666666672, + "tick": 126, + "frame": 2, + "toeX": 220.0, + "toeY": 289.0 + }, + { + "time": 229530.68333333338, + "tick": 127, + "frame": 2, + "toeX": 220.0, + "toeY": 288.5 + }, + { + "time": 229530.70000000004, + "tick": 127, + "frame": 3, + "toeX": 220.0, + "toeY": 292.25 + }, + { + "time": 229530.7166666667, + "tick": 128, + "frame": 3, + "toeX": 220.0, + "toeY": 291.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229531.10000000006, + "tick": 152, + "frame": 0, + "toeX": 220.0, + "toeY": 268.5 + }, + { + "time": 229531.11666666673, + "tick": 153, + "frame": 0, + "toeX": 220.0, + "toeY": 268.0 + }, + { + "time": 229531.1333333334, + "tick": 154, + "frame": 1, + "toeX": 220.0, + "toeY": 271.25 + }, + { + "time": 229531.15000000005, + "tick": 155, + "frame": 1, + "toeX": 220.0, + "toeY": 270.75 + }, + { + "time": 229531.16666666672, + "tick": 156, + "frame": 2, + "toeX": 220.0, + "toeY": 274.0 + }, + { + "time": 229531.18333333338, + "tick": 157, + "frame": 2, + "toeX": 220.0, + "toeY": 273.5 + }, + { + "time": 229531.20000000004, + "tick": 157, + "frame": 3, + "toeX": 220.0, + "toeY": 277.25 + }, + { + "time": 229531.2166666667, + "tick": 158, + "frame": 3, + "toeX": 220.0, + "toeY": 276.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229531.60000000006, + "tick": 182, + "frame": 0, + "toeX": 220.0, + "toeY": 253.5 + }, + { + "time": 229531.61666666673, + "tick": 183, + "frame": 0, + "toeX": 220.0, + "toeY": 253.0 + }, + { + "time": 229531.6333333334, + "tick": 184, + "frame": 1, + "toeX": 220.0, + "toeY": 256.25 + }, + { + "time": 229531.65000000005, + "tick": 185, + "frame": 1, + "toeX": 220.0, + "toeY": 255.75 + }, + { + "time": 229531.66666666672, + "tick": 186, + "frame": 2, + "toeX": 220.0, + "toeY": 259.0 + }, + { + "time": 229531.68333333338, + "tick": 187, + "frame": 2, + "toeX": 220.0, + "toeY": 258.5 + }, + { + "time": 229531.70000000004, + "tick": 187, + "frame": 3, + "toeX": 220.0, + "toeY": 262.25 + }, + { + "time": 229531.7166666667, + "tick": 188, + "frame": 3, + "toeX": 220.0, + "toeY": 261.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229532.10000000006, + "tick": 212, + "frame": 0, + "toeX": 220.0, + "toeY": 238.5 + }, + { + "time": 229532.11666666673, + "tick": 213, + "frame": 0, + "toeX": 220.0, + "toeY": 238.0 + }, + { + "time": 229532.1333333334, + "tick": 214, + "frame": 1, + "toeX": 220.0, + "toeY": 241.25 + }, + { + "time": 229532.15000000005, + "tick": 215, + "frame": 1, + "toeX": 220.0, + "toeY": 240.75 + }, + { + "time": 229532.16666666672, + "tick": 216, + "frame": 2, + "toeX": 220.0, + "toeY": 244.0 + }, + { + "time": 229532.18333333338, + "tick": 217, + "frame": 2, + "toeX": 220.0, + "toeY": 243.5 + }, + { + "time": 229532.20000000004, + "tick": 217, + "frame": 3, + "toeX": 220.0, + "toeY": 247.25 + }, + { + "time": 229532.2166666667, + "tick": 218, + "frame": 3, + "toeX": 220.0, + "toeY": 246.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229532.60000000006, + "tick": 242, + "frame": 0, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229532.61666666673, + "tick": 243, + "frame": 0, + "toeX": 220.0, + "toeY": 223.0 + }, + { + "time": 229532.6333333334, + "tick": 244, + "frame": 1, + "toeX": 220.0, + "toeY": 226.25 + }, + { + "time": 229532.65000000005, + "tick": 245, + "frame": 1, + "toeX": 220.0, + "toeY": 225.75 + }, + { + "time": 229532.66666666672, + "tick": 246, + "frame": 2, + "toeX": 220.0, + "toeY": 229.0 + }, + { + "time": 229532.68333333338, + "tick": 247, + "frame": 2, + "toeX": 220.0, + "toeY": 228.5 + }, + { + "time": 229532.70000000004, + "tick": 247, + "frame": 3, + "toeX": 220.0, + "toeY": 232.25 + }, + { + "time": 229532.7166666667, + "tick": 248, + "frame": 3, + "toeX": 220.0, + "toeY": 231.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229533.10000000006, + "tick": 272, + "frame": 0, + "toeX": 220.0, + "toeY": 208.5 + }, + { + "time": 229533.11666666673, + "tick": 273, + "frame": 0, + "toeX": 220.0, + "toeY": 208.0 + }, + { + "time": 229533.1333333334, + "tick": 274, + "frame": 1, + "toeX": 220.0, + "toeY": 211.25 + }, + { + "time": 229533.15000000005, + "tick": 275, + "frame": 1, + "toeX": 220.0, + "toeY": 210.75 + }, + { + "time": 229533.16666666672, + "tick": 276, + "frame": 2, + "toeX": 220.0, + "toeY": 214.0 + }, + { + "time": 229533.18333333338, + "tick": 277, + "frame": 2, + "toeX": 220.0, + "toeY": 213.5 + }, + { + "time": 229533.20000000004, + "tick": 277, + "frame": 3, + "toeX": 220.0, + "toeY": 217.25 + }, + { + "time": 229533.2166666667, + "tick": 278, + "frame": 3, + "toeX": 220.0, + "toeY": 216.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229533.60000000006, + "tick": 302, + "frame": 0, + "toeX": 220.0, + "toeY": 193.5 + }, + { + "time": 229533.61666666673, + "tick": 303, + "frame": 0, + "toeX": 220.0, + "toeY": 193.0 + }, + { + "time": 229533.6333333334, + "tick": 304, + "frame": 1, + "toeX": 220.0, + "toeY": 196.25 + }, + { + "time": 229533.65000000005, + "tick": 305, + "frame": 1, + "toeX": 220.0, + "toeY": 195.75 + }, + { + "time": 229533.66666666672, + "tick": 306, + "frame": 2, + "toeX": 220.0, + "toeY": 199.0 + }, + { + "time": 229533.68333333338, + "tick": 307, + "frame": 2, + "toeX": 220.0, + "toeY": 198.5 + }, + { + "time": 229533.70000000004, + "tick": 307, + "frame": 3, + "toeX": 220.0, + "toeY": 202.25 + }, + { + "time": 229533.7166666667, + "tick": 308, + "frame": 3, + "toeX": 220.0, + "toeY": 201.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229534.10000000006, + "tick": 332, + "frame": 0, + "toeX": 220.0, + "toeY": 178.5 + }, + { + "time": 229534.11666666673, + "tick": 333, + "frame": 0, + "toeX": 220.0, + "toeY": 178.0 + }, + { + "time": 229534.1333333334, + "tick": 334, + "frame": 1, + "toeX": 220.0, + "toeY": 181.25 + }, + { + "time": 229534.15000000005, + "tick": 335, + "frame": 1, + "toeX": 220.0, + "toeY": 180.75 + }, + { + "time": 229534.16666666672, + "tick": 336, + "frame": 2, + "toeX": 220.0, + "toeY": 184.0 + }, + { + "time": 229534.18333333338, + "tick": 337, + "frame": 2, + "toeX": 220.0, + "toeY": 183.5 + }, + { + "time": 229534.20000000004, + "tick": 337, + "frame": 3, + "toeX": 220.0, + "toeY": 187.25 + }, + { + "time": 229534.2166666667, + "tick": 338, + "frame": 3, + "toeX": 220.0, + "toeY": 186.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229534.60000000006, + "tick": 362, + "frame": 0, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229534.61666666673, + "tick": 363, + "frame": 0, + "toeX": 220.0, + "toeY": 163.0 + }, + { + "time": 229534.6333333334, + "tick": 364, + "frame": 1, + "toeX": 220.0, + "toeY": 166.25 + }, + { + "time": 229534.65000000005, + "tick": 365, + "frame": 1, + "toeX": 220.0, + "toeY": 165.75 + }, + { + "time": 229534.66666666672, + "tick": 366, + "frame": 2, + "toeX": 220.0, + "toeY": 169.0 + }, + { + "time": 229534.68333333338, + "tick": 367, + "frame": 2, + "toeX": 220.0, + "toeY": 168.5 + }, + { + "time": 229534.70000000004, + "tick": 367, + "frame": 3, + "toeX": 220.0, + "toeY": 172.25 + }, + { + "time": 229534.7166666667, + "tick": 368, + "frame": 3, + "toeX": 220.0, + "toeY": 171.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229535.10000000006, + "tick": 392, + "frame": 0, + "toeX": 220.0, + "toeY": 148.5 + }, + { + "time": 229535.11666666673, + "tick": 393, + "frame": 0, + "toeX": 220.0, + "toeY": 148.0 + }, + { + "time": 229535.1333333334, + "tick": 394, + "frame": 1, + "toeX": 220.0, + "toeY": 151.25 + }, + { + "time": 229535.15000000005, + "tick": 395, + "frame": 1, + "toeX": 220.0, + "toeY": 150.75 + }, + { + "time": 229535.16666666672, + "tick": 396, + "frame": 2, + "toeX": 220.0, + "toeY": 154.0 + }, + { + "time": 229535.18333333338, + "tick": 397, + "frame": 2, + "toeX": 220.0, + "toeY": 153.5 + }, + { + "time": 229535.20000000004, + "tick": 397, + "frame": 3, + "toeX": 220.0, + "toeY": 157.25 + }, + { + "time": 229535.2166666667, + "tick": 398, + "frame": 3, + "toeX": 220.0, + "toeY": 156.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229535.60000000006, + "tick": 422, + "frame": 0, + "toeX": 220.0, + "toeY": 133.5 + }, + { + "time": 229535.61666666673, + "tick": 423, + "frame": 0, + "toeX": 220.0, + "toeY": 133.0 + }, + { + "time": 229535.6333333334, + "tick": 424, + "frame": 1, + "toeX": 220.0, + "toeY": 136.25 + }, + { + "time": 229535.65000000005, + "tick": 425, + "frame": 1, + "toeX": 220.0, + "toeY": 135.75 + }, + { + "time": 229535.66666666672, + "tick": 426, + "frame": 2, + "toeX": 220.0, + "toeY": 139.0 + }, + { + "time": 229535.68333333338, + "tick": 427, + "frame": 2, + "toeX": 220.0, + "toeY": 138.5 + }, + { + "time": 229535.70000000004, + "tick": 427, + "frame": 3, + "toeX": 220.0, + "toeY": 142.25 + }, + { + "time": 229535.7166666667, + "tick": 428, + "frame": 3, + "toeX": 220.0, + "toeY": 141.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666663950309, + "rangeLogicalPixels": 9.25, + "observations": [ + { + "time": 229536.10000000006, + "tick": 452, + "frame": 0, + "toeX": 220.0, + "toeY": 118.5 + }, + { + "time": 229536.11666666673, + "tick": 453, + "frame": 0, + "toeX": 220.0, + "toeY": 118.0 + }, + { + "time": 229536.1333333334, + "tick": 454, + "frame": 1, + "toeX": 220.0, + "toeY": 121.25 + }, + { + "time": 229536.15000000005, + "tick": 455, + "frame": 1, + "toeX": 220.0, + "toeY": 120.75 + }, + { + "time": 229536.16666666672, + "tick": 456, + "frame": 2, + "toeX": 220.0, + "toeY": 124.0 + }, + { + "time": 229536.18333333338, + "tick": 457, + "frame": 2, + "toeX": 220.0, + "toeY": 123.5 + }, + { + "time": 229536.20000000004, + "tick": 457, + "frame": 3, + "toeX": 220.0, + "toeY": 127.25 + }, + { + "time": 229536.2166666667, + "tick": 458, + "frame": 3, + "toeX": 220.0, + "toeY": 126.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229569.95000000004, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 336.5 + }, + { + "time": 229569.9666666667, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 336.0 + }, + { + "time": 229569.9833333334, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 338.75 + }, + { + "time": 229570.02165662506, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 341.5 + }, + { + "time": 229570.05000000005, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 344.75 + }, + { + "time": 229570.0666666667, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 344.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229570.45000000004, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 321.5 + }, + { + "time": 229570.4666666667, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 321.0 + }, + { + "time": 229570.4833333334, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 323.75 + }, + { + "time": 229570.50000000006, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 323.25 + }, + { + "time": 229570.51666666672, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 326.5 + }, + { + "time": 229570.53333333338, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 326.0 + }, + { + "time": 229570.55000000005, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 329.75 + }, + { + "time": 229570.5666666667, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 329.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229570.95000000004, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 306.5 + }, + { + "time": 229570.9666666667, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 306.0 + }, + { + "time": 229570.9833333334, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 308.75 + }, + { + "time": 229571.00000000006, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 229571.01666666672, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 229571.03333333338, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 229571.05000000005, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 314.75 + }, + { + "time": 229571.0666666667, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 314.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229571.45000000004, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 291.5 + }, + { + "time": 229571.4666666667, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 291.0 + }, + { + "time": 229571.4833333334, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 293.75 + }, + { + "time": 229571.50000000006, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 293.25 + }, + { + "time": 229571.51666666672, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 296.5 + }, + { + "time": 229571.55000000005, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 299.75 + }, + { + "time": 229571.5666666667, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 299.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229571.95000000004, + "tick": 136, + "frame": 8, + "toeX": 228.0, + "toeY": 276.5 + }, + { + "time": 229571.9666666667, + "tick": 137, + "frame": 8, + "toeX": 228.0, + "toeY": 276.0 + }, + { + "time": 229571.9833333334, + "tick": 139, + "frame": 9, + "toeX": 228.0, + "toeY": 278.75 + }, + { + "time": 229572.00000000006, + "tick": 140, + "frame": 9, + "toeX": 228.0, + "toeY": 278.25 + }, + { + "time": 229572.01666666672, + "tick": 141, + "frame": 10, + "toeX": 228.0, + "toeY": 281.5 + }, + { + "time": 229572.03333333338, + "tick": 142, + "frame": 10, + "toeX": 228.0, + "toeY": 281.0 + }, + { + "time": 229572.05000000005, + "tick": 142, + "frame": 11, + "toeX": 228.0, + "toeY": 284.75 + }, + { + "time": 229572.0666666667, + "tick": 143, + "frame": 11, + "toeX": 228.0, + "toeY": 284.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229572.45000000004, + "tick": 166, + "frame": 8, + "toeX": 228.0, + "toeY": 261.5 + }, + { + "time": 229572.4666666667, + "tick": 167, + "frame": 8, + "toeX": 228.0, + "toeY": 261.0 + }, + { + "time": 229572.4833333334, + "tick": 169, + "frame": 9, + "toeX": 228.0, + "toeY": 263.75 + }, + { + "time": 229572.50000000006, + "tick": 170, + "frame": 9, + "toeX": 228.0, + "toeY": 263.25 + }, + { + "time": 229572.51666666672, + "tick": 171, + "frame": 10, + "toeX": 228.0, + "toeY": 266.5 + }, + { + "time": 229572.53333333338, + "tick": 172, + "frame": 10, + "toeX": 228.0, + "toeY": 266.0 + }, + { + "time": 229572.55000000005, + "tick": 172, + "frame": 11, + "toeX": 228.0, + "toeY": 269.75 + }, + { + "time": 229572.5666666667, + "tick": 173, + "frame": 11, + "toeX": 228.0, + "toeY": 269.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229572.95000000004, + "tick": 196, + "frame": 8, + "toeX": 228.0, + "toeY": 246.5 + }, + { + "time": 229572.9666666667, + "tick": 197, + "frame": 8, + "toeX": 228.0, + "toeY": 246.0 + }, + { + "time": 229572.9833333334, + "tick": 199, + "frame": 9, + "toeX": 228.0, + "toeY": 248.75 + }, + { + "time": 229573.00000000006, + "tick": 200, + "frame": 9, + "toeX": 228.0, + "toeY": 248.25 + }, + { + "time": 229573.01666666672, + "tick": 201, + "frame": 10, + "toeX": 228.0, + "toeY": 251.5 + }, + { + "time": 229573.03333333338, + "tick": 202, + "frame": 10, + "toeX": 228.0, + "toeY": 251.0 + }, + { + "time": 229573.05000000005, + "tick": 202, + "frame": 11, + "toeX": 228.0, + "toeY": 254.75 + }, + { + "time": 229573.0666666667, + "tick": 203, + "frame": 11, + "toeX": 228.0, + "toeY": 254.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229573.45000000004, + "tick": 226, + "frame": 8, + "toeX": 228.0, + "toeY": 231.5 + }, + { + "time": 229573.4666666667, + "tick": 227, + "frame": 8, + "toeX": 228.0, + "toeY": 231.0 + }, + { + "time": 229573.4833333334, + "tick": 229, + "frame": 9, + "toeX": 228.0, + "toeY": 233.75 + }, + { + "time": 229573.50000000006, + "tick": 230, + "frame": 9, + "toeX": 228.0, + "toeY": 233.25 + }, + { + "time": 229573.53333333338, + "tick": 232, + "frame": 10, + "toeX": 228.0, + "toeY": 236.0 + }, + { + "time": 229573.55000000005, + "tick": 232, + "frame": 11, + "toeX": 228.0, + "toeY": 239.75 + }, + { + "time": 229573.5666666667, + "tick": 233, + "frame": 11, + "toeX": 228.0, + "toeY": 239.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10886129166465253, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 229573.95000000004, + "tick": 256, + "frame": 8, + "toeX": 228.0, + "toeY": 216.5 + }, + { + "time": 229573.9666666667, + "tick": 257, + "frame": 8, + "toeX": 228.0, + "toeY": 216.0 + }, + { + "time": 229573.9833333334, + "tick": 259, + "frame": 9, + "toeX": 228.0, + "toeY": 218.75 + }, + { + "time": 229574.0191468334, + "tick": 261, + "frame": 10, + "toeX": 228.0, + "toeY": 221.5 + }, + { + "time": 229574.0588612917, + "tick": 263, + "frame": 11, + "toeX": 228.0, + "toeY": 224.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11566695832880214, + "rangeLogicalPixels": 7.75, + "observations": [ + { + "time": 229574.45733645838, + "tick": 287, + "frame": 8, + "toeX": 228.0, + "toeY": 201.0 + }, + { + "time": 229574.4833333334, + "tick": 289, + "frame": 9, + "toeX": 228.0, + "toeY": 203.75 + }, + { + "time": 229574.50000000006, + "tick": 290, + "frame": 9, + "toeX": 228.0, + "toeY": 203.25 + }, + { + "time": 229574.53541133337, + "tick": 292, + "frame": 10, + "toeX": 228.0, + "toeY": 206.0 + }, + { + "time": 229574.5730034167, + "tick": 294, + "frame": 11, + "toeX": 228.0, + "toeY": 208.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229574.95000000004, + "tick": 316, + "frame": 8, + "toeX": 228.0, + "toeY": 186.5 + }, + { + "time": 229574.9666666667, + "tick": 317, + "frame": 8, + "toeX": 228.0, + "toeY": 186.0 + }, + { + "time": 229574.9833333334, + "tick": 319, + "frame": 9, + "toeX": 228.0, + "toeY": 188.75 + }, + { + "time": 229575.00000000006, + "tick": 320, + "frame": 9, + "toeX": 228.0, + "toeY": 188.25 + }, + { + "time": 229575.01666666672, + "tick": 321, + "frame": 10, + "toeX": 228.0, + "toeY": 191.5 + }, + { + "time": 229575.05000000005, + "tick": 322, + "frame": 11, + "toeX": 228.0, + "toeY": 194.75 + }, + { + "time": 229575.0666666667, + "tick": 323, + "frame": 11, + "toeX": 228.0, + "toeY": 194.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229575.45000000004, + "tick": 346, + "frame": 8, + "toeX": 228.0, + "toeY": 171.5 + }, + { + "time": 229575.4666666667, + "tick": 347, + "frame": 8, + "toeX": 228.0, + "toeY": 171.0 + }, + { + "time": 229575.4833333334, + "tick": 349, + "frame": 9, + "toeX": 228.0, + "toeY": 173.75 + }, + { + "time": 229575.50000000006, + "tick": 350, + "frame": 9, + "toeX": 228.0, + "toeY": 173.25 + }, + { + "time": 229575.51666666672, + "tick": 351, + "frame": 10, + "toeX": 228.0, + "toeY": 176.5 + }, + { + "time": 229575.53333333338, + "tick": 352, + "frame": 10, + "toeX": 228.0, + "toeY": 176.0 + }, + { + "time": 229575.55000000005, + "tick": 352, + "frame": 11, + "toeX": 228.0, + "toeY": 179.75 + }, + { + "time": 229575.5666666667, + "tick": 353, + "frame": 11, + "toeX": 228.0, + "toeY": 179.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10558566666441038, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229575.96108100004, + "tick": 377, + "frame": 8, + "toeX": 228.0, + "toeY": 156.0 + }, + { + "time": 229575.9833333334, + "tick": 379, + "frame": 9, + "toeX": 228.0, + "toeY": 158.75 + }, + { + "time": 229576.02867750006, + "tick": 381, + "frame": 10, + "toeX": 228.0, + "toeY": 161.5 + }, + { + "time": 229576.05000000005, + "tick": 382, + "frame": 11, + "toeX": 228.0, + "toeY": 164.75 + }, + { + "time": 229576.0666666667, + "tick": 383, + "frame": 11, + "toeX": 228.0, + "toeY": 164.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10731233333353885, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 229576.45000000004, + "tick": 406, + "frame": 8, + "toeX": 228.0, + "toeY": 141.5 + }, + { + "time": 229576.4666666667, + "tick": 407, + "frame": 8, + "toeX": 228.0, + "toeY": 141.0 + }, + { + "time": 229576.4833333334, + "tick": 409, + "frame": 9, + "toeX": 228.0, + "toeY": 143.75 + }, + { + "time": 229576.51794108338, + "tick": 411, + "frame": 10, + "toeX": 228.0, + "toeY": 146.5 + }, + { + "time": 229576.55731233337, + "tick": 413, + "frame": 11, + "toeX": 228.0, + "toeY": 149.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229576.95000000004, + "tick": 436, + "frame": 8, + "toeX": 228.0, + "toeY": 126.5 + }, + { + "time": 229576.9666666667, + "tick": 437, + "frame": 8, + "toeX": 228.0, + "toeY": 126.0 + }, + { + "time": 229576.9833333334, + "tick": 439, + "frame": 9, + "toeX": 228.0, + "toeY": 128.75 + }, + { + "time": 229577.00000000006, + "tick": 440, + "frame": 9, + "toeX": 228.0, + "toeY": 128.25 + }, + { + "time": 229577.01666666672, + "tick": 441, + "frame": 10, + "toeX": 228.0, + "toeY": 131.5 + }, + { + "time": 229577.03333333338, + "tick": 442, + "frame": 10, + "toeX": 228.0, + "toeY": 131.0 + }, + { + "time": 229577.05000000005, + "tick": 442, + "frame": 11, + "toeX": 228.0, + "toeY": 134.75 + }, + { + "time": 229577.0666666667, + "tick": 443, + "frame": 11, + "toeX": 228.0, + "toeY": 134.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229577.45000000004, + "tick": 466, + "frame": 8, + "toeX": 228.0, + "toeY": 111.5 + }, + { + "time": 229577.4666666667, + "tick": 467, + "frame": 8, + "toeX": 228.0, + "toeY": 111.0 + }, + { + "time": 229577.4833333334, + "tick": 469, + "frame": 9, + "toeX": 228.0, + "toeY": 113.75 + }, + { + "time": 229577.51666666672, + "tick": 471, + "frame": 10, + "toeX": 228.0, + "toeY": 116.5 + }, + { + "time": 229577.53333333338, + "tick": 472, + "frame": 10, + "toeX": 228.0, + "toeY": 116.0 + }, + { + "time": 229577.55000000005, + "tick": 472, + "frame": 11, + "toeX": 228.0, + "toeY": 119.75 + }, + { + "time": 229577.5666666667, + "tick": 473, + "frame": 11, + "toeX": 228.0, + "toeY": 119.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 229569.70000000004, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 344.0 + }, + { + "time": 229569.73735508337, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 346.25 + }, + { + "time": 229569.7803344584, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 349.0 + }, + { + "time": 229569.80000000005, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 352.25 + }, + { + "time": 229569.8166666667, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 351.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229570.20000000004, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 329.0 + }, + { + "time": 229570.2166666667, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 328.5 + }, + { + "time": 229570.2333333334, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 331.25 + }, + { + "time": 229570.25000000006, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 330.75 + }, + { + "time": 229570.26666666672, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 334.0 + }, + { + "time": 229570.28333333338, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 333.5 + }, + { + "time": 229570.30000000005, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 337.25 + }, + { + "time": 229570.3166666667, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 336.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229570.70000000004, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 314.0 + }, + { + "time": 229570.7166666667, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 313.5 + }, + { + "time": 229570.7333333334, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 316.25 + }, + { + "time": 229570.75000000006, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 315.75 + }, + { + "time": 229570.76666666672, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 319.0 + }, + { + "time": 229570.78333333338, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 318.5 + }, + { + "time": 229570.80000000005, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 322.25 + }, + { + "time": 229570.8166666667, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 321.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229571.20000000004, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 299.0 + }, + { + "time": 229571.2166666667, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 298.5 + }, + { + "time": 229571.2333333334, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 301.25 + }, + { + "time": 229571.25000000006, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 300.75 + }, + { + "time": 229571.26666666672, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 304.0 + }, + { + "time": 229571.28333333338, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 303.5 + }, + { + "time": 229571.30000000005, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 307.25 + }, + { + "time": 229571.3166666667, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 306.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229571.70000000004, + "tick": 121, + "frame": 0, + "toeX": 220.0, + "toeY": 284.0 + }, + { + "time": 229571.7166666667, + "tick": 122, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 229571.7333333334, + "tick": 124, + "frame": 1, + "toeX": 220.0, + "toeY": 286.25 + }, + { + "time": 229571.75000000006, + "tick": 125, + "frame": 1, + "toeX": 220.0, + "toeY": 285.75 + }, + { + "time": 229571.78333333338, + "tick": 127, + "frame": 2, + "toeX": 220.0, + "toeY": 288.5 + }, + { + "time": 229571.80000000005, + "tick": 127, + "frame": 3, + "toeX": 220.0, + "toeY": 292.25 + }, + { + "time": 229571.8166666667, + "tick": 128, + "frame": 3, + "toeX": 220.0, + "toeY": 291.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229572.20000000004, + "tick": 151, + "frame": 0, + "toeX": 220.0, + "toeY": 269.0 + }, + { + "time": 229572.2166666667, + "tick": 152, + "frame": 0, + "toeX": 220.0, + "toeY": 268.5 + }, + { + "time": 229572.2333333334, + "tick": 154, + "frame": 1, + "toeX": 220.0, + "toeY": 271.25 + }, + { + "time": 229572.25000000006, + "tick": 155, + "frame": 1, + "toeX": 220.0, + "toeY": 270.75 + }, + { + "time": 229572.26666666672, + "tick": 156, + "frame": 2, + "toeX": 220.0, + "toeY": 274.0 + }, + { + "time": 229572.28333333338, + "tick": 157, + "frame": 2, + "toeX": 220.0, + "toeY": 273.5 + }, + { + "time": 229572.30000000005, + "tick": 157, + "frame": 3, + "toeX": 220.0, + "toeY": 277.25 + }, + { + "time": 229572.3166666667, + "tick": 158, + "frame": 3, + "toeX": 220.0, + "toeY": 276.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229572.70000000004, + "tick": 181, + "frame": 0, + "toeX": 220.0, + "toeY": 254.0 + }, + { + "time": 229572.7166666667, + "tick": 182, + "frame": 0, + "toeX": 220.0, + "toeY": 253.5 + }, + { + "time": 229572.7333333334, + "tick": 184, + "frame": 1, + "toeX": 220.0, + "toeY": 256.25 + }, + { + "time": 229572.75000000006, + "tick": 185, + "frame": 1, + "toeX": 220.0, + "toeY": 255.75 + }, + { + "time": 229572.76666666672, + "tick": 186, + "frame": 2, + "toeX": 220.0, + "toeY": 259.0 + }, + { + "time": 229572.78333333338, + "tick": 187, + "frame": 2, + "toeX": 220.0, + "toeY": 258.5 + }, + { + "time": 229572.80000000005, + "tick": 187, + "frame": 3, + "toeX": 220.0, + "toeY": 262.25 + }, + { + "time": 229572.8166666667, + "tick": 188, + "frame": 3, + "toeX": 220.0, + "toeY": 261.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229573.20000000004, + "tick": 211, + "frame": 0, + "toeX": 220.0, + "toeY": 239.0 + }, + { + "time": 229573.2166666667, + "tick": 212, + "frame": 0, + "toeX": 220.0, + "toeY": 238.5 + }, + { + "time": 229573.2333333334, + "tick": 214, + "frame": 1, + "toeX": 220.0, + "toeY": 241.25 + }, + { + "time": 229573.25000000006, + "tick": 215, + "frame": 1, + "toeX": 220.0, + "toeY": 240.75 + }, + { + "time": 229573.26666666672, + "tick": 216, + "frame": 2, + "toeX": 220.0, + "toeY": 244.0 + }, + { + "time": 229573.28333333338, + "tick": 217, + "frame": 2, + "toeX": 220.0, + "toeY": 243.5 + }, + { + "time": 229573.30000000005, + "tick": 217, + "frame": 3, + "toeX": 220.0, + "toeY": 247.25 + }, + { + "time": 229573.3166666667, + "tick": 218, + "frame": 3, + "toeX": 220.0, + "toeY": 246.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 229573.70000000004, + "tick": 241, + "frame": 0, + "toeX": 220.0, + "toeY": 224.0 + }, + { + "time": 229573.7166666667, + "tick": 242, + "frame": 0, + "toeX": 220.0, + "toeY": 223.5 + }, + { + "time": 229573.7333333334, + "tick": 244, + "frame": 1, + "toeX": 220.0, + "toeY": 226.25 + }, + { + "time": 229573.76666666672, + "tick": 246, + "frame": 2, + "toeX": 220.0, + "toeY": 229.0 + }, + { + "time": 229573.78333333338, + "tick": 247, + "frame": 2, + "toeX": 220.0, + "toeY": 228.5 + }, + { + "time": 229573.8166666667, + "tick": 248, + "frame": 3, + "toeX": 220.0, + "toeY": 231.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10756262502400205, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 229574.20000000004, + "tick": 271, + "frame": 0, + "toeX": 220.0, + "toeY": 209.0 + }, + { + "time": 229574.2166666667, + "tick": 272, + "frame": 0, + "toeX": 220.0, + "toeY": 208.5 + }, + { + "time": 229574.2333333334, + "tick": 274, + "frame": 1, + "toeX": 220.0, + "toeY": 211.25 + }, + { + "time": 229574.26830750005, + "tick": 276, + "frame": 2, + "toeX": 220.0, + "toeY": 214.0 + }, + { + "time": 229574.30756262506, + "tick": 278, + "frame": 3, + "toeX": 220.0, + "toeY": 216.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.1109569166728761, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229574.70570975004, + "tick": 302, + "frame": 0, + "toeX": 220.0, + "toeY": 193.5 + }, + { + "time": 229574.7333333334, + "tick": 304, + "frame": 1, + "toeX": 220.0, + "toeY": 196.25 + }, + { + "time": 229574.75000000006, + "tick": 305, + "frame": 1, + "toeX": 220.0, + "toeY": 195.75 + }, + { + "time": 229574.78333333338, + "tick": 307, + "frame": 2, + "toeX": 220.0, + "toeY": 198.5 + }, + { + "time": 229574.80000000005, + "tick": 307, + "frame": 3, + "toeX": 220.0, + "toeY": 202.25 + }, + { + "time": 229574.8166666667, + "tick": 308, + "frame": 3, + "toeX": 220.0, + "toeY": 201.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229575.20000000004, + "tick": 331, + "frame": 0, + "toeX": 220.0, + "toeY": 179.0 + }, + { + "time": 229575.2166666667, + "tick": 332, + "frame": 0, + "toeX": 220.0, + "toeY": 178.5 + }, + { + "time": 229575.2333333334, + "tick": 334, + "frame": 1, + "toeX": 220.0, + "toeY": 181.25 + }, + { + "time": 229575.26666666672, + "tick": 336, + "frame": 2, + "toeX": 220.0, + "toeY": 184.0 + }, + { + "time": 229575.28333333338, + "tick": 337, + "frame": 2, + "toeX": 220.0, + "toeY": 183.5 + }, + { + "time": 229575.30000000005, + "tick": 337, + "frame": 3, + "toeX": 220.0, + "toeY": 187.25 + }, + { + "time": 229575.3166666667, + "tick": 338, + "frame": 3, + "toeX": 220.0, + "toeY": 186.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229575.70000000004, + "tick": 361, + "frame": 0, + "toeX": 220.0, + "toeY": 164.0 + }, + { + "time": 229575.7166666667, + "tick": 362, + "frame": 0, + "toeX": 220.0, + "toeY": 163.5 + }, + { + "time": 229575.7333333334, + "tick": 364, + "frame": 1, + "toeX": 220.0, + "toeY": 166.25 + }, + { + "time": 229575.75000000006, + "tick": 365, + "frame": 1, + "toeX": 220.0, + "toeY": 165.75 + }, + { + "time": 229575.76666666672, + "tick": 366, + "frame": 2, + "toeX": 220.0, + "toeY": 169.0 + }, + { + "time": 229575.78333333338, + "tick": 367, + "frame": 2, + "toeX": 220.0, + "toeY": 168.5 + }, + { + "time": 229575.80000000005, + "tick": 367, + "frame": 3, + "toeX": 220.0, + "toeY": 172.25 + }, + { + "time": 229575.8166666667, + "tick": 368, + "frame": 3, + "toeX": 220.0, + "toeY": 171.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229576.20000000004, + "tick": 391, + "frame": 0, + "toeX": 220.0, + "toeY": 149.0 + }, + { + "time": 229576.2166666667, + "tick": 392, + "frame": 0, + "toeX": 220.0, + "toeY": 148.5 + }, + { + "time": 229576.2333333334, + "tick": 394, + "frame": 1, + "toeX": 220.0, + "toeY": 151.25 + }, + { + "time": 229576.27481537504, + "tick": 396, + "frame": 2, + "toeX": 220.0, + "toeY": 154.0 + }, + { + "time": 229576.30000000005, + "tick": 397, + "frame": 3, + "toeX": 220.0, + "toeY": 157.25 + }, + { + "time": 229576.3166666667, + "tick": 398, + "frame": 3, + "toeX": 220.0, + "toeY": 156.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.10681587501312606, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 229576.70000000004, + "tick": 421, + "frame": 0, + "toeX": 220.0, + "toeY": 134.0 + }, + { + "time": 229576.7166666667, + "tick": 422, + "frame": 0, + "toeX": 220.0, + "toeY": 133.5 + }, + { + "time": 229576.7333333334, + "tick": 424, + "frame": 1, + "toeX": 220.0, + "toeY": 136.25 + }, + { + "time": 229576.76793662505, + "tick": 426, + "frame": 2, + "toeX": 220.0, + "toeY": 139.0 + }, + { + "time": 229576.80681587505, + "tick": 428, + "frame": 3, + "toeX": 220.0, + "toeY": 141.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 229577.20000000004, + "tick": 451, + "frame": 0, + "toeX": 220.0, + "toeY": 119.0 + }, + { + "time": 229577.2166666667, + "tick": 452, + "frame": 0, + "toeX": 220.0, + "toeY": 118.5 + }, + { + "time": 229577.2333333334, + "tick": 454, + "frame": 1, + "toeX": 220.0, + "toeY": 121.25 + }, + { + "time": 229577.25000000006, + "tick": 455, + "frame": 1, + "toeX": 220.0, + "toeY": 120.75 + }, + { + "time": 229577.28333333338, + "tick": 457, + "frame": 2, + "toeX": 220.0, + "toeY": 123.5 + }, + { + "time": 229577.30000000005, + "tick": 457, + "frame": 3, + "toeX": 220.0, + "toeY": 127.25 + }, + { + "time": 229577.3166666667, + "tick": 458, + "frame": 3, + "toeX": 220.0, + "toeY": 126.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 3.75, + "observations": [ + { + "time": 229631.33333333337, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 229631.35000000006, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 229631.36666666673, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 229631.3833333334, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 229631.40000000005, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 229631.41666666672, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 229631.43333333338, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229631.8166666667, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 229631.83333333337, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 229631.85000000006, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 229631.86666666673, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 248.25 + }, + { + "time": 229631.90000000005, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 229631.91666666672, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 229631.93333333338, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229632.3166666667, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 229632.33333333337, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 229632.35000000006, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 229632.36666666673, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 188.25 + }, + { + "time": 229632.3833333334, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 229632.40000000005, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 229632.41666666672, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 229632.43333333338, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229632.8166666667, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 229632.83333333337, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 229632.85000000006, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 229632.86666666673, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 128.25 + }, + { + "time": 229632.8833333334, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 229632.90000000005, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 229632.91666666672, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 229632.93333333338, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229631.0666666667, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 229631.08333333337, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 229631.10000000006, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 229631.11666666673, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 338.25 + }, + { + "time": 229631.1333333334, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 229631.15000000005, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 229631.16666666672, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 229631.18333333338, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229631.5666666667, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 229631.58333333337, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 229631.60000000006, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 229631.61666666673, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 278.25 + }, + { + "time": 229631.6333333334, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 229631.65000000005, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 229631.66666666672, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 229631.68333333338, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229632.0666666667, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 229632.08333333337, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 229632.10000000006, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 229632.11666666673, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 218.25 + }, + { + "time": 229632.1333333334, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 229632.15000000005, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 229632.16666666672, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 229632.18333333338, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 229632.5666666667, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 229632.58333333337, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 229632.60000000006, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 229632.61666666673, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 158.25 + }, + { + "time": 229632.6333333334, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 229632.65000000005, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 229632.66666666672, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 229632.68333333338, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + } + ] +} diff --git a/docs/review/cadence-live-comparison/revision-record.json b/docs/review/cadence-live-comparison/revision-record.json new file mode 100644 index 00000000..3c9ade2a --- /dev/null +++ b/docs/review/cadence-live-comparison/revision-record.json @@ -0,0 +1,12 @@ +{ + "status": "LOCAL_WORKTREE_EXPERIMENT", + "hashes": { + "work/SS-runtime/AppTests/DisplayedPlaybackTests.swift": "05f09b0a06d3095bf4512dc93d4284291e9098a8d330a2db5c7429eea7594658", + "work/SS-runtime/AppTests/BenchmarkAssets/player-source-s-record.json": "746341461253fcc5e0b15b69cd506271afbab69beb85e9a9f827e51817181cc0", + "work/SS-specs/specs/001-single-level-vertical-slice/benchmark-production.md": "84bb02a0c7172c2c87524b50e1e87d756f85da47f2e7fce51d268d5c05b943b0" + }, + "heads": { + "SS-runtime": "53a3a8c8b116ec370828388a2229f41807706059", + "SS-specs": "07d4ef751a007491883b467fe6802ce85cf835dc" + } +} diff --git a/docs/review/cadence-recorded-review/README.md b/docs/review/cadence-recorded-review/README.md new file mode 100644 index 00000000..8f3b68ba --- /dev/null +++ b/docs/review/cadence-recorded-review/README.md @@ -0,0 +1,11 @@ +# Recorded live player review + +Recorded app suite: 112 named tests / 114 executions passed, zero failures or skips. All 12 cadence/distance, input and motion-mode comparisons observed all 16 source textures. These are actual simulator recordings, not synthetic source playback or physical-device acceptance. + +normal-speed.html and quarter-speed.html separate the viewing speeds; each includes full, half and quarter movement input at native logical size and as a detail crop. MP4 retiming preserves captured-frame count and multiplies every presentation timestamp by four (checked within 2 ms rounding). The final encoded packet hold differs slightly, so excerpt endpoints must not be judged as authored seams. No frame interpolation was added. + +Reviewed recorded frame plate: lowered recovery, narrow stance, opposing arm positions and absent added outline are visible. Static frames do not establish smooth contact or seam acceptance. Full moving visual review remains open. + +Recorded timing worsened: full-input Reduced Motion distance candidate p95 66.48 ms and maximum 152.74 ms. Preserve this failure of the performance target; passing frame coverage does not resolve it. Compare against the unrecorded run before attributing cause. + +Still open: interruption matrix, subjective motion/contact acceptance, timing investigation, shared scene, full facing/action coverage, production admission and physical-device QA. diff --git a/docs/review/cadence-recorded-review/app-summary.json b/docs/review/cadence-recorded-review/app-summary.json new file mode 100644 index 00000000..1557d879 --- /dev/null +++ b/docs/review/cadence-recorded-review/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 114, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792112778.693, + "passedTests" : 112, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792112455.632, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "47% of duration", + "text" : "2 longest test runs with outlier durations exceeding 30.39s (three standard deviations)" + } + ], + "totalTestCount" : 112 +} diff --git a/docs/review/cadence-recorded-review/clip-export.json b/docs/review/cadence-recorded-review/clip-export.json new file mode 100644 index 00000000..3dbe375c --- /dev/null +++ b/docs/review/cadence-recorded-review/clip-export.json @@ -0,0 +1,43 @@ +{ + "source": "outputs/SS-player-startup-review/cadence-live-comparison.mov", + "clips": [ + [ + "full-input", + 180.35, + 1.4 + ], + [ + "half-input", + 190.35, + 3.3 + ], + [ + "quarter-input", + 207.4, + 7.3 + ] + ], + "rotation": "transpose=2", + "nativeCrop": [ + 2112, + 978, + 0, + 0 + ], + "nativeDisplay": [ + 704, + 326 + ], + "detailCrop": [ + 480, + 480, + 816, + 168 + ], + "quarterSpeed": "timestamps multiplied by 4; no frame interpolation", + "limits": [ + "MOV creation timestamp is second-resolution; on-screen labels checked against exported sample", + "Excerpt boundaries are not authored 16-to-1 seams", + "Not physical-device footage" + ] +} diff --git a/docs/review/cadence-recorded-review/comparison.json b/docs/review/cadence-recorded-review/comparison.json new file mode 100644 index 00000000..3bbf4888 --- /dev/null +++ b/docs/review/cadence-recorded-review/comparison.json @@ -0,0 +1,23770 @@ +[ + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.22658288478851318, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.19218695163726807, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.06813609600067139, + "tick": 12 + }, + { + "renderSeconds": 0.002826094627380371, + "simulationSeconds": 0.02971196174621582, + "tick": 17 + }, + { + "renderSeconds": 0.0023249387741088867, + "simulationSeconds": 0.019609928131103516, + "tick": 20 + }, + { + "renderSeconds": 0.0031279325485229492, + "simulationSeconds": 0.00656890869140625, + "tick": 21 + }, + { + "renderSeconds": 0.0029250383377075195, + "simulationSeconds": 0.013369083404541016, + "tick": 23 + }, + { + "renderSeconds": 0.0023729801177978516, + "simulationSeconds": 0.0066939592361450195, + "tick": 24 + }, + { + "renderSeconds": 0.0032979249954223633, + "simulationSeconds": 0.0071669816970825195, + "tick": 25 + }, + { + "renderSeconds": 0.00242006778717041, + "simulationSeconds": 0.006587982177734375, + "tick": 26 + }, + { + "renderSeconds": 0.0030629634857177734, + "simulationSeconds": 0.006693005561828613, + "tick": 27 + }, + { + "renderSeconds": 0.002259969711303711, + "simulationSeconds": 0.006391048431396484, + "tick": 28 + }, + { + "renderSeconds": 0.003217935562133789, + "simulationSeconds": 0.006402015686035156, + "tick": 29 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.006259918212890625, + "tick": 30 + }, + { + "renderSeconds": 0.00291597843170166, + "simulationSeconds": 0.006786942481994629, + "tick": 31 + }, + { + "renderSeconds": 0.0025739669799804688, + "simulationSeconds": 0.006309986114501953, + "tick": 32 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006283998489379883, + "tick": 33 + }, + { + "renderSeconds": 0.0027399063110351562, + "simulationSeconds": 0.006503939628601074, + "tick": 34 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0.006592988967895508, + "tick": 35 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.006453990936279297, + "tick": 36 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006683945655822754, + "tick": 37 + }, + { + "renderSeconds": 0.0031090974807739258, + "simulationSeconds": 0.006898999214172363, + "tick": 38 + }, + { + "renderSeconds": 0.002743959426879883, + "simulationSeconds": 0.006608009338378906, + "tick": 39 + }, + { + "renderSeconds": 0.0032330751419067383, + "simulationSeconds": 0.006822943687438965, + "tick": 40 + }, + { + "renderSeconds": 0.0023889541625976562, + "simulationSeconds": 0.012830972671508789, + "tick": 42 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.006816983222961426, + "tick": 43 + }, + { + "renderSeconds": 0.002891063690185547, + "simulationSeconds": 0.006966948509216309, + "tick": 44 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006289005279541016, + "tick": 45 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.0065670013427734375, + "tick": 46 + }, + { + "renderSeconds": 0.0031429529190063477, + "simulationSeconds": 0.006551980972290039, + "tick": 47 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.006322026252746582, + "tick": 48 + }, + { + "renderSeconds": 0.0030870437622070312, + "simulationSeconds": 0.006415963172912598, + "tick": 49 + }, + { + "renderSeconds": 0.00365293025970459, + "simulationSeconds": 0.00766301155090332, + "tick": 50 + }, + { + "renderSeconds": 0.0033000707626342773, + "simulationSeconds": 0.007207989692687988, + "tick": 51 + }, + { + "renderSeconds": 0.00397801399230957, + "simulationSeconds": 0.007331967353820801, + "tick": 52 + }, + { + "renderSeconds": 0.0033510923385620117, + "simulationSeconds": 0.007336020469665527, + "tick": 53 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.007801055908203125, + "tick": 54 + }, + { + "renderSeconds": 0.0028700828552246094, + "simulationSeconds": 0.007577061653137207, + "tick": 55 + }, + { + "renderSeconds": 0.003153085708618164, + "simulationSeconds": 0.006699919700622559, + "tick": 56 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0.006865024566650391, + "tick": 57 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.006605982780456543, + "tick": 58 + }, + { + "renderSeconds": 0.003225088119506836, + "simulationSeconds": 0.006228923797607422, + "tick": 59 + }, + { + "renderSeconds": 0.003018021583557129, + "simulationSeconds": 0.006579995155334473, + "tick": 60 + }, + { + "renderSeconds": 0.0032529830932617188, + "simulationSeconds": 0.006380915641784668, + "tick": 61 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0.006425976753234863, + "tick": 62 + }, + { + "renderSeconds": 0.0029219388961791992, + "simulationSeconds": 0.006550908088684082, + "tick": 63 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.006454944610595703, + "tick": 64 + }, + { + "renderSeconds": 0.003434896469116211, + "simulationSeconds": 0.007743954658508301, + "tick": 65 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.006403088569641113, + "tick": 66 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.006412029266357422, + "tick": 67 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.006429076194763184, + "tick": 68 + }, + { + "renderSeconds": 0.0027570724487304688, + "simulationSeconds": 0.006929993629455566, + "tick": 69 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.006760954856872559, + "tick": 70 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006549954414367676, + "tick": 71 + }, + { + "renderSeconds": 0.0030099153518676758, + "simulationSeconds": 0.006533026695251465, + "tick": 72 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.006994962692260742, + "tick": 73 + }, + { + "renderSeconds": 0.0028829574584960938, + "simulationSeconds": 0.006490945816040039, + "tick": 74 + }, + { + "renderSeconds": 0.0029320716857910156, + "simulationSeconds": 0.007071018218994141, + "tick": 75 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.007385969161987305, + "tick": 76 + }, + { + "renderSeconds": 0.0033570528030395508, + "simulationSeconds": 0.006732940673828125, + "tick": 77 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.006297111511230469, + "tick": 78 + }, + { + "renderSeconds": 0.0036710500717163086, + "simulationSeconds": 0.006705045700073242, + "tick": 79 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.006537914276123047, + "tick": 80 + }, + { + "renderSeconds": 0.0028830766677856445, + "simulationSeconds": 0.006518006324768066, + "tick": 81 + }, + { + "renderSeconds": 0.0029410123825073242, + "simulationSeconds": 0.006624937057495117, + "tick": 82 + }, + { + "renderSeconds": 0.0035600662231445312, + "simulationSeconds": 0.006765007972717285, + "tick": 83 + }, + { + "renderSeconds": 0.003805994987487793, + "simulationSeconds": 0.006328940391540527, + "tick": 84 + }, + { + "renderSeconds": 0.0035439729690551758, + "simulationSeconds": 0.007236003875732422, + "tick": 85 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0.008800983428955078, + "tick": 86 + }, + { + "renderSeconds": 0.003188014030456543, + "simulationSeconds": 0.006812930107116699, + "tick": 87 + }, + { + "renderSeconds": 0.0030400753021240234, + "simulationSeconds": 0.007218003273010254, + "tick": 88 + }, + { + "renderSeconds": 0.003289937973022461, + "simulationSeconds": 0.007269024848937988, + "tick": 89 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.0068579912185668945, + "tick": 90 + }, + { + "renderSeconds": 0.002794981002807617, + "simulationSeconds": 0.007058978080749512, + "tick": 91 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.007393956184387207, + "tick": 92 + }, + { + "renderSeconds": 0.002880096435546875, + "simulationSeconds": 0.00713801383972168, + "tick": 93 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.0075910091400146484, + "tick": 94 + }, + { + "renderSeconds": 0.0029990673065185547, + "simulationSeconds": 0.006981015205383301, + "tick": 95 + }, + { + "renderSeconds": 0.003491997718811035, + "simulationSeconds": 0.00710296630859375, + "tick": 96 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.006842970848083496, + "tick": 97 + }, + { + "renderSeconds": 0.00373995304107666, + "simulationSeconds": 0.00757598876953125, + "tick": 98 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.013405084609985352, + "tick": 100 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.006760001182556152, + "tick": 101 + }, + { + "renderSeconds": 0.0028420686721801758, + "simulationSeconds": 0.007629036903381348, + "tick": 102 + }, + { + "renderSeconds": 0.0033599138259887695, + "simulationSeconds": 0.007132053375244141, + "tick": 103 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.007341980934143066, + "tick": 104 + }, + { + "renderSeconds": 0.0031499862670898438, + "simulationSeconds": 0.006883978843688965, + "tick": 105 + }, + { + "renderSeconds": 0.0031020641326904297, + "simulationSeconds": 0.006608009338378906, + "tick": 106 + }, + { + "renderSeconds": 0.0031850337982177734, + "simulationSeconds": 0.007284998893737793, + "tick": 107 + }, + { + "renderSeconds": 0.003260016441345215, + "simulationSeconds": 0.007174968719482422, + "tick": 108 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.006350994110107422, + "tick": 109 + }, + { + "renderSeconds": 0.0030219554901123047, + "simulationSeconds": 0.007401108741760254, + "tick": 110 + }, + { + "renderSeconds": 0.002418041229248047, + "simulationSeconds": 0.006665945053100586, + "tick": 111 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.006863951683044434, + "tick": 112 + }, + { + "renderSeconds": 0.0032019615173339844, + "simulationSeconds": 0.006744980812072754, + "tick": 113 + }, + { + "renderSeconds": 0.0027219057083129883, + "simulationSeconds": 0.006463050842285156, + "tick": 114 + }, + { + "renderSeconds": 0.003170013427734375, + "simulationSeconds": 0.0067920684814453125, + "tick": 115 + }, + { + "renderSeconds": 0.0025539398193359375, + "simulationSeconds": 0.006604909896850586, + "tick": 116 + }, + { + "renderSeconds": 0.00256502628326416, + "simulationSeconds": 0.0066950321197509766, + "tick": 117 + }, + { + "renderSeconds": 0.003419041633605957, + "simulationSeconds": 0.006944060325622559, + "tick": 118 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.006538033485412598, + "tick": 119 + }, + { + "renderSeconds": 0.002660989761352539, + "simulationSeconds": 0.006389975547790527, + "tick": 120 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.006811022758483887, + "tick": 121 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 0.007717013359069824, + "tick": 122 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.007173061370849609, + "tick": 123 + }, + { + "renderSeconds": 0.00306093692779541, + "simulationSeconds": 0.007778048515319824, + "tick": 124 + }, + { + "renderSeconds": 0.0033739805221557617, + "simulationSeconds": 0.007673025131225586, + "tick": 125 + }, + { + "renderSeconds": 0.0033510923385620117, + "simulationSeconds": 0.007834911346435547, + "tick": 126 + }, + { + "renderSeconds": 0.0027350187301635742, + "simulationSeconds": 0.0069119930267333984, + "tick": 127 + }, + { + "renderSeconds": 0.0034940242767333984, + "simulationSeconds": 0.009940028190612793, + "tick": 128 + }, + { + "renderSeconds": 0.0037740468978881836, + "simulationSeconds": 0.008474946022033691, + "tick": 129 + }, + { + "renderSeconds": 0.0035420656204223633, + "simulationSeconds": 0.009238004684448242, + "tick": 130 + }, + { + "renderSeconds": 0.003654003143310547, + "simulationSeconds": 0.00873708724975586, + "tick": 131 + }, + { + "renderSeconds": 0.0037549734115600586, + "simulationSeconds": 0.00966799259185791, + "tick": 132 + }, + { + "renderSeconds": 0.003502964973449707, + "simulationSeconds": 0.008857011795043945, + "tick": 133 + }, + { + "renderSeconds": 0.0028650760650634766, + "simulationSeconds": 0.007125973701477051, + "tick": 134 + }, + { + "renderSeconds": 0.004083037376403809, + "simulationSeconds": 0.007890105247497559, + "tick": 135 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.007256031036376953, + "tick": 136 + }, + { + "renderSeconds": 0.0032889842987060547, + "simulationSeconds": 0.008723974227905273, + "tick": 137 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.007011055946350098, + "tick": 138 + }, + { + "renderSeconds": 0.0042639970779418945, + "simulationSeconds": 0.00896906852722168, + "tick": 139 + }, + { + "renderSeconds": 0.003325939178466797, + "simulationSeconds": 0.007696032524108887, + "tick": 140 + }, + { + "renderSeconds": 0.003283977508544922, + "simulationSeconds": 0.007691025733947754, + "tick": 141 + }, + { + "renderSeconds": 0.0030350685119628906, + "simulationSeconds": 0.007169008255004883, + "tick": 142 + }, + { + "renderSeconds": 0.003750920295715332, + "simulationSeconds": 0.009917974472045898, + "tick": 143 + }, + { + "renderSeconds": 0.0030249357223510742, + "simulationSeconds": 0.007541060447692871, + "tick": 144 + }, + { + "renderSeconds": 0.0029889345169067383, + "simulationSeconds": 0.007537961006164551, + "tick": 145 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.00789797306060791, + "tick": 146 + }, + { + "renderSeconds": 0.003323078155517578, + "simulationSeconds": 0.0066759586334228516, + "tick": 147 + }, + { + "renderSeconds": 0.003072023391723633, + "simulationSeconds": 0.006837010383605957, + "tick": 148 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.007310986518859863, + "tick": 149 + }, + { + "renderSeconds": 0.0030709505081176758, + "simulationSeconds": 0.006831049919128418, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 200, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006192564964294434, + "preparationSeconds": 0.33290600776672363, + "reducedMotion": false, + "renderSeconds": 0.5903064012527466, + "repetition": 1, + "scenePreparationSeconds": 0, + "simulationSeconds": 1.0356736183166504, + "snapshotBuildCount": 131, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 27.710208320058882, + "callbackMaxMS": 210.06812498671934, + "postActionRecords": 131, + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2149432897567749, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.20636498928070068, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0036150217056274414, + "simulationSeconds": 0.08225202560424805, + "tick": 14 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.03721892833709717, + "tick": 20 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.019106030464172363, + "tick": 23 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.005964040756225586, + "tick": 24 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.008571982383728027, + "tick": 25 + }, + { + "renderSeconds": 0.0031300783157348633, + "simulationSeconds": 0.006860017776489258, + "tick": 26 + }, + { + "renderSeconds": 0.0027540922164916992, + "simulationSeconds": 0.006132006645202637, + "tick": 27 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.006199955940246582, + "tick": 28 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.006150007247924805, + "tick": 29 + }, + { + "renderSeconds": 0.003186941146850586, + "simulationSeconds": 0.006698012351989746, + "tick": 30 + }, + { + "renderSeconds": 0.0027440786361694336, + "simulationSeconds": 0.0065850019454956055, + "tick": 31 + }, + { + "renderSeconds": 0.003092050552368164, + "simulationSeconds": 0.007115006446838379, + "tick": 32 + }, + { + "renderSeconds": 0.002830028533935547, + "simulationSeconds": 0.006291985511779785, + "tick": 33 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.006442070007324219, + "tick": 34 + }, + { + "renderSeconds": 0.0033140182495117188, + "simulationSeconds": 0.00734400749206543, + "tick": 35 + }, + { + "renderSeconds": 0.0034379959106445312, + "simulationSeconds": 0.007832050323486328, + "tick": 36 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.00625002384185791, + "tick": 37 + }, + { + "renderSeconds": 0.00315093994140625, + "simulationSeconds": 0.006520986557006836, + "tick": 38 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.006424069404602051, + "tick": 39 + }, + { + "renderSeconds": 0.0029289722442626953, + "simulationSeconds": 0.00807201862335205, + "tick": 40 + }, + { + "renderSeconds": 0.002610921859741211, + "simulationSeconds": 0.012753009796142578, + "tick": 42 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.006279945373535156, + "tick": 43 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.007202029228210449, + "tick": 44 + }, + { + "renderSeconds": 0.0025049448013305664, + "simulationSeconds": 0.006084084510803223, + "tick": 45 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.006708025932312012, + "tick": 46 + }, + { + "renderSeconds": 0.0030509233474731445, + "simulationSeconds": 0.007133007049560547, + "tick": 47 + }, + { + "renderSeconds": 0.003702998161315918, + "simulationSeconds": 0.00903308391571045, + "tick": 48 + }, + { + "renderSeconds": 0.005290985107421875, + "simulationSeconds": 0.008926987648010254, + "tick": 49 + }, + { + "renderSeconds": 0.004037022590637207, + "simulationSeconds": 0.009292960166931152, + "tick": 50 + }, + { + "renderSeconds": 0.0039119720458984375, + "simulationSeconds": 0.01758599281311035, + "tick": 52 + }, + { + "renderSeconds": 0.003231048583984375, + "simulationSeconds": 0.014410018920898438, + "tick": 54 + }, + { + "renderSeconds": 0.00274503231048584, + "simulationSeconds": 0.00721895694732666, + "tick": 55 + }, + { + "renderSeconds": 0.003225088119506836, + "simulationSeconds": 0.006685972213745117, + "tick": 56 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.006476044654846191, + "tick": 57 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.006442070007324219, + "tick": 58 + }, + { + "renderSeconds": 0.0025500059127807617, + "simulationSeconds": 0.00610196590423584, + "tick": 59 + }, + { + "renderSeconds": 0.0030820369720458984, + "simulationSeconds": 0.006049990653991699, + "tick": 60 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.006685972213745117, + "tick": 61 + }, + { + "renderSeconds": 0.004271030426025391, + "simulationSeconds": 0.007675051689147949, + "tick": 62 + }, + { + "renderSeconds": 0.0031169652938842773, + "simulationSeconds": 0.008189082145690918, + "tick": 63 + }, + { + "renderSeconds": 0.004157066345214844, + "simulationSeconds": 0.009523987770080566, + "tick": 64 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.007327079772949219, + "tick": 65 + }, + { + "renderSeconds": 0.00347900390625, + "simulationSeconds": 0.007851004600524902, + "tick": 66 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.007511019706726074, + "tick": 67 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.006912946701049805, + "tick": 68 + }, + { + "renderSeconds": 0.0029751062393188477, + "simulationSeconds": 0.007086992263793945, + "tick": 69 + }, + { + "renderSeconds": 0.0030939579010009766, + "simulationSeconds": 0.006850004196166992, + "tick": 70 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.006299018859863281, + "tick": 71 + }, + { + "renderSeconds": 0.0033559799194335938, + "simulationSeconds": 0.007599949836730957, + "tick": 72 + }, + { + "renderSeconds": 0.003139019012451172, + "simulationSeconds": 0.015020966529846191, + "tick": 74 + }, + { + "renderSeconds": 0.003174901008605957, + "simulationSeconds": 0.007513999938964844, + "tick": 75 + }, + { + "renderSeconds": 0.0043849945068359375, + "simulationSeconds": 0.008114933967590332, + "tick": 76 + }, + { + "renderSeconds": 0.0034199953079223633, + "simulationSeconds": 0.0070230960845947266, + "tick": 77 + }, + { + "renderSeconds": 0.0034159421920776367, + "simulationSeconds": 0.007972002029418945, + "tick": 78 + }, + { + "renderSeconds": 0.0032390356063842773, + "simulationSeconds": 0.007182955741882324, + "tick": 79 + }, + { + "renderSeconds": 0.0037959814071655273, + "simulationSeconds": 0.009145021438598633, + "tick": 80 + }, + { + "renderSeconds": 0.003555893898010254, + "simulationSeconds": 0.017104029655456543, + "tick": 82 + }, + { + "renderSeconds": 0.0037499666213989258, + "simulationSeconds": 0.00908207893371582, + "tick": 83 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.016795039176940918, + "tick": 85 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.007726907730102539, + "tick": 86 + }, + { + "renderSeconds": 0.003303050994873047, + "simulationSeconds": 0.007156968116760254, + "tick": 87 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.007305026054382324, + "tick": 88 + }, + { + "renderSeconds": 0.0029419660568237305, + "simulationSeconds": 0.006941080093383789, + "tick": 89 + }, + { + "renderSeconds": 0.0033529996871948242, + "simulationSeconds": 0.007174968719482422, + "tick": 90 + }, + { + "renderSeconds": 0.0030950307846069336, + "simulationSeconds": 0.007382035255432129, + "tick": 91 + }, + { + "renderSeconds": 0.002870917320251465, + "simulationSeconds": 0.007465958595275879, + "tick": 92 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0.007182002067565918, + "tick": 93 + }, + { + "renderSeconds": 0.003783106803894043, + "simulationSeconds": 0.010313987731933594, + "tick": 94 + }, + { + "renderSeconds": 0.003287076950073242, + "simulationSeconds": 0.014827966690063477, + "tick": 96 + }, + { + "renderSeconds": 0.003072023391723633, + "simulationSeconds": 0.007270932197570801, + "tick": 97 + }, + { + "renderSeconds": 0.0035109519958496094, + "simulationSeconds": 0.007681012153625488, + "tick": 98 + }, + { + "renderSeconds": 0.002989053726196289, + "simulationSeconds": 0.006363987922668457, + "tick": 99 + }, + { + "renderSeconds": 0.0033779144287109375, + "simulationSeconds": 0.007280945777893066, + "tick": 100 + }, + { + "renderSeconds": 0.003186941146850586, + "simulationSeconds": 0.0064868927001953125, + "tick": 101 + }, + { + "renderSeconds": 0.0030170679092407227, + "simulationSeconds": 0.006612062454223633, + "tick": 102 + }, + { + "renderSeconds": 0.002582073211669922, + "simulationSeconds": 0.0062329769134521484, + "tick": 103 + }, + { + "renderSeconds": 0.002545952796936035, + "simulationSeconds": 0.007090091705322266, + "tick": 104 + }, + { + "renderSeconds": 0.002543926239013672, + "simulationSeconds": 0.006540894508361816, + "tick": 105 + }, + { + "renderSeconds": 0.0030989646911621094, + "simulationSeconds": 0.0062770843505859375, + "tick": 106 + }, + { + "renderSeconds": 0.0031839609146118164, + "simulationSeconds": 0.007534980773925781, + "tick": 107 + }, + { + "renderSeconds": 0.003163933753967285, + "simulationSeconds": 0.007140994071960449, + "tick": 108 + }, + { + "renderSeconds": 0.00413203239440918, + "simulationSeconds": 0.009723901748657227, + "tick": 109 + }, + { + "renderSeconds": 0.004140019416809082, + "simulationSeconds": 0.009253978729248047, + "tick": 110 + }, + { + "renderSeconds": 0.0038570165634155273, + "simulationSeconds": 0.009112954139709473, + "tick": 111 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.01547706127166748, + "tick": 113 + }, + { + "renderSeconds": 0.0036950111389160156, + "simulationSeconds": 0.009404897689819336, + "tick": 114 + }, + { + "renderSeconds": 0.0035920143127441406, + "simulationSeconds": 0.0076400041580200195, + "tick": 115 + }, + { + "renderSeconds": 0.004818081855773926, + "simulationSeconds": 0.0075310468673706055, + "tick": 116 + }, + { + "renderSeconds": 0.0024300813674926758, + "simulationSeconds": 0.01273202896118164, + "tick": 118 + }, + { + "renderSeconds": 0.002875089645385742, + "simulationSeconds": 0.014223933219909668, + "tick": 120 + }, + { + "renderSeconds": 0.0032939910888671875, + "simulationSeconds": 0.014217972755432129, + "tick": 122 + }, + { + "renderSeconds": 0.0025229454040527344, + "simulationSeconds": 0.006705045700073242, + "tick": 123 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.00754094123840332, + "tick": 124 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.006260037422180176, + "tick": 125 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.007037043571472168, + "tick": 126 + }, + { + "renderSeconds": 0.0027490854263305664, + "simulationSeconds": 0.007454037666320801, + "tick": 127 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.006466984748840332, + "tick": 128 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.006556987762451172, + "tick": 129 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0.00645899772644043, + "tick": 130 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.005958080291748047, + "tick": 131 + }, + { + "renderSeconds": 0.0030279159545898438, + "simulationSeconds": 0.007803082466125488, + "tick": 132 + }, + { + "renderSeconds": 0.0044449567794799805, + "simulationSeconds": 0.009037017822265625, + "tick": 133 + }, + { + "renderSeconds": 0.0036249160766601562, + "simulationSeconds": 0.009526968002319336, + "tick": 134 + }, + { + "renderSeconds": 0.005015969276428223, + "simulationSeconds": 0.009327054023742676, + "tick": 135 + }, + { + "renderSeconds": 0.0037230253219604492, + "simulationSeconds": 0.012262105941772461, + "tick": 136 + }, + { + "renderSeconds": 0.0033930540084838867, + "simulationSeconds": 0.0180819034576416, + "tick": 138 + }, + { + "renderSeconds": 0.004485011100769043, + "simulationSeconds": 0.00933694839477539, + "tick": 139 + }, + { + "renderSeconds": 0.0034799575805664062, + "simulationSeconds": 0.014348030090332031, + "tick": 141 + }, + { + "renderSeconds": 0.003321051597595215, + "simulationSeconds": 0.006897926330566406, + "tick": 142 + }, + { + "renderSeconds": 0.00291597843170166, + "simulationSeconds": 0.0073310136795043945, + "tick": 143 + }, + { + "renderSeconds": 0.0027109384536743164, + "simulationSeconds": 0.00645291805267334, + "tick": 144 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.005936980247497559, + "tick": 145 + }, + { + "renderSeconds": 0.0027109384536743164, + "simulationSeconds": 0.007066011428833008, + "tick": 146 + }, + { + "renderSeconds": 0.0028629302978515625, + "simulationSeconds": 0.0061910152435302734, + "tick": 147 + }, + { + "renderSeconds": 0.003156900405883789, + "simulationSeconds": 0.007674098014831543, + "tick": 148 + }, + { + "renderSeconds": 0.003448009490966797, + "simulationSeconds": 0.007223963737487793, + "tick": 149 + }, + { + "renderSeconds": 0.0035380125045776367, + "simulationSeconds": 0.007313966751098633, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 180, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005809426307678223, + "preparationSeconds": 0.32525599002838135, + "reducedMotion": false, + "renderSeconds": 0.5812888145446777, + "repetition": 2, + "scenePreparationSeconds": 0, + "simulationSeconds": 1.0804373025894165, + "snapshotBuildCount": 118, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.72870833845809, + "callbackMaxMS": 234.65091668185778, + "postActionRecords": 118, + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2592191696166992, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0010058879852294922, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.001170039176940918, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0009419918060302734, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009750127792358398, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0032520294189453125, + "simulationSeconds": 0.00596308708190918, + "tick": 1 + }, + { + "renderSeconds": 0.0037900209426879883, + "simulationSeconds": 0.006924986839294434, + "tick": 2 + }, + { + "renderSeconds": 0.0034281015396118164, + "simulationSeconds": 0.007122993469238281, + "tick": 3 + }, + { + "renderSeconds": 0.003466010093688965, + "simulationSeconds": 0.007687091827392578, + "tick": 4 + }, + { + "renderSeconds": 0.0030869245529174805, + "simulationSeconds": 0.007361888885498047, + "tick": 5 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0.007384061813354492, + "tick": 6 + }, + { + "renderSeconds": 0.0033010244369506836, + "simulationSeconds": 0.007376909255981445, + "tick": 7 + }, + { + "renderSeconds": 0.0030379295349121094, + "simulationSeconds": 0.007177114486694336, + "tick": 8 + }, + { + "renderSeconds": 0.0038520097732543945, + "simulationSeconds": 0.007887959480285645, + "tick": 9 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.00760805606842041, + "tick": 10 + }, + { + "renderSeconds": 0.0035589933395385742, + "simulationSeconds": 0.007738947868347168, + "tick": 11 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.020987987518310547, + "tick": 14 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.0159149169921875, + "tick": 16 + }, + { + "renderSeconds": 0.0034619569778442383, + "simulationSeconds": 0.0067059993743896484, + "tick": 17 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006193995475769043, + "tick": 18 + }, + { + "renderSeconds": 0.002672910690307617, + "simulationSeconds": 0.006946086883544922, + "tick": 19 + }, + { + "renderSeconds": 0.0023349523544311523, + "simulationSeconds": 0.006293058395385742, + "tick": 20 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0.006381988525390625, + "tick": 21 + }, + { + "renderSeconds": 0.0025169849395751953, + "simulationSeconds": 0.006392002105712891, + "tick": 22 + }, + { + "renderSeconds": 0.0026971101760864258, + "simulationSeconds": 0.006047964096069336, + "tick": 23 + }, + { + "renderSeconds": 0.002646923065185547, + "simulationSeconds": 0.007212996482849121, + "tick": 24 + }, + { + "renderSeconds": 0.0026699304580688477, + "simulationSeconds": 0.00610196590423584, + "tick": 25 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0.007951974868774414, + "tick": 26 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.007150053977966309, + "tick": 27 + }, + { + "renderSeconds": 0.0035660266876220703, + "simulationSeconds": 0.008785009384155273, + "tick": 28 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.014976978302001953, + "tick": 30 + }, + { + "renderSeconds": 0.0029109716415405273, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0034270286560058594, + "simulationSeconds": 0.007642030715942383, + "tick": 31 + }, + { + "renderSeconds": 0.004273056983947754, + "simulationSeconds": 0.009004950523376465, + "tick": 32 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.00901806354522705, + "tick": 33 + }, + { + "renderSeconds": 0.002969980239868164, + "simulationSeconds": 0.01418304443359375, + "tick": 35 + }, + { + "renderSeconds": 0.003135085105895996, + "simulationSeconds": 0.00739598274230957, + "tick": 36 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.007220029830932617, + "tick": 37 + }, + { + "renderSeconds": 0.0034520626068115234, + "simulationSeconds": 0.0072509050369262695, + "tick": 38 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.008726000785827637, + "tick": 39 + }, + { + "renderSeconds": 0.0035200119018554688, + "simulationSeconds": 0.00704503059387207, + "tick": 40 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.00727391242980957, + "tick": 41 + }, + { + "renderSeconds": 0.0035419464111328125, + "simulationSeconds": 0.007292032241821289, + "tick": 42 + }, + { + "renderSeconds": 0.003538966178894043, + "simulationSeconds": 0.007817983627319336, + "tick": 43 + }, + { + "renderSeconds": 0.003139019012451172, + "simulationSeconds": 0.014137983322143555, + "tick": 45 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.013659954071044922, + "tick": 47 + }, + { + "renderSeconds": 0.003141045570373535, + "simulationSeconds": 0.012302041053771973, + "tick": 49 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006952047348022461, + "tick": 50 + }, + { + "renderSeconds": 0.002223968505859375, + "simulationSeconds": 0.0066640377044677734, + "tick": 51 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.00657498836517334, + "tick": 52 + }, + { + "renderSeconds": 0.0025719404220581055, + "simulationSeconds": 0.0068389177322387695, + "tick": 53 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.006532073020935059, + "tick": 54 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.006118059158325195, + "tick": 55 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.007932901382446289, + "tick": 56 + }, + { + "renderSeconds": 0.004066109657287598, + "simulationSeconds": 0.007444024085998535, + "tick": 57 + }, + { + "renderSeconds": 0.0035309791564941406, + "simulationSeconds": 0.01002800464630127, + "tick": 58 + }, + { + "renderSeconds": 0.003641963005065918, + "simulationSeconds": 0.018177032470703125, + "tick": 60 + }, + { + "renderSeconds": 0.003936052322387695, + "simulationSeconds": 0.017634987831115723, + "tick": 62 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 62 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.00722503662109375, + "tick": 63 + }, + { + "renderSeconds": 0.0030249357223510742, + "simulationSeconds": 0.0071190595626831055, + "tick": 64 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.006790041923522949, + "tick": 65 + }, + { + "renderSeconds": 0.0024949312210083008, + "simulationSeconds": 0.006298065185546875, + "tick": 66 + }, + { + "renderSeconds": 0.0034459829330444336, + "simulationSeconds": 0.006019949913024902, + "tick": 67 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.0065310001373291016, + "tick": 68 + }, + { + "renderSeconds": 0.003186941146850586, + "simulationSeconds": 0.007068037986755371, + "tick": 69 + }, + { + "renderSeconds": 0.003368973731994629, + "simulationSeconds": 0.007400989532470703, + "tick": 70 + }, + { + "renderSeconds": 0.0030099153518676758, + "simulationSeconds": 0.006860017776489258, + "tick": 71 + }, + { + "renderSeconds": 0.0034580230712890625, + "simulationSeconds": 0.007597088813781738, + "tick": 72 + }, + { + "renderSeconds": 0.0035369396209716797, + "simulationSeconds": 0.007293105125427246, + "tick": 73 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.016168951988220215, + "tick": 75 + }, + { + "renderSeconds": 0.003538966178894043, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.003611922264099121, + "simulationSeconds": 0.008787989616394043, + "tick": 76 + }, + { + "renderSeconds": 0.003641963005065918, + "simulationSeconds": 0.008158087730407715, + "tick": 77 + }, + { + "renderSeconds": 0.002484917640686035, + "simulationSeconds": 0.0075560808181762695, + "tick": 78 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.0063790082931518555, + "tick": 79 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.0061359405517578125, + "tick": 80 + }, + { + "renderSeconds": 0.0031800270080566406, + "simulationSeconds": 0.007693052291870117, + "tick": 81 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 0.00712895393371582, + "tick": 82 + }, + { + "renderSeconds": 0.0033850669860839844, + "simulationSeconds": 0.008365035057067871, + "tick": 83 + }, + { + "renderSeconds": 0.003764033317565918, + "simulationSeconds": 0.007986068725585938, + "tick": 84 + }, + { + "renderSeconds": 0.003983020782470703, + "simulationSeconds": 0.009241938591003418, + "tick": 85 + }, + { + "renderSeconds": 0.003795027732849121, + "simulationSeconds": 0.008947014808654785, + "tick": 86 + }, + { + "renderSeconds": 0.004065990447998047, + "simulationSeconds": 0.007583022117614746, + "tick": 87 + }, + { + "renderSeconds": 0.0031789541244506836, + "simulationSeconds": 0.02241504192352295, + "tick": 90 + }, + { + "renderSeconds": 0.003339052200317383, + "simulationSeconds": 0.0068089962005615234, + "tick": 91 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.007295012474060059, + "tick": 92 + }, + { + "renderSeconds": 0.0034760236740112305, + "simulationSeconds": 0.006515026092529297, + "tick": 93 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.006227016448974609, + "tick": 94 + }, + { + "renderSeconds": 0.003030061721801758, + "simulationSeconds": 0.006011009216308594, + "tick": 95 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.006510019302368164, + "tick": 96 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.00631403923034668, + "tick": 97 + }, + { + "renderSeconds": 0.003997087478637695, + "simulationSeconds": 0.0062999725341796875, + "tick": 98 + }, + { + "renderSeconds": 0.0029420852661132812, + "simulationSeconds": 0.006348013877868652, + "tick": 99 + }, + { + "renderSeconds": 0.0033189058303833008, + "simulationSeconds": 0.0065490007400512695, + "tick": 100 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.006132006645202637, + "tick": 101 + }, + { + "renderSeconds": 0.003345966339111328, + "simulationSeconds": 0.00666499137878418, + "tick": 102 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.006224989891052246, + "tick": 103 + }, + { + "renderSeconds": 0.0030020475387573242, + "simulationSeconds": 0.01396191120147705, + "tick": 105 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.007646918296813965, + "tick": 106 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.006212949752807617, + "tick": 107 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.007230043411254883, + "tick": 108 + }, + { + "renderSeconds": 0.0034879446029663086, + "simulationSeconds": 0.007274985313415527, + "tick": 109 + }, + { + "renderSeconds": 0.0034710168838500977, + "simulationSeconds": 0.007423996925354004, + "tick": 110 + }, + { + "renderSeconds": 0.003206014633178711, + "simulationSeconds": 0.007622957229614258, + "tick": 111 + }, + { + "renderSeconds": 0.0031720399856567383, + "simulationSeconds": 0.0068759918212890625, + "tick": 112 + }, + { + "renderSeconds": 0.0030989646911621094, + "simulationSeconds": 0.0067969560623168945, + "tick": 113 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.006703019142150879, + "tick": 114 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.00637507438659668, + "tick": 115 + }, + { + "renderSeconds": 0.0033010244369506836, + "simulationSeconds": 0.006978034973144531, + "tick": 116 + }, + { + "renderSeconds": 0.0037009716033935547, + "simulationSeconds": 0.007643938064575195, + "tick": 117 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.007206082344055176, + "tick": 118 + }, + { + "renderSeconds": 0.0037599802017211914, + "simulationSeconds": 0.015138983726501465, + "tick": 120 + }, + { + "renderSeconds": 0.003527998924255371, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 120 + }, + { + "renderSeconds": 0.0034279823303222656, + "simulationSeconds": 0.008205056190490723, + "tick": 121 + }, + { + "renderSeconds": 0.003338932991027832, + "simulationSeconds": 0.007795929908752441, + "tick": 122 + }, + { + "renderSeconds": 0.0030069351196289062, + "simulationSeconds": 0.007547974586486816, + "tick": 123 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.0071059465408325195, + "tick": 124 + }, + { + "renderSeconds": 0.002909064292907715, + "simulationSeconds": 0.007145047187805176, + "tick": 125 + }, + { + "renderSeconds": 0.0031280517578125, + "simulationSeconds": 0.007442951202392578, + "tick": 126 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.007371068000793457, + "tick": 127 + }, + { + "renderSeconds": 0.003097057342529297, + "simulationSeconds": 0.007170915603637695, + "tick": 128 + }, + { + "renderSeconds": 0.003102898597717285, + "simulationSeconds": 0.007495999336242676, + "tick": 129 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0.007547974586486816, + "tick": 130 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.007321953773498535, + "tick": 131 + }, + { + "renderSeconds": 0.0033469200134277344, + "simulationSeconds": 0.007341980934143066, + "tick": 132 + }, + { + "renderSeconds": 0.003103017807006836, + "simulationSeconds": 0.007326006889343262, + "tick": 133 + }, + { + "renderSeconds": 0.0030399560928344727, + "simulationSeconds": 0.015094995498657227, + "tick": 135 + }, + { + "renderSeconds": 0.0030339956283569336, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0035409927368164062, + "simulationSeconds": 0.007600069046020508, + "tick": 136 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.0062830448150634766, + "tick": 137 + }, + { + "renderSeconds": 0.00274503231048584, + "simulationSeconds": 0.006932973861694336, + "tick": 138 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.006006956100463867, + "tick": 139 + }, + { + "renderSeconds": 0.0030210018157958984, + "simulationSeconds": 0.007207989692687988, + "tick": 140 + }, + { + "renderSeconds": 0.00280606746673584, + "simulationSeconds": 0.007051944732666016, + "tick": 141 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.007268071174621582, + "tick": 142 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.006793975830078125, + "tick": 143 + }, + { + "renderSeconds": 0.0030831098556518555, + "simulationSeconds": 0.007583022117614746, + "tick": 144 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.007068991661071777, + "tick": 145 + }, + { + "renderSeconds": 0.0031659603118896484, + "simulationSeconds": 0.007204890251159668, + "tick": 146 + }, + { + "renderSeconds": 0.002780914306640625, + "simulationSeconds": 0.006606101989746094, + "tick": 147 + }, + { + "renderSeconds": 0.0030210018157958984, + "simulationSeconds": 0.007058978080749512, + "tick": 148 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.013357996940612793, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04365537501871586, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 220, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.007249712944030762, + "preparationSeconds": 0.5596339702606201, + "reducedMotion": false, + "renderSeconds": 0.4423485994338989, + "repetition": 0, + "scenePreparationSeconds": 0.20105195045471191, + "simulationSeconds": 1.0848276615142822, + "snapshotBuildCount": 143, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333332557231, + "callbackMaxMS": 48.009416670538485, + "postActionRecords": 141, + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2519296407699585, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0008870363235473633, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0012359619140625, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008249282836914062, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009930133819580078, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.004163980484008789, + "simulationSeconds": 0.0061550140380859375, + "tick": 1 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.007151007652282715, + "tick": 2 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.013903975486755371, + "tick": 4 + }, + { + "renderSeconds": 0.003052949905395508, + "simulationSeconds": 0.007283926010131836, + "tick": 5 + }, + { + "renderSeconds": 0.003994941711425781, + "simulationSeconds": 0.007171988487243652, + "tick": 6 + }, + { + "renderSeconds": 0.0030040740966796875, + "simulationSeconds": 0.007077932357788086, + "tick": 7 + }, + { + "renderSeconds": 0.00374603271484375, + "simulationSeconds": 0.007579922676086426, + "tick": 8 + }, + { + "renderSeconds": 0.0037189722061157227, + "simulationSeconds": 0.00704503059387207, + "tick": 9 + }, + { + "renderSeconds": 0.0036640167236328125, + "simulationSeconds": 0.0071239471435546875, + "tick": 10 + }, + { + "renderSeconds": 0.0027370452880859375, + "simulationSeconds": 0.013717055320739746, + "tick": 12 + }, + { + "renderSeconds": 0.0028399229049682617, + "simulationSeconds": 0.013055086135864258, + "tick": 14 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.006433963775634766, + "tick": 15 + }, + { + "renderSeconds": 0.0026780366897583008, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0025069713592529297, + "simulationSeconds": 0.0064460039138793945, + "tick": 16 + }, + { + "renderSeconds": 0.00267791748046875, + "simulationSeconds": 0.0059899091720581055, + "tick": 17 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.013814926147460938, + "tick": 19 + }, + { + "renderSeconds": 0.0036879777908325195, + "simulationSeconds": 0.009558916091918945, + "tick": 20 + }, + { + "renderSeconds": 0.0033239126205444336, + "simulationSeconds": 0.010020017623901367, + "tick": 21 + }, + { + "renderSeconds": 0.003285050392150879, + "simulationSeconds": 0.014248967170715332, + "tick": 23 + }, + { + "renderSeconds": 0.0030940771102905273, + "simulationSeconds": 0.007148027420043945, + "tick": 24 + }, + { + "renderSeconds": 0.0035400390625, + "simulationSeconds": 0.007572054862976074, + "tick": 25 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.013119101524353027, + "tick": 27 + }, + { + "renderSeconds": 0.0028319358825683594, + "simulationSeconds": 0.013120889663696289, + "tick": 29 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.006831049919128418, + "tick": 30 + }, + { + "renderSeconds": 0.0034279823303222656, + "simulationSeconds": 0.0066339969635009766, + "tick": 31 + }, + { + "renderSeconds": 0.002382993698120117, + "simulationSeconds": 0.006987929344177246, + "tick": 32 + }, + { + "renderSeconds": 0.0028609037399291992, + "simulationSeconds": 0.012737035751342773, + "tick": 34 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.013836026191711426, + "tick": 36 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.007173061370849609, + "tick": 37 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.003374934196472168, + "simulationSeconds": 0.006602048873901367, + "tick": 38 + }, + { + "renderSeconds": 0.0032279491424560547, + "simulationSeconds": 0.006364941596984863, + "tick": 39 + }, + { + "renderSeconds": 0.0029560327529907227, + "simulationSeconds": 0.0067070722579956055, + "tick": 40 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.01267099380493164, + "tick": 42 + }, + { + "renderSeconds": 0.003466963768005371, + "simulationSeconds": 0.007367968559265137, + "tick": 43 + }, + { + "renderSeconds": 0.0033750534057617188, + "simulationSeconds": 0.007588028907775879, + "tick": 44 + }, + { + "renderSeconds": 0.0031229257583618164, + "simulationSeconds": 0.007606029510498047, + "tick": 45 + }, + { + "renderSeconds": 0.0032149553298950195, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0034600496292114258, + "simulationSeconds": 0.0074759721755981445, + "tick": 46 + }, + { + "renderSeconds": 0.003509998321533203, + "simulationSeconds": 0.007379055023193359, + "tick": 47 + }, + { + "renderSeconds": 0.0034830570220947266, + "simulationSeconds": 0.014822006225585938, + "tick": 49 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.007004976272583008, + "tick": 50 + }, + { + "renderSeconds": 0.0036329030990600586, + "simulationSeconds": 0.009328961372375488, + "tick": 51 + }, + { + "renderSeconds": 0.0032830238342285156, + "simulationSeconds": 0.007393002510070801, + "tick": 52 + }, + { + "renderSeconds": 0.004450082778930664, + "simulationSeconds": 0.009410977363586426, + "tick": 53 + }, + { + "renderSeconds": 0.003919005393981934, + "simulationSeconds": 0.0077440738677978516, + "tick": 54 + }, + { + "renderSeconds": 0.003371000289916992, + "simulationSeconds": 0.007256984710693359, + "tick": 55 + }, + { + "renderSeconds": 0.003268003463745117, + "simulationSeconds": 0.016016006469726562, + "tick": 57 + }, + { + "renderSeconds": 0.0036770105361938477, + "simulationSeconds": 0.014218926429748535, + "tick": 59 + }, + { + "renderSeconds": 0.0035300254821777344, + "simulationSeconds": 0.008124947547912598, + "tick": 60 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.003632068634033203, + "simulationSeconds": 0.006476998329162598, + "tick": 61 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0.006699919700622559, + "tick": 62 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.013749003410339355, + "tick": 64 + }, + { + "renderSeconds": 0.00336301326751709, + "simulationSeconds": 0.007243037223815918, + "tick": 65 + }, + { + "renderSeconds": 0.0030099153518676758, + "simulationSeconds": 0.007179975509643555, + "tick": 66 + }, + { + "renderSeconds": 0.0034470558166503906, + "simulationSeconds": 0.007666945457458496, + "tick": 67 + }, + { + "renderSeconds": 0.003690958023071289, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0033930540084838867, + "simulationSeconds": 0.0076400041580200195, + "tick": 68 + }, + { + "renderSeconds": 0.0033540725708007812, + "simulationSeconds": 0.007583975791931152, + "tick": 69 + }, + { + "renderSeconds": 0.0037450790405273438, + "simulationSeconds": 0.007662057876586914, + "tick": 70 + }, + { + "renderSeconds": 0.003032088279724121, + "simulationSeconds": 0.01420295238494873, + "tick": 72 + }, + { + "renderSeconds": 0.0034629106521606445, + "simulationSeconds": 0.014599919319152832, + "tick": 74 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.0128859281539917, + "tick": 76 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006424069404602051, + "tick": 77 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 0.013226985931396484, + "tick": 79 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.006652951240539551, + "tick": 80 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.006601095199584961, + "tick": 81 + }, + { + "renderSeconds": 0.0025409460067749023, + "simulationSeconds": 0.006245970726013184, + "tick": 82 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0.006783962249755859, + "tick": 83 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.006385922431945801, + "tick": 84 + }, + { + "renderSeconds": 0.003640890121459961, + "simulationSeconds": 0.00675201416015625, + "tick": 85 + }, + { + "renderSeconds": 0.0034979581832885742, + "simulationSeconds": 0.016258955001831055, + "tick": 87 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.007300972938537598, + "tick": 88 + }, + { + "renderSeconds": 0.0030170679092407227, + "simulationSeconds": 0.008278965950012207, + "tick": 89 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.007992029190063477, + "tick": 90 + }, + { + "renderSeconds": 0.003302931785583496, + "simulationSeconds": 0.00630795955657959, + "tick": 91 + }, + { + "renderSeconds": 0.0033910274505615234, + "simulationSeconds": 0.006269097328186035, + "tick": 92 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0.012778997421264648, + "tick": 94 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.007127046585083008, + "tick": 95 + }, + { + "renderSeconds": 0.0026129484176635742, + "simulationSeconds": 0.007012009620666504, + "tick": 96 + }, + { + "renderSeconds": 0.0032559633255004883, + "simulationSeconds": 0.0074890851974487305, + "tick": 97 + }, + { + "renderSeconds": 0.003527045249938965, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0025670528411865234, + "simulationSeconds": 0.0067369937896728516, + "tick": 98 + }, + { + "renderSeconds": 0.003086090087890625, + "simulationSeconds": 0.006906986236572266, + "tick": 99 + }, + { + "renderSeconds": 0.002728104591369629, + "simulationSeconds": 0.006211042404174805, + "tick": 100 + }, + { + "renderSeconds": 0.0028001070022583008, + "simulationSeconds": 0.01427304744720459, + "tick": 102 + }, + { + "renderSeconds": 0.0034619569778442383, + "simulationSeconds": 0.006286978721618652, + "tick": 103 + }, + { + "renderSeconds": 0.003170013427734375, + "simulationSeconds": 0.007493019104003906, + "tick": 104 + }, + { + "renderSeconds": 0.0036449432373046875, + "simulationSeconds": 0.007696032524108887, + "tick": 105 + }, + { + "renderSeconds": 0.0033159255981445312, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.003386974334716797, + "simulationSeconds": 0.006938934326171875, + "tick": 106 + }, + { + "renderSeconds": 0.0031200647354125977, + "simulationSeconds": 0.0076760053634643555, + "tick": 107 + }, + { + "renderSeconds": 0.004124999046325684, + "simulationSeconds": 0.019175052642822266, + "tick": 109 + }, + { + "renderSeconds": 0.003386974334716797, + "simulationSeconds": 0.016195058822631836, + "tick": 111 + }, + { + "renderSeconds": 0.00368499755859375, + "simulationSeconds": 0.008328914642333984, + "tick": 112 + }, + { + "renderSeconds": 0.003265976905822754, + "simulationSeconds": 0.007902026176452637, + "tick": 113 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.0075609683990478516, + "tick": 114 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.006270051002502441, + "tick": 115 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.013566970825195312, + "tick": 117 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.012920975685119629, + "tick": 119 + }, + { + "renderSeconds": 0.003359079360961914, + "simulationSeconds": 0.015218019485473633, + "tick": 121 + }, + { + "renderSeconds": 0.003582000732421875, + "simulationSeconds": 0.006667971611022949, + "tick": 122 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.01282203197479248, + "tick": 124 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.0077130794525146484, + "tick": 125 + }, + { + "renderSeconds": 0.0025049448013305664, + "simulationSeconds": 0.006404995918273926, + "tick": 126 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0.007007956504821777, + "tick": 127 + }, + { + "renderSeconds": 0.002662062644958496, + "simulationSeconds": 9.5367431640625e-07, + "tick": 127 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.006145954132080078, + "tick": 128 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.007025003433227539, + "tick": 129 + }, + { + "renderSeconds": 0.003759026527404785, + "simulationSeconds": 0.008538961410522461, + "tick": 130 + }, + { + "renderSeconds": 0.0031430721282958984, + "simulationSeconds": 0.016047000885009766, + "tick": 132 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.006723999977111816, + "tick": 133 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.007184028625488281, + "tick": 134 + }, + { + "renderSeconds": 0.003206014633178711, + "simulationSeconds": 0.007455945014953613, + "tick": 135 + }, + { + "renderSeconds": 0.0031510591506958008, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0031800270080566406, + "simulationSeconds": 0.008169054985046387, + "tick": 136 + }, + { + "renderSeconds": 0.0035380125045776367, + "simulationSeconds": 0.007135987281799316, + "tick": 137 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.013888001441955566, + "tick": 139 + }, + { + "renderSeconds": 0.003823995590209961, + "simulationSeconds": 0.007217049598693848, + "tick": 140 + }, + { + "renderSeconds": 0.004045009613037109, + "simulationSeconds": 0.009929060935974121, + "tick": 141 + }, + { + "renderSeconds": 0.003759026527404785, + "simulationSeconds": 0.008807063102722168, + "tick": 142 + }, + { + "renderSeconds": 0.003217935562133789, + "simulationSeconds": 0.007207989692687988, + "tick": 143 + }, + { + "renderSeconds": 0.0031560659408569336, + "simulationSeconds": 0.0070449113845825195, + "tick": 144 + }, + { + "renderSeconds": 0.0037080049514770508, + "simulationSeconds": 0.007310032844543457, + "tick": 145 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.013667941093444824, + "tick": 147 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.00681304931640625, + "tick": 148 + }, + { + "renderSeconds": 0.003162980079650879, + "simulationSeconds": 0.008640050888061523, + "tick": 149 + }, + { + "renderSeconds": 0.003182053565979004, + "simulationSeconds": 0.007277965545654297, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04530699999304488, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 204, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.007822394371032715, + "preparationSeconds": 0.5560200214385986, + "reducedMotion": false, + "renderSeconds": 0.4177253246307373, + "repetition": 0, + "scenePreparationSeconds": 0.19155097007751465, + "simulationSeconds": 1.079702615737915, + "snapshotBuildCount": 134, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 35.349874990060925, + "callbackMaxMS": 40.21383333019912, + "postActionRecords": 132, + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2552744150161743, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0008130073547363281, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008729696273803711, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.001074075698852539, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008549690246582031, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003921031951904297, + "simulationSeconds": 0.006435036659240723, + "tick": 1 + }, + { + "renderSeconds": 0.004097938537597656, + "simulationSeconds": 0.008720040321350098, + "tick": 2 + }, + { + "renderSeconds": 0.0036110877990722656, + "simulationSeconds": 0.009428977966308594, + "tick": 3 + }, + { + "renderSeconds": 0.0032349824905395508, + "simulationSeconds": 0.02082192897796631, + "tick": 6 + }, + { + "renderSeconds": 0.004002928733825684, + "simulationSeconds": 0.0074520111083984375, + "tick": 7 + }, + { + "renderSeconds": 0.0037909746170043945, + "simulationSeconds": 0.00774693489074707, + "tick": 8 + }, + { + "renderSeconds": 0.0037870407104492188, + "simulationSeconds": 0.008804082870483398, + "tick": 9 + }, + { + "renderSeconds": 0.0035400390625, + "simulationSeconds": 0.006752967834472656, + "tick": 10 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.012439966201782227, + "tick": 12 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.014572978019714355, + "tick": 14 + }, + { + "renderSeconds": 0.002454042434692383, + "simulationSeconds": 0.012549042701721191, + "tick": 16 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0.0065310001373291016, + "tick": 17 + }, + { + "renderSeconds": 0.0027049779891967773, + "simulationSeconds": 0.00658106803894043, + "tick": 18 + }, + { + "renderSeconds": 0.002934098243713379, + "simulationSeconds": 0.012464046478271484, + "tick": 20 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.005990028381347656, + "tick": 21 + }, + { + "renderSeconds": 0.0030770301818847656, + "simulationSeconds": 0.006154894828796387, + "tick": 22 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.003264904022216797, + "simulationSeconds": 0.00757598876953125, + "tick": 23 + }, + { + "renderSeconds": 0.0028649568557739258, + "simulationSeconds": 0.007274031639099121, + "tick": 24 + }, + { + "renderSeconds": 0.003222942352294922, + "simulationSeconds": 0.007415890693664551, + "tick": 25 + }, + { + "renderSeconds": 0.002855062484741211, + "simulationSeconds": 0.014037013053894043, + "tick": 27 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.01456606388092041, + "tick": 29 + }, + { + "renderSeconds": 0.003800034523010254, + "simulationSeconds": 0.008739948272705078, + "tick": 30 + }, + { + "renderSeconds": 0.0034270286560058594, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 30 + }, + { + "renderSeconds": 0.003229975700378418, + "simulationSeconds": 0.008469104766845703, + "tick": 31 + }, + { + "renderSeconds": 0.002667069435119629, + "simulationSeconds": 0.006405949592590332, + "tick": 32 + }, + { + "renderSeconds": 0.0037060976028442383, + "simulationSeconds": 0.006898999214172363, + "tick": 33 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 0.01247107982635498, + "tick": 35 + }, + { + "renderSeconds": 0.0033060312271118164, + "simulationSeconds": 0.006837964057922363, + "tick": 36 + }, + { + "renderSeconds": 0.0027478933334350586, + "simulationSeconds": 0.006512045860290527, + "tick": 37 + }, + { + "renderSeconds": 0.0033620595932006836, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006736040115356445, + "tick": 38 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.006167054176330566, + "tick": 39 + }, + { + "renderSeconds": 0.0028918981552124023, + "simulationSeconds": 0.0066291093826293945, + "tick": 40 + }, + { + "renderSeconds": 0.0025140047073364258, + "simulationSeconds": 0.013042926788330078, + "tick": 42 + }, + { + "renderSeconds": 0.003029942512512207, + "simulationSeconds": 0.007238984107971191, + "tick": 43 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.008352041244506836, + "tick": 44 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.0073699951171875, + "tick": 45 + }, + { + "renderSeconds": 0.0030870437622070312, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.007058978080749512, + "tick": 46 + }, + { + "renderSeconds": 0.0034999847412109375, + "simulationSeconds": 0.007730007171630859, + "tick": 47 + }, + { + "renderSeconds": 0.0036739110946655273, + "simulationSeconds": 0.009385943412780762, + "tick": 48 + }, + { + "renderSeconds": 0.0036400556564331055, + "simulationSeconds": 0.0176389217376709, + "tick": 50 + }, + { + "renderSeconds": 0.003759026527404785, + "simulationSeconds": 0.019288063049316406, + "tick": 52 + }, + { + "renderSeconds": 0.0032439231872558594, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0034989118576049805, + "simulationSeconds": 0.007277011871337891, + "tick": 53 + }, + { + "renderSeconds": 0.0034090280532836914, + "simulationSeconds": 0.0071669816970825195, + "tick": 54 + }, + { + "renderSeconds": 0.003924012184143066, + "simulationSeconds": 0.008247017860412598, + "tick": 55 + }, + { + "renderSeconds": 0.0028340816497802734, + "simulationSeconds": 0.014335989952087402, + "tick": 57 + }, + { + "renderSeconds": 0.0033370256423950195, + "simulationSeconds": 0.014331936836242676, + "tick": 59 + }, + { + "renderSeconds": 0.004040956497192383, + "simulationSeconds": 0.00827491283416748, + "tick": 60 + }, + { + "renderSeconds": 0.0034209489822387695, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.00306093692779541, + "simulationSeconds": 0.007358074188232422, + "tick": 61 + }, + { + "renderSeconds": 0.0030399560928344727, + "simulationSeconds": 0.007013916969299316, + "tick": 62 + }, + { + "renderSeconds": 0.0030399560928344727, + "simulationSeconds": 0.006312966346740723, + "tick": 63 + }, + { + "renderSeconds": 0.0025719404220581055, + "simulationSeconds": 0.012925028800964355, + "tick": 65 + }, + { + "renderSeconds": 0.0033249855041503906, + "simulationSeconds": 0.006585955619812012, + "tick": 66 + }, + { + "renderSeconds": 0.0031698942184448242, + "simulationSeconds": 0.00769495964050293, + "tick": 67 + }, + { + "renderSeconds": 0.003327012062072754, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 67 + }, + { + "renderSeconds": 0.003165006637573242, + "simulationSeconds": 0.0072890520095825195, + "tick": 68 + }, + { + "renderSeconds": 0.004510045051574707, + "simulationSeconds": 0.007267951965332031, + "tick": 69 + }, + { + "renderSeconds": 0.0033330917358398438, + "simulationSeconds": 0.007421016693115234, + "tick": 70 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0.01530003547668457, + "tick": 72 + }, + { + "renderSeconds": 0.003134012222290039, + "simulationSeconds": 0.007649064064025879, + "tick": 73 + }, + { + "renderSeconds": 0.0038510560989379883, + "simulationSeconds": 0.007925987243652344, + "tick": 74 + }, + { + "renderSeconds": 0.003924012184143066, + "simulationSeconds": 0.007557988166809082, + "tick": 75 + }, + { + "renderSeconds": 0.002834916114807129, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0.007547974586486816, + "tick": 76 + }, + { + "renderSeconds": 0.004198908805847168, + "simulationSeconds": 0.008902907371520996, + "tick": 77 + }, + { + "renderSeconds": 0.003911018371582031, + "simulationSeconds": 0.009002923965454102, + "tick": 78 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.017994046211242676, + "tick": 80 + }, + { + "renderSeconds": 0.003466963768005371, + "simulationSeconds": 0.0152360200881958, + "tick": 82 + }, + { + "renderSeconds": 0.0036629438400268555, + "simulationSeconds": 0.007924079895019531, + "tick": 83 + }, + { + "renderSeconds": 0.0031850337982177734, + "simulationSeconds": 0.0068759918212890625, + "tick": 84 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.006836056709289551, + "tick": 85 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.012812972068786621, + "tick": 87 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.012732982635498047, + "tick": 89 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.006636977195739746, + "tick": 90 + }, + { + "renderSeconds": 0.0034270286560058594, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.0067359209060668945, + "tick": 91 + }, + { + "renderSeconds": 0.0026330947875976562, + "simulationSeconds": 0.006471991539001465, + "tick": 92 + }, + { + "renderSeconds": 0.0025750398635864258, + "simulationSeconds": 0.006134986877441406, + "tick": 93 + }, + { + "renderSeconds": 0.0028361082077026367, + "simulationSeconds": 0.012323975563049316, + "tick": 95 + }, + { + "renderSeconds": 0.00295102596282959, + "simulationSeconds": 0.006821036338806152, + "tick": 96 + }, + { + "renderSeconds": 0.0037270784378051758, + "simulationSeconds": 0.010778069496154785, + "tick": 97 + }, + { + "renderSeconds": 0.003952980041503906, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 97 + }, + { + "renderSeconds": 0.00377810001373291, + "simulationSeconds": 0.008123993873596191, + "tick": 98 + }, + { + "renderSeconds": 0.003310084342956543, + "simulationSeconds": 0.007463932037353516, + "tick": 99 + }, + { + "renderSeconds": 0.0033780336380004883, + "simulationSeconds": 0.006963968276977539, + "tick": 100 + }, + { + "renderSeconds": 0.0036230087280273438, + "simulationSeconds": 0.01842498779296875, + "tick": 102 + }, + { + "renderSeconds": 0.0033121109008789062, + "simulationSeconds": 0.017573952674865723, + "tick": 104 + }, + { + "renderSeconds": 0.0037539005279541016, + "simulationSeconds": 0.015709996223449707, + "tick": 106 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006865978240966797, + "tick": 107 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.007207989692687988, + "tick": 108 + }, + { + "renderSeconds": 0.0026570558547973633, + "simulationSeconds": 0.012440085411071777, + "tick": 110 + }, + { + "renderSeconds": 0.00345003604888916, + "simulationSeconds": 0.00657498836517334, + "tick": 111 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.00652003288269043, + "tick": 112 + }, + { + "renderSeconds": 0.002976059913635254, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.007035017013549805, + "tick": 113 + }, + { + "renderSeconds": 0.002886056900024414, + "simulationSeconds": 0.006148934364318848, + "tick": 114 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006417989730834961, + "tick": 115 + }, + { + "renderSeconds": 0.0024110078811645508, + "simulationSeconds": 0.012314915657043457, + "tick": 117 + }, + { + "renderSeconds": 0.0027549266815185547, + "simulationSeconds": 0.0061609745025634766, + "tick": 118 + }, + { + "renderSeconds": 0.0024260282516479492, + "simulationSeconds": 0.0062999725341796875, + "tick": 119 + }, + { + "renderSeconds": 0.0034559965133666992, + "simulationSeconds": 0.007100939750671387, + "tick": 120 + }, + { + "renderSeconds": 0.003113985061645508, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006051063537597656, + "tick": 121 + }, + { + "renderSeconds": 0.0030809640884399414, + "simulationSeconds": 0.0074950456619262695, + "tick": 122 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.007255911827087402, + "tick": 123 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.014561057090759277, + "tick": 125 + }, + { + "renderSeconds": 0.003399968147277832, + "simulationSeconds": 0.007781028747558594, + "tick": 126 + }, + { + "renderSeconds": 0.003296971321105957, + "simulationSeconds": 0.007952094078063965, + "tick": 127 + }, + { + "renderSeconds": 0.0026210546493530273, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0032349824905395508, + "simulationSeconds": 0.007189035415649414, + "tick": 128 + }, + { + "renderSeconds": 0.0036509037017822266, + "simulationSeconds": 0.006503939628601074, + "tick": 129 + }, + { + "renderSeconds": 0.0036429166793823242, + "simulationSeconds": 0.0075550079345703125, + "tick": 130 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0.012187004089355469, + "tick": 132 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 0.007876992225646973, + "tick": 133 + }, + { + "renderSeconds": 0.0036449432373046875, + "simulationSeconds": 0.007707953453063965, + "tick": 134 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.007312893867492676, + "tick": 135 + }, + { + "renderSeconds": 0.0030820369720458984, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.006782054901123047, + "tick": 136 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.005877017974853516, + "tick": 137 + }, + { + "renderSeconds": 0.0033130645751953125, + "simulationSeconds": 0.007920980453491211, + "tick": 138 + }, + { + "renderSeconds": 0.0027620792388916016, + "simulationSeconds": 0.013664960861206055, + "tick": 140 + }, + { + "renderSeconds": 0.0028009414672851562, + "simulationSeconds": 0.006983041763305664, + "tick": 141 + }, + { + "renderSeconds": 0.003715038299560547, + "simulationSeconds": 0.008391976356506348, + "tick": 142 + }, + { + "renderSeconds": 0.003139019012451172, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0.006948947906494141, + "tick": 143 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.006878018379211426, + "tick": 144 + }, + { + "renderSeconds": 0.002819061279296875, + "simulationSeconds": 0.006848931312561035, + "tick": 145 + }, + { + "renderSeconds": 0.002870917320251465, + "simulationSeconds": 0.014696002006530762, + "tick": 147 + }, + { + "renderSeconds": 0.0041190385818481445, + "simulationSeconds": 0.006780028343200684, + "tick": 148 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 0.006969928741455078, + "tick": 149 + }, + { + "renderSeconds": 0.004109025001525879, + "simulationSeconds": 0.006541013717651367, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.044910875003552064, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 212, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.00730586051940918, + "preparationSeconds": 0.5508170127868652, + "reducedMotion": false, + "renderSeconds": 0.4355764389038086, + "repetition": 0, + "scenePreparationSeconds": 0.1910099983215332, + "simulationSeconds": 1.0850577354431152, + "snapshotBuildCount": 139, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.807583327870816, + "callbackMaxMS": 42.51012500026263, + "postActionRecords": 137, + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.24760890007019043, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0017260313034057617, + "simulationSeconds": 2.9802322387695312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0008499622344970703, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011669397354125977, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0012398958206176758, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0035669803619384766, + "simulationSeconds": 0.005653023719787598, + "tick": 1 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.0063779354095458984, + "tick": 2 + }, + { + "renderSeconds": 0.0029349327087402344, + "simulationSeconds": 0.007346034049987793, + "tick": 3 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 0.007629036903381348, + "tick": 4 + }, + { + "renderSeconds": 0.0035969018936157227, + "simulationSeconds": 0.016245007514953613, + "tick": 6 + }, + { + "renderSeconds": 0.0034520626068115234, + "simulationSeconds": 0.009317994117736816, + "tick": 7 + }, + { + "renderSeconds": 0.0034890174865722656, + "simulationSeconds": 0.009091973304748535, + "tick": 8 + }, + { + "renderSeconds": 0.0038590431213378906, + "simulationSeconds": 0.009010910987854004, + "tick": 9 + }, + { + "renderSeconds": 0.003181934356689453, + "simulationSeconds": 0.007057070732116699, + "tick": 10 + }, + { + "renderSeconds": 0.00403594970703125, + "simulationSeconds": 0.007006049156188965, + "tick": 11 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.015048980712890625, + "tick": 13 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.013218998908996582, + "tick": 15 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006321072578430176, + "tick": 16 + }, + { + "renderSeconds": 0.003047943115234375, + "simulationSeconds": 0.00627899169921875, + "tick": 17 + }, + { + "renderSeconds": 0.002301931381225586, + "simulationSeconds": 0.006536960601806641, + "tick": 18 + }, + { + "renderSeconds": 0.0025260448455810547, + "simulationSeconds": 0.0067119598388671875, + "tick": 19 + }, + { + "renderSeconds": 0.0025060176849365234, + "simulationSeconds": 0.01283407211303711, + "tick": 21 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.006376981735229492, + "tick": 22 + }, + { + "renderSeconds": 0.003098011016845703, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.006960034370422363, + "tick": 23 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.006692051887512207, + "tick": 24 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.0070760250091552734, + "tick": 25 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0.0069359540939331055, + "tick": 26 + }, + { + "renderSeconds": 0.0034170150756835938, + "simulationSeconds": 0.0181199312210083, + "tick": 28 + }, + { + "renderSeconds": 0.0051500797271728516, + "simulationSeconds": 0.009709954261779785, + "tick": 29 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.014348030090332031, + "tick": 31 + }, + { + "renderSeconds": 0.002519965171813965, + "simulationSeconds": 0.013473987579345703, + "tick": 33 + }, + { + "renderSeconds": 0.0030019283294677734, + "simulationSeconds": 0.006331920623779297, + "tick": 34 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.012933015823364258, + "tick": 36 + }, + { + "renderSeconds": 0.0031349658966064453, + "simulationSeconds": 0.0067861080169677734, + "tick": 37 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0026549100875854492, + "simulationSeconds": 0.0068389177322387695, + "tick": 38 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.006284952163696289, + "tick": 39 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 0.006376981735229492, + "tick": 40 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.006944894790649414, + "tick": 41 + }, + { + "renderSeconds": 0.002424955368041992, + "simulationSeconds": 0.011876106262207031, + "tick": 43 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0.006258964538574219, + "tick": 44 + }, + { + "renderSeconds": 0.0038299560546875, + "simulationSeconds": 0.008031964302062988, + "tick": 45 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0025469064712524414, + "simulationSeconds": 0.006049036979675293, + "tick": 46 + }, + { + "renderSeconds": 0.0024979114532470703, + "simulationSeconds": 0.0061190128326416016, + "tick": 47 + }, + { + "renderSeconds": 0.0027750730514526367, + "simulationSeconds": 0.00651705265045166, + "tick": 48 + }, + { + "renderSeconds": 0.0024509429931640625, + "simulationSeconds": 0.006204009056091309, + "tick": 49 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.014135003089904785, + "tick": 51 + }, + { + "renderSeconds": 0.003155946731567383, + "simulationSeconds": 0.007910013198852539, + "tick": 52 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.003331899642944336, + "simulationSeconds": 0.007484078407287598, + "tick": 53 + }, + { + "renderSeconds": 0.003162980079650879, + "simulationSeconds": 0.0070770978927612305, + "tick": 54 + }, + { + "renderSeconds": 0.0032099485397338867, + "simulationSeconds": 0.006865024566650391, + "tick": 55 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.006931900978088379, + "tick": 56 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.013815999031066895, + "tick": 58 + }, + { + "renderSeconds": 0.0029959678649902344, + "simulationSeconds": 0.00692594051361084, + "tick": 59 + }, + { + "renderSeconds": 0.003210902214050293, + "simulationSeconds": 0.008430004119873047, + "tick": 60 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 9.5367431640625e-07, + "tick": 60 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0.007381916046142578, + "tick": 61 + }, + { + "renderSeconds": 0.003412008285522461, + "simulationSeconds": 0.007050037384033203, + "tick": 62 + }, + { + "renderSeconds": 0.0030978918075561523, + "simulationSeconds": 0.007261037826538086, + "tick": 63 + }, + { + "renderSeconds": 0.003319978713989258, + "simulationSeconds": 0.0075980424880981445, + "tick": 64 + }, + { + "renderSeconds": 0.0028039216995239258, + "simulationSeconds": 0.013885974884033203, + "tick": 66 + }, + { + "renderSeconds": 0.003756999969482422, + "simulationSeconds": 0.00763702392578125, + "tick": 67 + }, + { + "renderSeconds": 0.0037909746170043945, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.006687045097351074, + "tick": 68 + }, + { + "renderSeconds": 0.002478957176208496, + "simulationSeconds": 0.006121039390563965, + "tick": 69 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.0065670013427734375, + "tick": 70 + }, + { + "renderSeconds": 0.002667069435119629, + "simulationSeconds": 0.006502032279968262, + "tick": 71 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.013785958290100098, + "tick": 73 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.0077669620513916016, + "tick": 74 + }, + { + "renderSeconds": 0.0037250518798828125, + "simulationSeconds": 0.007796049118041992, + "tick": 75 + }, + { + "renderSeconds": 0.0029959678649902344, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0034290552139282227, + "simulationSeconds": 0.007107973098754883, + "tick": 76 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.006930947303771973, + "tick": 77 + }, + { + "renderSeconds": 0.002532958984375, + "simulationSeconds": 0.0062340497970581055, + "tick": 78 + }, + { + "renderSeconds": 0.002505064010620117, + "simulationSeconds": 0.006520986557006836, + "tick": 79 + }, + { + "renderSeconds": 0.0023740530014038086, + "simulationSeconds": 0.01182699203491211, + "tick": 81 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.007050991058349609, + "tick": 82 + }, + { + "renderSeconds": 0.003430008888244629, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0037900209426879883, + "simulationSeconds": 0.007099032402038574, + "tick": 83 + }, + { + "renderSeconds": 0.0028319358825683594, + "simulationSeconds": 0.00737607479095459, + "tick": 84 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.00595402717590332, + "tick": 85 + }, + { + "renderSeconds": 0.002759099006652832, + "simulationSeconds": 0.006908893585205078, + "tick": 86 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.014672994613647461, + "tick": 88 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.007094025611877441, + "tick": 89 + }, + { + "renderSeconds": 0.004053950309753418, + "simulationSeconds": 0.007973909378051758, + "tick": 90 + }, + { + "renderSeconds": 0.0037119388580322266, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.0063849687576293945, + "tick": 91 + }, + { + "renderSeconds": 0.003096938133239746, + "simulationSeconds": 0.007252931594848633, + "tick": 92 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0.007652997970581055, + "tick": 93 + }, + { + "renderSeconds": 0.0031529664993286133, + "simulationSeconds": 0.007357001304626465, + "tick": 94 + }, + { + "renderSeconds": 0.0034859180450439453, + "simulationSeconds": 0.017741084098815918, + "tick": 96 + }, + { + "renderSeconds": 0.0035120248794555664, + "simulationSeconds": 0.015761971473693848, + "tick": 98 + }, + { + "renderSeconds": 0.0031290054321289062, + "simulationSeconds": 0.015971064567565918, + "tick": 100 + }, + { + "renderSeconds": 0.0031889677047729492, + "simulationSeconds": 0.007121086120605469, + "tick": 101 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.01311802864074707, + "tick": 103 + }, + { + "renderSeconds": 0.002586960792541504, + "simulationSeconds": 0.014953970909118652, + "tick": 105 + }, + { + "renderSeconds": 0.0028650760650634766, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.006536960601806641, + "tick": 106 + }, + { + "renderSeconds": 0.0024640560150146484, + "simulationSeconds": 0.006269931793212891, + "tick": 107 + }, + { + "renderSeconds": 0.0024809837341308594, + "simulationSeconds": 0.0067920684814453125, + "tick": 108 + }, + { + "renderSeconds": 0.0024330615997314453, + "simulationSeconds": 0.006560921669006348, + "tick": 109 + }, + { + "renderSeconds": 0.0023680925369262695, + "simulationSeconds": 0.012804985046386719, + "tick": 111 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0.006114006042480469, + "tick": 112 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 0.007504940032958984, + "tick": 113 + }, + { + "renderSeconds": 0.002819061279296875, + "simulationSeconds": 0.007234930992126465, + "tick": 114 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.0069310665130615234, + "tick": 115 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.007907986640930176, + "tick": 116 + }, + { + "renderSeconds": 0.002811908721923828, + "simulationSeconds": 0.014230012893676758, + "tick": 118 + }, + { + "renderSeconds": 0.0032210350036621094, + "simulationSeconds": 0.00687098503112793, + "tick": 119 + }, + { + "renderSeconds": 0.00359499454498291, + "simulationSeconds": 0.00758206844329834, + "tick": 120 + }, + { + "renderSeconds": 0.0031000375747680664, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0031909942626953125, + "simulationSeconds": 0.007501006126403809, + "tick": 121 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0.007472991943359375, + "tick": 122 + }, + { + "renderSeconds": 0.0027420520782470703, + "simulationSeconds": 0.007120013236999512, + "tick": 123 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 0.0076160430908203125, + "tick": 124 + }, + { + "renderSeconds": 0.0036710500717163086, + "simulationSeconds": 0.01626300811767578, + "tick": 126 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.007025957107543945, + "tick": 127 + }, + { + "renderSeconds": 0.002968907356262207, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.003976941108703613, + "simulationSeconds": 0.008800029754638672, + "tick": 128 + }, + { + "renderSeconds": 0.0033720731735229492, + "simulationSeconds": 0.00910496711730957, + "tick": 129 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.008501887321472168, + "tick": 130 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 0.007258057594299316, + "tick": 131 + }, + { + "renderSeconds": 0.002819061279296875, + "simulationSeconds": 0.014520049095153809, + "tick": 133 + }, + { + "renderSeconds": 0.003213047981262207, + "simulationSeconds": 0.008736014366149902, + "tick": 134 + }, + { + "renderSeconds": 0.003226041793823242, + "simulationSeconds": 0.007696986198425293, + "tick": 135 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0025159120559692383, + "simulationSeconds": 0.006814002990722656, + "tick": 136 + }, + { + "renderSeconds": 0.002424955368041992, + "simulationSeconds": 0.005949974060058594, + "tick": 137 + }, + { + "renderSeconds": 0.002453923225402832, + "simulationSeconds": 0.006235003471374512, + "tick": 138 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 0.00598299503326416, + "tick": 139 + }, + { + "renderSeconds": 0.0023909807205200195, + "simulationSeconds": 0.012334942817687988, + "tick": 141 + }, + { + "renderSeconds": 0.003071904182434082, + "simulationSeconds": 0.006757974624633789, + "tick": 142 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.006132960319519043, + "tick": 143 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.006432056427001953, + "tick": 144 + }, + { + "renderSeconds": 0.0024300813674926758, + "simulationSeconds": 0.006175994873046875, + "tick": 145 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.006260991096496582, + "tick": 146 + }, + { + "renderSeconds": 0.0024330615997314453, + "simulationSeconds": 0.012179970741271973, + "tick": 148 + }, + { + "renderSeconds": 0.0027959346771240234, + "simulationSeconds": 0.006635069847106934, + "tick": 149 + }, + { + "renderSeconds": 0.00315701961517334, + "simulationSeconds": 0.006242036819458008, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03960633333190344, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 220, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006153583526611328, + "preparationSeconds": 0.5041990280151367, + "reducedMotion": false, + "renderSeconds": 0.4223482608795166, + "repetition": 1, + "scenePreparationSeconds": 0.17218708992004395, + "simulationSeconds": 1.0617108345031738, + "snapshotBuildCount": 143, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333332557231, + "callbackMaxMS": 41.75654164282605, + "postActionRecords": 141, + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.25334417819976807, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.000889897346496582, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0008460283279418945, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0013159513473510742, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0012530088424682617, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.0059490203857421875, + "tick": 1 + }, + { + "renderSeconds": 0.003260970115661621, + "simulationSeconds": 0.006006002426147461, + "tick": 2 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.013064026832580566, + "tick": 4 + }, + { + "renderSeconds": 0.0033960342407226562, + "simulationSeconds": 0.007454037666320801, + "tick": 5 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0.007362008094787598, + "tick": 6 + }, + { + "renderSeconds": 0.003847956657409668, + "simulationSeconds": 0.008980035781860352, + "tick": 7 + }, + { + "renderSeconds": 0.003816962242126465, + "simulationSeconds": 0.0071849822998046875, + "tick": 8 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.006736040115356445, + "tick": 9 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0.014136910438537598, + "tick": 11 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.016679048538208008, + "tick": 13 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.008440971374511719, + "tick": 14 + }, + { + "renderSeconds": 0.0028818845748901367, + "simulationSeconds": 0.014304041862487793, + "tick": 16 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0, + "tick": 16 + }, + { + "renderSeconds": 0.0034281015396118164, + "simulationSeconds": 0.006363987922668457, + "tick": 17 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.014539003372192383, + "tick": 19 + }, + { + "renderSeconds": 0.0034760236740112305, + "simulationSeconds": 0.007838010787963867, + "tick": 20 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.0073130130767822266, + "tick": 21 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0.00834202766418457, + "tick": 22 + }, + { + "renderSeconds": 0.0033229589462280273, + "simulationSeconds": 0.010203957557678223, + "tick": 23 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.006283998489379883, + "tick": 24 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.013576030731201172, + "tick": 26 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.013049006462097168, + "tick": 28 + }, + { + "renderSeconds": 0.0029009580612182617, + "simulationSeconds": 0.00636899471282959, + "tick": 29 + }, + { + "renderSeconds": 0.003515005111694336, + "simulationSeconds": 0.006106019020080566, + "tick": 30 + }, + { + "renderSeconds": 0.0041790008544921875, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 30 + }, + { + "renderSeconds": 0.004727005958557129, + "simulationSeconds": 0.006773948669433594, + "tick": 31 + }, + { + "renderSeconds": 0.0038139820098876953, + "simulationSeconds": 0.007028937339782715, + "tick": 32 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.014136075973510742, + "tick": 34 + }, + { + "renderSeconds": 0.0026320219039916992, + "simulationSeconds": 0.012097954750061035, + "tick": 36 + }, + { + "renderSeconds": 0.002521991729736328, + "simulationSeconds": 0.012207984924316406, + "tick": 38 + }, + { + "renderSeconds": 0.00253903865814209, + "simulationSeconds": 0.012657999992370605, + "tick": 40 + }, + { + "renderSeconds": 0.002646923065185547, + "simulationSeconds": 0.01329803466796875, + "tick": 42 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.013931989669799805, + "tick": 44 + }, + { + "renderSeconds": 0.002878904342651367, + "simulationSeconds": 0.0071489810943603516, + "tick": 45 + }, + { + "renderSeconds": 0.0029009580612182617, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 45 + }, + { + "renderSeconds": 0.0031120777130126953, + "simulationSeconds": 0.006723999977111816, + "tick": 46 + }, + { + "renderSeconds": 0.003693103790283203, + "simulationSeconds": 0.006168961524963379, + "tick": 47 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.014685988426208496, + "tick": 49 + }, + { + "renderSeconds": 0.003598928451538086, + "simulationSeconds": 0.006505012512207031, + "tick": 50 + }, + { + "renderSeconds": 0.003349900245666504, + "simulationSeconds": 0.007246971130371094, + "tick": 51 + }, + { + "renderSeconds": 0.0032509565353393555, + "simulationSeconds": 0.0076580047607421875, + "tick": 52 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0032619237899780273, + "simulationSeconds": 0.007918000221252441, + "tick": 53 + }, + { + "renderSeconds": 0.003359079360961914, + "simulationSeconds": 0.007357001304626465, + "tick": 54 + }, + { + "renderSeconds": 0.0039980411529541016, + "simulationSeconds": 0.015617966651916504, + "tick": 56 + }, + { + "renderSeconds": 0.003859996795654297, + "simulationSeconds": 0.01927196979522705, + "tick": 58 + }, + { + "renderSeconds": 0.003941893577575684, + "simulationSeconds": 0.008888959884643555, + "tick": 59 + }, + { + "renderSeconds": 0.0031690597534179688, + "simulationSeconds": 0.01474606990814209, + "tick": 61 + }, + { + "renderSeconds": 0.0028759241104125977, + "simulationSeconds": 0.01388692855834961, + "tick": 63 + }, + { + "renderSeconds": 0.0025960206985473633, + "simulationSeconds": 0.012894034385681152, + "tick": 65 + }, + { + "renderSeconds": 0.0022450685501098633, + "simulationSeconds": 0.01343989372253418, + "tick": 67 + }, + { + "renderSeconds": 0.002638101577758789, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0024799108505249023, + "simulationSeconds": 0.0063190460205078125, + "tick": 68 + }, + { + "renderSeconds": 0.0029410123825073242, + "simulationSeconds": 0.006429910659790039, + "tick": 69 + }, + { + "renderSeconds": 0.002502918243408203, + "simulationSeconds": 0.013389945030212402, + "tick": 71 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.007220029830932617, + "tick": 72 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.006112098693847656, + "tick": 73 + }, + { + "renderSeconds": 0.003079056739807129, + "simulationSeconds": 0.007261991500854492, + "tick": 74 + }, + { + "renderSeconds": 0.002975940704345703, + "simulationSeconds": 0.006520986557006836, + "tick": 75 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006567955017089844, + "tick": 76 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.007771015167236328, + "tick": 77 + }, + { + "renderSeconds": 0.0029410123825073242, + "simulationSeconds": 0.014629960060119629, + "tick": 79 + }, + { + "renderSeconds": 0.0038930177688598633, + "simulationSeconds": 0.008484959602355957, + "tick": 80 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.007569074630737305, + "tick": 81 + }, + { + "renderSeconds": 0.002998948097229004, + "simulationSeconds": 0.006972074508666992, + "tick": 82 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.004054903984069824, + "simulationSeconds": 0.007429003715515137, + "tick": 83 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.007611989974975586, + "tick": 84 + }, + { + "renderSeconds": 0.0031120777130126953, + "simulationSeconds": 0.014635920524597168, + "tick": 86 + }, + { + "renderSeconds": 0.0030939579010009766, + "simulationSeconds": 0.0071430206298828125, + "tick": 87 + }, + { + "renderSeconds": 0.003258943557739258, + "simulationSeconds": 0.007702946662902832, + "tick": 88 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.007176041603088379, + "tick": 89 + }, + { + "renderSeconds": 0.0034270286560058594, + "simulationSeconds": 0.008427023887634277, + "tick": 90 + }, + { + "renderSeconds": 0.0032880306243896484, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.003432035446166992, + "simulationSeconds": 0.006847977638244629, + "tick": 91 + }, + { + "renderSeconds": 0.002830028533935547, + "simulationSeconds": 0.006754040718078613, + "tick": 92 + }, + { + "renderSeconds": 0.0030840635299682617, + "simulationSeconds": 0.013136982917785645, + "tick": 94 + }, + { + "renderSeconds": 0.0029009580612182617, + "simulationSeconds": 0.007182002067565918, + "tick": 95 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.014828085899353027, + "tick": 97 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.006613969802856445, + "tick": 98 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.006231069564819336, + "tick": 99 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.015287995338439941, + "tick": 101 + }, + { + "renderSeconds": 0.0032960176467895508, + "simulationSeconds": 0.007024049758911133, + "tick": 102 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.0071250200271606445, + "tick": 103 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.008157014846801758, + "tick": 104 + }, + { + "renderSeconds": 0.0027529001235961914, + "simulationSeconds": 0.006628990173339844, + "tick": 105 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 105 + }, + { + "renderSeconds": 0.002581954002380371, + "simulationSeconds": 0.007292985916137695, + "tick": 106 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.006157994270324707, + "tick": 107 + }, + { + "renderSeconds": 0.0025020837783813477, + "simulationSeconds": 0.012730956077575684, + "tick": 109 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.006879925727844238, + "tick": 110 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.008198022842407227, + "tick": 111 + }, + { + "renderSeconds": 0.0035289525985717773, + "simulationSeconds": 0.0074700117111206055, + "tick": 112 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0031299591064453125, + "simulationSeconds": 0.007085084915161133, + "tick": 113 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 0.007174015045166016, + "tick": 114 + }, + { + "renderSeconds": 0.003381013870239258, + "simulationSeconds": 0.014486074447631836, + "tick": 116 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.007219076156616211, + "tick": 117 + }, + { + "renderSeconds": 0.004130005836486816, + "simulationSeconds": 0.008152008056640625, + "tick": 118 + }, + { + "renderSeconds": 0.003392934799194336, + "simulationSeconds": 0.01454305648803711, + "tick": 120 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003368973731994629, + "simulationSeconds": 0.00763094425201416, + "tick": 121 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.006647944450378418, + "tick": 122 + }, + { + "renderSeconds": 0.0023970603942871094, + "simulationSeconds": 0.012287020683288574, + "tick": 124 + }, + { + "renderSeconds": 0.0025169849395751953, + "simulationSeconds": 0.0062749385833740234, + "tick": 125 + }, + { + "renderSeconds": 0.0034869909286499023, + "simulationSeconds": 0.0073500871658325195, + "tick": 126 + }, + { + "renderSeconds": 0.003155946731567383, + "simulationSeconds": 0.007436990737915039, + "tick": 127 + }, + { + "renderSeconds": 0.00309598445892334, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0030249357223510742, + "simulationSeconds": 0.007473945617675781, + "tick": 128 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0.007112026214599609, + "tick": 129 + }, + { + "renderSeconds": 0.002880096435546875, + "simulationSeconds": 0.015765905380249023, + "tick": 131 + }, + { + "renderSeconds": 0.0038759708404541016, + "simulationSeconds": 0.008587002754211426, + "tick": 132 + }, + { + "renderSeconds": 0.003800034523010254, + "simulationSeconds": 0.009276032447814941, + "tick": 133 + }, + { + "renderSeconds": 0.003320932388305664, + "simulationSeconds": 0.00798797607421875, + "tick": 134 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.007280945777893066, + "tick": 135 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.002888917922973633, + "simulationSeconds": 0.007566094398498535, + "tick": 136 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.006654024124145508, + "tick": 137 + }, + { + "renderSeconds": 0.0030020475387573242, + "simulationSeconds": 0.013565897941589355, + "tick": 139 + }, + { + "renderSeconds": 0.0040760040283203125, + "simulationSeconds": 0.008496999740600586, + "tick": 140 + }, + { + "renderSeconds": 0.0037299394607543945, + "simulationSeconds": 0.009482979774475098, + "tick": 141 + }, + { + "renderSeconds": 0.0034470558166503906, + "simulationSeconds": 0.007881999015808105, + "tick": 142 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0040149688720703125, + "simulationSeconds": 0.009315967559814453, + "tick": 143 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.007887005805969238, + "tick": 144 + }, + { + "renderSeconds": 0.003755927085876465, + "simulationSeconds": 0.01662898063659668, + "tick": 146 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.0181959867477417, + "tick": 148 + }, + { + "renderSeconds": 0.002868056297302246, + "simulationSeconds": 0.014923930168151855, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03333333332557231, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 206, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.0077702999114990234, + "preparationSeconds": 0.5508890151977539, + "reducedMotion": true, + "renderSeconds": 0.410999059677124, + "repetition": 1, + "scenePreparationSeconds": 0.19910097122192383, + "simulationSeconds": 1.0888723134994507, + "snapshotBuildCount": 134, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.980000007431954, + "callbackMaxMS": 43.08458333252929, + "postActionRecords": 132, + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.24169909954071045, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0010579824447631836, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009940862655639648, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0011069774627685547, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0029219388961791992, + "simulationSeconds": 0.006008028984069824, + "tick": 1 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.006496071815490723, + "tick": 2 + }, + { + "renderSeconds": 0.0033110380172729492, + "simulationSeconds": 0.007175087928771973, + "tick": 3 + }, + { + "renderSeconds": 0.003116011619567871, + "simulationSeconds": 0.007375955581665039, + "tick": 4 + }, + { + "renderSeconds": 0.0033339262008666992, + "simulationSeconds": 0.007153987884521484, + "tick": 5 + }, + { + "renderSeconds": 0.0030080080032348633, + "simulationSeconds": 0.007300019264221191, + "tick": 6 + }, + { + "renderSeconds": 0.0036950111389160156, + "simulationSeconds": 0.008830070495605469, + "tick": 7 + }, + { + "renderSeconds": 0.003195047378540039, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.003773927688598633, + "simulationSeconds": 0.01581597328186035, + "tick": 9 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.014241933822631836, + "tick": 11 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.006696939468383789, + "tick": 12 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.006627917289733887, + "tick": 13 + }, + { + "renderSeconds": 0.0030889511108398438, + "simulationSeconds": 0.006648063659667969, + "tick": 14 + }, + { + "renderSeconds": 0.002545952796936035, + "simulationSeconds": 0.006262063980102539, + "tick": 15 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.0064209699630737305, + "tick": 16 + }, + { + "renderSeconds": 0.0025140047073364258, + "simulationSeconds": 0.006128907203674316, + "tick": 17 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.0072029829025268555, + "tick": 18 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006157040596008301, + "tick": 19 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.006060957908630371, + "tick": 20 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.006499052047729492, + "tick": 21 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0.0062329769134521484, + "tick": 22 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.002986907958984375, + "simulationSeconds": 0.013000011444091797, + "tick": 24 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.006615042686462402, + "tick": 25 + }, + { + "renderSeconds": 0.0033260583877563477, + "simulationSeconds": 0.006862998008728027, + "tick": 26 + }, + { + "renderSeconds": 0.0025129318237304688, + "simulationSeconds": 0.00613093376159668, + "tick": 27 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.006353020668029785, + "tick": 28 + }, + { + "renderSeconds": 0.002569913864135742, + "simulationSeconds": 0.0063130855560302734, + "tick": 29 + }, + { + "renderSeconds": 0.0032439231872558594, + "simulationSeconds": 0.0066030025482177734, + "tick": 30 + }, + { + "renderSeconds": 0.0030640363693237305, + "simulationSeconds": 0.007389068603515625, + "tick": 31 + }, + { + "renderSeconds": 0.003310084342956543, + "simulationSeconds": 0.007573962211608887, + "tick": 32 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.007032990455627441, + "tick": 33 + }, + { + "renderSeconds": 0.00367891788482666, + "simulationSeconds": 0.008009076118469238, + "tick": 34 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0.007063031196594238, + "tick": 35 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0.007007002830505371, + "tick": 36 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.006978034973144531, + "tick": 37 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.01283407211303711, + "tick": 39 + }, + { + "renderSeconds": 0.003471970558166504, + "simulationSeconds": 0.006204009056091309, + "tick": 40 + }, + { + "renderSeconds": 0.0027310848236083984, + "simulationSeconds": 0.006129026412963867, + "tick": 41 + }, + { + "renderSeconds": 0.0030280351638793945, + "simulationSeconds": 0.006489992141723633, + "tick": 42 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0.0064460039138793945, + "tick": 43 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.0076760053634643555, + "tick": 44 + }, + { + "renderSeconds": 0.0025429725646972656, + "simulationSeconds": 0.006497025489807129, + "tick": 45 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.006435990333557129, + "tick": 46 + }, + { + "renderSeconds": 0.002516031265258789, + "simulationSeconds": 0.006641030311584473, + "tick": 47 + }, + { + "renderSeconds": 0.0031870603561401367, + "simulationSeconds": 0.00636601448059082, + "tick": 48 + }, + { + "renderSeconds": 0.00256502628326416, + "simulationSeconds": 0.006535053253173828, + "tick": 49 + }, + { + "renderSeconds": 0.0029860734939575195, + "simulationSeconds": 0.00666201114654541, + "tick": 50 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.006438016891479492, + "tick": 51 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.0061980485916137695, + "tick": 52 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.002480030059814453, + "simulationSeconds": 0.012579917907714844, + "tick": 54 + }, + { + "renderSeconds": 0.0031529664993286133, + "simulationSeconds": 0.00648808479309082, + "tick": 55 + }, + { + "renderSeconds": 0.003213047981262207, + "simulationSeconds": 0.008625984191894531, + "tick": 56 + }, + { + "renderSeconds": 0.00347900390625, + "simulationSeconds": 0.00772404670715332, + "tick": 57 + }, + { + "renderSeconds": 0.003139019012451172, + "simulationSeconds": 0.007238984107971191, + "tick": 58 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.007497072219848633, + "tick": 59 + }, + { + "renderSeconds": 0.0034929513931274414, + "simulationSeconds": 0.008705973625183105, + "tick": 60 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.008502960205078125, + "tick": 61 + }, + { + "renderSeconds": 0.003444075584411621, + "simulationSeconds": 0.016222000122070312, + "tick": 63 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.0072820186614990234, + "tick": 64 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.015282988548278809, + "tick": 66 + }, + { + "renderSeconds": 0.0032830238342285156, + "simulationSeconds": 0.007856965065002441, + "tick": 67 + }, + { + "renderSeconds": 0.003152012825012207, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0.013180971145629883, + "tick": 69 + }, + { + "renderSeconds": 0.002351045608520508, + "simulationSeconds": 0.006418943405151367, + "tick": 70 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.00675809383392334, + "tick": 71 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.0059359073638916016, + "tick": 72 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.006353974342346191, + "tick": 73 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.006089925765991211, + "tick": 74 + }, + { + "renderSeconds": 0.00268399715423584, + "simulationSeconds": 0.006036996841430664, + "tick": 75 + }, + { + "renderSeconds": 0.0024639368057250977, + "simulationSeconds": 0.006354093551635742, + "tick": 76 + }, + { + "renderSeconds": 0.0025190114974975586, + "simulationSeconds": 0.007369041442871094, + "tick": 77 + }, + { + "renderSeconds": 0.00351107120513916, + "simulationSeconds": 0.006955981254577637, + "tick": 78 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.007662057876586914, + "tick": 79 + }, + { + "renderSeconds": 0.0032930374145507812, + "simulationSeconds": 0.00663304328918457, + "tick": 80 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.006363987922668457, + "tick": 81 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.006451010704040527, + "tick": 82 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.003435969352722168, + "simulationSeconds": 0.013165950775146484, + "tick": 84 + }, + { + "renderSeconds": 0.0032120943069458008, + "simulationSeconds": 0.007303953170776367, + "tick": 85 + }, + { + "renderSeconds": 0.0030069351196289062, + "simulationSeconds": 0.0075789690017700195, + "tick": 86 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.0064449310302734375, + "tick": 87 + }, + { + "renderSeconds": 0.003522038459777832, + "simulationSeconds": 0.007641911506652832, + "tick": 88 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.006324052810668945, + "tick": 89 + }, + { + "renderSeconds": 0.003582000732421875, + "simulationSeconds": 0.007575035095214844, + "tick": 90 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.006884932518005371, + "tick": 91 + }, + { + "renderSeconds": 0.003407001495361328, + "simulationSeconds": 0.007230997085571289, + "tick": 92 + }, + { + "renderSeconds": 0.003477931022644043, + "simulationSeconds": 0.01576399803161621, + "tick": 94 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.007508993148803711, + "tick": 95 + }, + { + "renderSeconds": 0.0028649568557739258, + "simulationSeconds": 0.01533806324005127, + "tick": 97 + }, + { + "renderSeconds": 0.0031080245971679688, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.013255000114440918, + "tick": 99 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.006322026252746582, + "tick": 100 + }, + { + "renderSeconds": 0.0027440786361694336, + "simulationSeconds": 0.006788015365600586, + "tick": 101 + }, + { + "renderSeconds": 0.0031169652938842773, + "simulationSeconds": 0.006455063819885254, + "tick": 102 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.0061800479888916016, + "tick": 103 + }, + { + "renderSeconds": 0.0027369260787963867, + "simulationSeconds": 0.007033944129943848, + "tick": 104 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006659984588623047, + "tick": 105 + }, + { + "renderSeconds": 0.0030651092529296875, + "simulationSeconds": 0.006615996360778809, + "tick": 106 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.0067479610443115234, + "tick": 107 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.0066689252853393555, + "tick": 108 + }, + { + "renderSeconds": 0.002547025680541992, + "simulationSeconds": 0.006235003471374512, + "tick": 109 + }, + { + "renderSeconds": 0.0031200647354125977, + "simulationSeconds": 0.006582975387573242, + "tick": 110 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 0.00625002384185791, + "tick": 111 + }, + { + "renderSeconds": 0.00324404239654541, + "simulationSeconds": 0.0066699981689453125, + "tick": 112 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0025300979614257812, + "simulationSeconds": 0.012250900268554688, + "tick": 114 + }, + { + "renderSeconds": 0.002667069435119629, + "simulationSeconds": 0.006399989128112793, + "tick": 115 + }, + { + "renderSeconds": 0.003155946731567383, + "simulationSeconds": 0.009195089340209961, + "tick": 116 + }, + { + "renderSeconds": 0.003454923629760742, + "simulationSeconds": 0.008366942405700684, + "tick": 117 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.007332921028137207, + "tick": 118 + }, + { + "renderSeconds": 0.0033169984817504883, + "simulationSeconds": 0.007297992706298828, + "tick": 119 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0.0074160099029541016, + "tick": 120 + }, + { + "renderSeconds": 0.0033750534057617188, + "simulationSeconds": 0.0073479413986206055, + "tick": 121 + }, + { + "renderSeconds": 0.003284931182861328, + "simulationSeconds": 0.006977081298828125, + "tick": 122 + }, + { + "renderSeconds": 0.003047943115234375, + "simulationSeconds": 0.007333040237426758, + "tick": 123 + }, + { + "renderSeconds": 0.003538966178894043, + "simulationSeconds": 0.007235050201416016, + "tick": 124 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0.007253050804138184, + "tick": 125 + }, + { + "renderSeconds": 0.0031889677047729492, + "simulationSeconds": 0.006960034370422363, + "tick": 126 + }, + { + "renderSeconds": 0.0034019947052001953, + "simulationSeconds": 0.00751805305480957, + "tick": 127 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.014226913452148438, + "tick": 129 + }, + { + "renderSeconds": 0.0034389495849609375, + "simulationSeconds": 0.007169008255004883, + "tick": 130 + }, + { + "renderSeconds": 0.0032470226287841797, + "simulationSeconds": 0.007732987403869629, + "tick": 131 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.0066890716552734375, + "tick": 132 + }, + { + "renderSeconds": 0.0033860206604003906, + "simulationSeconds": 0.007275938987731934, + "tick": 133 + }, + { + "renderSeconds": 0.0025000572204589844, + "simulationSeconds": 0.006361961364746094, + "tick": 134 + }, + { + "renderSeconds": 0.003114938735961914, + "simulationSeconds": 0.00631403923034668, + "tick": 135 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006190061569213867, + "tick": 136 + }, + { + "renderSeconds": 0.002526998519897461, + "simulationSeconds": 0.006399989128112793, + "tick": 137 + }, + { + "renderSeconds": 0.002086043357849121, + "simulationSeconds": 0.006495952606201172, + "tick": 138 + }, + { + "renderSeconds": 0.0024690628051757812, + "simulationSeconds": 0.006549954414367676, + "tick": 139 + }, + { + "renderSeconds": 0.002557039260864258, + "simulationSeconds": 0.006489992141723633, + "tick": 140 + }, + { + "renderSeconds": 0.0023899078369140625, + "simulationSeconds": 0.0059670209884643555, + "tick": 141 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.006309032440185547, + "tick": 142 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.002698063850402832, + "simulationSeconds": 0.013781905174255371, + "tick": 144 + }, + { + "renderSeconds": 0.003017902374267578, + "simulationSeconds": 0.00625300407409668, + "tick": 145 + }, + { + "renderSeconds": 0.0029550790786743164, + "simulationSeconds": 0.007387995719909668, + "tick": 146 + }, + { + "renderSeconds": 0.003104090690612793, + "simulationSeconds": 0.007387042045593262, + "tick": 147 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.006276965141296387, + "tick": 148 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.006898999214172363, + "tick": 149 + }, + { + "renderSeconds": 0.0024499893188476562, + "simulationSeconds": 0.006084084510803223, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.039794999989680946, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 230, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.14678406715393066, + "preparationSeconds": 0.5299520492553711, + "reducedMotion": false, + "renderSeconds": 0.43065667152404785, + "repetition": 10, + "scenePreparationSeconds": 0.18618500232696533, + "simulationSeconds": 1.0347442626953125, + "snapshotBuildCount": 147, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333335467614, + "postActionRecords": 145, + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2511711120605469, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0009160041809082031, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008009672164916992, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0011650323867797852, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009520053863525391, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0.005492091178894043, + "tick": 1 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0.006466984748840332, + "tick": 2 + }, + { + "renderSeconds": 0.002539992332458496, + "simulationSeconds": 0.01182103157043457, + "tick": 4 + }, + { + "renderSeconds": 0.002911090850830078, + "simulationSeconds": 0.006865024566650391, + "tick": 5 + }, + { + "renderSeconds": 0.003197908401489258, + "simulationSeconds": 0.006595015525817871, + "tick": 6 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006618976593017578, + "tick": 7 + }, + { + "renderSeconds": 0.0031189918518066406, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.007451057434082031, + "tick": 8 + }, + { + "renderSeconds": 0.002980947494506836, + "simulationSeconds": 0.007169961929321289, + "tick": 9 + }, + { + "renderSeconds": 0.0032159090042114258, + "simulationSeconds": 0.007439017295837402, + "tick": 10 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.01644909381866455, + "tick": 12 + }, + { + "renderSeconds": 0.003304004669189453, + "simulationSeconds": 0.006898999214172363, + "tick": 13 + }, + { + "renderSeconds": 0.0033229589462280273, + "simulationSeconds": 0.007162928581237793, + "tick": 14 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.006955981254577637, + "tick": 15 + }, + { + "renderSeconds": 0.003327012062072754, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.002775907516479492, + "simulationSeconds": 0.006410002708435059, + "tick": 16 + }, + { + "renderSeconds": 0.0031800270080566406, + "simulationSeconds": 0.0068579912185668945, + "tick": 17 + }, + { + "renderSeconds": 0.002357006072998047, + "simulationSeconds": 0.012247085571289062, + "tick": 19 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 0.007215976715087891, + "tick": 20 + }, + { + "renderSeconds": 0.0027549266815185547, + "simulationSeconds": 0.006477952003479004, + "tick": 21 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0.007116913795471191, + "tick": 22 + }, + { + "renderSeconds": 0.0032949447631835938, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0030989646911621094, + "simulationSeconds": 0.0070760250091552734, + "tick": 23 + }, + { + "renderSeconds": 0.0030089616775512695, + "simulationSeconds": 0.00636601448059082, + "tick": 24 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0.006143093109130859, + "tick": 25 + }, + { + "renderSeconds": 0.002454042434692383, + "simulationSeconds": 0.013026952743530273, + "tick": 27 + }, + { + "renderSeconds": 0.003532886505126953, + "simulationSeconds": 0.007485032081604004, + "tick": 28 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0.007377028465270996, + "tick": 29 + }, + { + "renderSeconds": 0.0032079219818115234, + "simulationSeconds": 0.007580995559692383, + "tick": 30 + }, + { + "renderSeconds": 0.0031229257583618164, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0034639835357666016, + "simulationSeconds": 0.00896000862121582, + "tick": 31 + }, + { + "renderSeconds": 0.0029990673065185547, + "simulationSeconds": 0.007140040397644043, + "tick": 32 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.015707969665527344, + "tick": 34 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.015051960945129395, + "tick": 36 + }, + { + "renderSeconds": 0.0032340288162231445, + "simulationSeconds": 0.014881014823913574, + "tick": 38 + }, + { + "renderSeconds": 0.0035250186920166016, + "simulationSeconds": 0.007506966590881348, + "tick": 39 + }, + { + "renderSeconds": 0.003637075424194336, + "simulationSeconds": 0.008095979690551758, + "tick": 40 + }, + { + "renderSeconds": 0.0026159286499023438, + "simulationSeconds": 0.013801932334899902, + "tick": 42 + }, + { + "renderSeconds": 0.0025920867919921875, + "simulationSeconds": 0.013101935386657715, + "tick": 44 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.006413936614990234, + "tick": 45 + }, + { + "renderSeconds": 0.0029500722885131836, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0026160478591918945, + "simulationSeconds": 0.006292939186096191, + "tick": 46 + }, + { + "renderSeconds": 0.0025659799575805664, + "simulationSeconds": 0.006389021873474121, + "tick": 47 + }, + { + "renderSeconds": 0.0024160146713256836, + "simulationSeconds": 0.013069987297058105, + "tick": 49 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0.006145954132080078, + "tick": 50 + }, + { + "renderSeconds": 0.002975940704345703, + "simulationSeconds": 0.00628507137298584, + "tick": 51 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0.006282925605773926, + "tick": 52 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.006425976753234863, + "tick": 53 + }, + { + "renderSeconds": 0.0028160810470581055, + "simulationSeconds": 0.0073670148849487305, + "tick": 54 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.007136940956115723, + "tick": 55 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.014384984970092773, + "tick": 57 + }, + { + "renderSeconds": 0.0032340288162231445, + "simulationSeconds": 0.006889939308166504, + "tick": 58 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 0.007362961769104004, + "tick": 59 + }, + { + "renderSeconds": 0.003715038299560547, + "simulationSeconds": 0.007352948188781738, + "tick": 60 + }, + { + "renderSeconds": 0.0032160282135009766, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0029219388961791992, + "simulationSeconds": 0.007198929786682129, + "tick": 61 + }, + { + "renderSeconds": 0.003072023391723633, + "simulationSeconds": 0.007399916648864746, + "tick": 62 + }, + { + "renderSeconds": 0.0028420686721801758, + "simulationSeconds": 0.014076948165893555, + "tick": 64 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 0.0069609880447387695, + "tick": 65 + }, + { + "renderSeconds": 0.003876924514770508, + "simulationSeconds": 0.007789969444274902, + "tick": 66 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.007421970367431641, + "tick": 67 + }, + { + "renderSeconds": 0.003274083137512207, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.002888917922973633, + "simulationSeconds": 0.0070569515228271484, + "tick": 68 + }, + { + "renderSeconds": 0.00341796875, + "simulationSeconds": 0.006831049919128418, + "tick": 69 + }, + { + "renderSeconds": 0.002926945686340332, + "simulationSeconds": 0.006588101387023926, + "tick": 70 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.012675046920776367, + "tick": 72 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.005980968475341797, + "tick": 73 + }, + { + "renderSeconds": 0.0033380985260009766, + "simulationSeconds": 0.0068569183349609375, + "tick": 74 + }, + { + "renderSeconds": 0.0031920671463012695, + "simulationSeconds": 0.007333993911743164, + "tick": 75 + }, + { + "renderSeconds": 0.002982020378112793, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 75 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.007590055465698242, + "tick": 76 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.007133960723876953, + "tick": 77 + }, + { + "renderSeconds": 0.003969907760620117, + "simulationSeconds": 0.01807093620300293, + "tick": 79 + }, + { + "renderSeconds": 0.0036100149154663086, + "simulationSeconds": 0.009209990501403809, + "tick": 80 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.01489400863647461, + "tick": 82 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.014654994010925293, + "tick": 84 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.007166028022766113, + "tick": 85 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.012087106704711914, + "tick": 87 + }, + { + "renderSeconds": 0.0033080577850341797, + "simulationSeconds": 0.006374001502990723, + "tick": 88 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.006807923316955566, + "tick": 89 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0.006430983543395996, + "tick": 90 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0.006339907646179199, + "tick": 91 + }, + { + "renderSeconds": 0.003386974334716797, + "simulationSeconds": 0.00657498836517334, + "tick": 92 + }, + { + "renderSeconds": 0.002424001693725586, + "simulationSeconds": 0.012521982192993164, + "tick": 94 + }, + { + "renderSeconds": 0.0031489133834838867, + "simulationSeconds": 0.006399035453796387, + "tick": 95 + }, + { + "renderSeconds": 0.00299990177154541, + "simulationSeconds": 0.007042050361633301, + "tick": 96 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006144046783447266, + "tick": 97 + }, + { + "renderSeconds": 0.002608060836791992, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.006467938423156738, + "tick": 98 + }, + { + "renderSeconds": 0.002393007278442383, + "simulationSeconds": 0.005905032157897949, + "tick": 99 + }, + { + "renderSeconds": 0.0026450157165527344, + "simulationSeconds": 0.0061359405517578125, + "tick": 100 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.012521028518676758, + "tick": 102 + }, + { + "renderSeconds": 0.002886056900024414, + "simulationSeconds": 0.0063430070877075195, + "tick": 103 + }, + { + "renderSeconds": 0.003222942352294922, + "simulationSeconds": 0.00657808780670166, + "tick": 104 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.006637930870056152, + "tick": 105 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002896904945373535, + "simulationSeconds": 0.006409049034118652, + "tick": 106 + }, + { + "renderSeconds": 0.0026210546493530273, + "simulationSeconds": 0.006189942359924316, + "tick": 107 + }, + { + "renderSeconds": 0.0024979114532470703, + "simulationSeconds": 0.012019038200378418, + "tick": 109 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.006020069122314453, + "tick": 110 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0.007335066795349121, + "tick": 111 + }, + { + "renderSeconds": 0.0027370452880859375, + "simulationSeconds": 0.006296992301940918, + "tick": 112 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.002389073371887207, + "simulationSeconds": 0.006151914596557617, + "tick": 113 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0.006566047668457031, + "tick": 114 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.006094932556152344, + "tick": 115 + }, + { + "renderSeconds": 0.0025010108947753906, + "simulationSeconds": 0.013134956359863281, + "tick": 117 + }, + { + "renderSeconds": 0.0036269426345825195, + "simulationSeconds": 0.0070400238037109375, + "tick": 118 + }, + { + "renderSeconds": 0.0030339956283569336, + "simulationSeconds": 0.00772404670715332, + "tick": 119 + }, + { + "renderSeconds": 0.003570079803466797, + "simulationSeconds": 0.007827997207641602, + "tick": 120 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0033600330352783203, + "simulationSeconds": 0.007362008094787598, + "tick": 121 + }, + { + "renderSeconds": 0.0030210018157958984, + "simulationSeconds": 0.00745999813079834, + "tick": 122 + }, + { + "renderSeconds": 0.002878904342651367, + "simulationSeconds": 0.0143510103225708, + "tick": 124 + }, + { + "renderSeconds": 0.002759099006652832, + "simulationSeconds": 0.007632017135620117, + "tick": 125 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.007771968841552734, + "tick": 126 + }, + { + "renderSeconds": 0.0031049251556396484, + "simulationSeconds": 0.007212996482849121, + "tick": 127 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.007762908935546875, + "tick": 128 + }, + { + "renderSeconds": 0.0038390159606933594, + "simulationSeconds": 0.00880897045135498, + "tick": 129 + }, + { + "renderSeconds": 0.0038269758224487305, + "simulationSeconds": 0.0094679594039917, + "tick": 130 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.014081954956054688, + "tick": 132 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0.00719904899597168, + "tick": 133 + }, + { + "renderSeconds": 0.0033249855041503906, + "simulationSeconds": 0.00834202766418457, + "tick": 134 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.008127927780151367, + "tick": 135 + }, + { + "renderSeconds": 0.004771113395690918, + "simulationSeconds": 0.009902000427246094, + "tick": 136 + }, + { + "renderSeconds": 0.003405928611755371, + "simulationSeconds": 0.007027983665466309, + "tick": 137 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 0.014731049537658691, + "tick": 139 + }, + { + "renderSeconds": 0.00327301025390625, + "simulationSeconds": 0.007156968116760254, + "tick": 140 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.0070819854736328125, + "tick": 141 + }, + { + "renderSeconds": 0.0035790205001831055, + "simulationSeconds": 0.007699012756347656, + "tick": 142 + }, + { + "renderSeconds": 0.003097057342529297, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0039370059967041016, + "simulationSeconds": 0.006902098655700684, + "tick": 143 + }, + { + "renderSeconds": 0.003159046173095703, + "simulationSeconds": 0.008594036102294922, + "tick": 144 + }, + { + "renderSeconds": 0.0033140182495117188, + "simulationSeconds": 0.007693052291870117, + "tick": 145 + }, + { + "renderSeconds": 0.0031599998474121094, + "simulationSeconds": 0.014925003051757812, + "tick": 147 + }, + { + "renderSeconds": 0.004585981369018555, + "simulationSeconds": 0.006965994834899902, + "tick": 148 + }, + { + "renderSeconds": 0.002957940101623535, + "simulationSeconds": 0.006939053535461426, + "tick": 149 + }, + { + "renderSeconds": 0.003625035285949707, + "simulationSeconds": 0.010264039039611816, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.018265166669152677, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 226, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.007022261619567871, + "preparationSeconds": 0.5018049478530884, + "reducedMotion": false, + "renderSeconds": 0.4346938133239746, + "repetition": 2, + "scenePreparationSeconds": 0.17749106884002686, + "simulationSeconds": 1.057295560836792, + "snapshotBuildCount": 145, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 25.864583323709667, + "callbackMaxMS": 39.43504166090861, + "postActionRecords": 143, + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.24346458911895752, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0006520748138427734, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001007080078125, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0008729696273803711, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010870695114135742, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.005411982536315918, + "tick": 1 + }, + { + "renderSeconds": 0.002695918083190918, + "simulationSeconds": 0.013038039207458496, + "tick": 3 + }, + { + "renderSeconds": 0.0030099153518676758, + "simulationSeconds": 0.007182002067565918, + "tick": 4 + }, + { + "renderSeconds": 0.0032149553298950195, + "simulationSeconds": 0.00790703296661377, + "tick": 5 + }, + { + "renderSeconds": 0.003365039825439453, + "simulationSeconds": 0.007337093353271484, + "tick": 6 + }, + { + "renderSeconds": 0.0033599138259887695, + "simulationSeconds": 0.007520079612731934, + "tick": 7 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.007804989814758301, + "tick": 8 + }, + { + "renderSeconds": 0.005373954772949219, + "simulationSeconds": 0.0186309814453125, + "tick": 10 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0.014801979064941406, + "tick": 12 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.014523983001708984, + "tick": 14 + }, + { + "renderSeconds": 0.0025049448013305664, + "simulationSeconds": 0.012939929962158203, + "tick": 16 + }, + { + "renderSeconds": 0.0024149417877197266, + "simulationSeconds": 0.0122300386428833, + "tick": 18 + }, + { + "renderSeconds": 0.002377033233642578, + "simulationSeconds": 0.0125579833984375, + "tick": 20 + }, + { + "renderSeconds": 0.002194046974182129, + "simulationSeconds": 0.0066339969635009766, + "tick": 21 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.006011009216308594, + "tick": 22 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.0060089826583862305, + "tick": 23 + }, + { + "renderSeconds": 0.0033550262451171875, + "simulationSeconds": 0.013995051383972168, + "tick": 25 + }, + { + "renderSeconds": 0.003929018974304199, + "simulationSeconds": 0.009605050086975098, + "tick": 26 + }, + { + "renderSeconds": 0.004446983337402344, + "simulationSeconds": 0.025432944297790527, + "tick": 28 + }, + { + "renderSeconds": 0.0029609203338623047, + "simulationSeconds": 0.015434980392456055, + "tick": 30 + }, + { + "renderSeconds": 0.0034530162811279297, + "simulationSeconds": 0.007296085357666016, + "tick": 31 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.012560009956359863, + "tick": 33 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.012581944465637207, + "tick": 35 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.01434791088104248, + "tick": 37 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.006199955940246582, + "tick": 38 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.012891054153442383, + "tick": 40 + }, + { + "renderSeconds": 0.003116011619567871, + "simulationSeconds": 0.007078051567077637, + "tick": 41 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.006797075271606445, + "tick": 42 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.0071610212326049805, + "tick": 43 + }, + { + "renderSeconds": 0.0025949478149414062, + "simulationSeconds": 0.006292104721069336, + "tick": 44 + }, + { + "renderSeconds": 0.003175973892211914, + "simulationSeconds": 0.006827116012573242, + "tick": 45 + }, + { + "renderSeconds": 0.0030339956283569336, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0033260583877563477, + "simulationSeconds": 0.007237076759338379, + "tick": 46 + }, + { + "renderSeconds": 0.0030748844146728516, + "simulationSeconds": 0.014147043228149414, + "tick": 48 + }, + { + "renderSeconds": 0.0035680532455444336, + "simulationSeconds": 0.007601022720336914, + "tick": 49 + }, + { + "renderSeconds": 0.003304004669189453, + "simulationSeconds": 0.007025957107543945, + "tick": 50 + }, + { + "renderSeconds": 0.0031080245971679688, + "simulationSeconds": 0.00783991813659668, + "tick": 51 + }, + { + "renderSeconds": 0.0032171010971069336, + "simulationSeconds": 0.007388949394226074, + "tick": 52 + }, + { + "renderSeconds": 0.0033409595489501953, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.007155060768127441, + "tick": 53 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0.01429605484008789, + "tick": 55 + }, + { + "renderSeconds": 0.0031510591506958008, + "simulationSeconds": 0.008435964584350586, + "tick": 56 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0.014694929122924805, + "tick": 58 + }, + { + "renderSeconds": 0.0034389495849609375, + "simulationSeconds": 0.0069849491119384766, + "tick": 59 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.0072830915451049805, + "tick": 60 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0030890703201293945, + "simulationSeconds": 0.006410002708435059, + "tick": 61 + }, + { + "renderSeconds": 0.0025659799575805664, + "simulationSeconds": 0.014960885047912598, + "tick": 63 + }, + { + "renderSeconds": 0.0024710893630981445, + "simulationSeconds": 0.012524008750915527, + "tick": 65 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.006264925003051758, + "tick": 66 + }, + { + "renderSeconds": 0.0036889314651489258, + "simulationSeconds": 0.007707953453063965, + "tick": 67 + }, + { + "renderSeconds": 0.003448009490966797, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.0033739805221557617, + "simulationSeconds": 0.006522059440612793, + "tick": 68 + }, + { + "renderSeconds": 0.0030820369720458984, + "simulationSeconds": 0.015149950981140137, + "tick": 70 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.008659958839416504, + "tick": 71 + }, + { + "renderSeconds": 0.0031620264053344727, + "simulationSeconds": 0.007219910621643066, + "tick": 72 + }, + { + "renderSeconds": 0.003726959228515625, + "simulationSeconds": 0.00786900520324707, + "tick": 73 + }, + { + "renderSeconds": 0.0031930208206176758, + "simulationSeconds": 0.0072939395904541016, + "tick": 74 + }, + { + "renderSeconds": 0.0031859874725341797, + "simulationSeconds": 0.009685039520263672, + "tick": 75 + }, + { + "renderSeconds": 0.0032209157943725586, + "simulationSeconds": 0.006358981132507324, + "tick": 76 + }, + { + "renderSeconds": 0.003072023391723633, + "simulationSeconds": 0.014226078987121582, + "tick": 78 + }, + { + "renderSeconds": 0.004007101058959961, + "simulationSeconds": 0.006739974021911621, + "tick": 79 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006504058837890625, + "tick": 80 + }, + { + "renderSeconds": 0.0031859874725341797, + "simulationSeconds": 0.007336974143981934, + "tick": 81 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.006687045097351074, + "tick": 82 + }, + { + "renderSeconds": 0.003271937370300293, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 82 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.006739974021911621, + "tick": 83 + }, + { + "renderSeconds": 0.00244903564453125, + "simulationSeconds": 0.012396931648254395, + "tick": 85 + }, + { + "renderSeconds": 0.003000974655151367, + "simulationSeconds": 0.00698399543762207, + "tick": 86 + }, + { + "renderSeconds": 0.003744959831237793, + "simulationSeconds": 0.007542014122009277, + "tick": 87 + }, + { + "renderSeconds": 0.0037990808486938477, + "simulationSeconds": 0.007622957229614258, + "tick": 88 + }, + { + "renderSeconds": 0.0033289194107055664, + "simulationSeconds": 0.00734102725982666, + "tick": 89 + }, + { + "renderSeconds": 0.0045479536056518555, + "simulationSeconds": 0.008851051330566406, + "tick": 90 + }, + { + "renderSeconds": 0.0030709505081176758, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0055179595947265625, + "simulationSeconds": 0.009950995445251465, + "tick": 91 + }, + { + "renderSeconds": 0.004396915435791016, + "simulationSeconds": 0.02378106117248535, + "tick": 94 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.014163970947265625, + "tick": 96 + }, + { + "renderSeconds": 0.00318300724029541, + "simulationSeconds": 0.013785004615783691, + "tick": 98 + }, + { + "renderSeconds": 0.0030809640884399414, + "simulationSeconds": 0.012432098388671875, + "tick": 100 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.007049083709716797, + "tick": 101 + }, + { + "renderSeconds": 0.0026009082794189453, + "simulationSeconds": 0.006435036659240723, + "tick": 102 + }, + { + "renderSeconds": 0.0029140710830688477, + "simulationSeconds": 0.00701904296875, + "tick": 103 + }, + { + "renderSeconds": 0.002495884895324707, + "simulationSeconds": 0.00625300407409668, + "tick": 104 + }, + { + "renderSeconds": 0.0032759904861450195, + "simulationSeconds": 0.006331086158752441, + "tick": 105 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.007264971733093262, + "tick": 106 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 0.014085888862609863, + "tick": 108 + }, + { + "renderSeconds": 0.0034409761428833008, + "simulationSeconds": 0.009178996086120605, + "tick": 109 + }, + { + "renderSeconds": 0.0029801130294799805, + "simulationSeconds": 0.007021903991699219, + "tick": 110 + }, + { + "renderSeconds": 0.0033758878707885742, + "simulationSeconds": 0.007334113121032715, + "tick": 111 + }, + { + "renderSeconds": 0.0030379295349121094, + "simulationSeconds": 0.0070400238037109375, + "tick": 112 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.007637977600097656, + "tick": 113 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.014060020446777344, + "tick": 115 + }, + { + "renderSeconds": 0.00368499755859375, + "simulationSeconds": 0.007195949554443359, + "tick": 116 + }, + { + "renderSeconds": 0.0036770105361938477, + "simulationSeconds": 0.00893402099609375, + "tick": 117 + }, + { + "renderSeconds": 0.0036619901657104492, + "simulationSeconds": 0.017593979835510254, + "tick": 119 + }, + { + "renderSeconds": 0.0030651092529296875, + "simulationSeconds": 0.007284998893737793, + "tick": 120 + }, + { + "renderSeconds": 0.00407099723815918, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003223896026611328, + "simulationSeconds": 0.007569074630737305, + "tick": 121 + }, + { + "renderSeconds": 0.002794981002807617, + "simulationSeconds": 0.014467954635620117, + "tick": 123 + }, + { + "renderSeconds": 0.003486037254333496, + "simulationSeconds": 0.007846951484680176, + "tick": 124 + }, + { + "renderSeconds": 0.004135012626647949, + "simulationSeconds": 0.009323954582214355, + "tick": 125 + }, + { + "renderSeconds": 0.0038870573043823242, + "simulationSeconds": 0.01770496368408203, + "tick": 127 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 127 + }, + { + "renderSeconds": 0.003881096839904785, + "simulationSeconds": 0.007725954055786133, + "tick": 128 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.0165330171585083, + "tick": 130 + }, + { + "renderSeconds": 0.004183053970336914, + "simulationSeconds": 0.009144067764282227, + "tick": 131 + }, + { + "renderSeconds": 0.004407048225402832, + "simulationSeconds": 0.01910996437072754, + "tick": 133 + }, + { + "renderSeconds": 0.003404974937438965, + "simulationSeconds": 0.008630037307739258, + "tick": 134 + }, + { + "renderSeconds": 0.0038019418716430664, + "simulationSeconds": 0.009992003440856934, + "tick": 135 + }, + { + "renderSeconds": 0.003944993019104004, + "simulationSeconds": 0.008885979652404785, + "tick": 136 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.013364911079406738, + "tick": 138 + }, + { + "renderSeconds": 0.002586960792541504, + "simulationSeconds": 0.006351947784423828, + "tick": 139 + }, + { + "renderSeconds": 0.002541065216064453, + "simulationSeconds": 0.006322026252746582, + "tick": 140 + }, + { + "renderSeconds": 0.0027348995208740234, + "simulationSeconds": 0.00698399543762207, + "tick": 141 + }, + { + "renderSeconds": 0.00248110294342041, + "simulationSeconds": 0.006091952323913574, + "tick": 142 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0024759769439697266, + "simulationSeconds": 0.006628990173339844, + "tick": 143 + }, + { + "renderSeconds": 0.0024820566177368164, + "simulationSeconds": 0.012089014053344727, + "tick": 145 + }, + { + "renderSeconds": 0.0034759044647216797, + "simulationSeconds": 0.006983041763305664, + "tick": 146 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.009521961212158203, + "tick": 147 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.007827997207641602, + "tick": 148 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.007693052291870117, + "tick": 149 + }, + { + "renderSeconds": 0.0032639503479003906, + "simulationSeconds": 0.006918907165527344, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03339908333146013, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 202, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006995797157287598, + "preparationSeconds": 0.5246939659118652, + "reducedMotion": true, + "renderSeconds": 0.40645670890808105, + "repetition": 2, + "scenePreparationSeconds": 0.18401408195495605, + "simulationSeconds": 1.106281042098999, + "snapshotBuildCount": 131, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 35.47816665377468, + "callbackMaxMS": 41.85433333623223, + "postActionRecords": 129, + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.37975001335144043, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0008020401000976562, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007690191268920898, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001083970069885254, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007529258728027344, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0047119855880737305, + "simulationSeconds": 0.005309939384460449, + "tick": 1 + }, + { + "renderSeconds": 0.0040760040283203125, + "simulationSeconds": 0.007265925407409668, + "tick": 2 + }, + { + "renderSeconds": 0.0040819644927978516, + "simulationSeconds": 0.007874011993408203, + "tick": 3 + }, + { + "renderSeconds": 0.0050280094146728516, + "simulationSeconds": 0.009160995483398438, + "tick": 4 + }, + { + "renderSeconds": 0.004393935203552246, + "simulationSeconds": 0.016391992568969727, + "tick": 6 + }, + { + "renderSeconds": 0.004027009010314941, + "simulationSeconds": 0.01432490348815918, + "tick": 8 + }, + { + "renderSeconds": 0.0035299062728881836, + "simulationSeconds": 0.0062220096588134766, + "tick": 9 + }, + { + "renderSeconds": 0.0039539337158203125, + "simulationSeconds": 0.006293058395385742, + "tick": 10 + }, + { + "renderSeconds": 0.004172086715698242, + "simulationSeconds": 0.006330013275146484, + "tick": 11 + }, + { + "renderSeconds": 0.003741025924682617, + "simulationSeconds": 0.00610196590423584, + "tick": 12 + }, + { + "renderSeconds": 0.003961920738220215, + "simulationSeconds": 0.013009071350097656, + "tick": 14 + }, + { + "renderSeconds": 0.0035729408264160156, + "simulationSeconds": 0.012757062911987305, + "tick": 16 + }, + { + "renderSeconds": 0.00391995906829834, + "simulationSeconds": 0.007048964500427246, + "tick": 17 + }, + { + "renderSeconds": 0.004234910011291504, + "simulationSeconds": 0.006435990333557129, + "tick": 18 + }, + { + "renderSeconds": 0.003983974456787109, + "simulationSeconds": 0.0069429874420166016, + "tick": 19 + }, + { + "renderSeconds": 0.0033500194549560547, + "simulationSeconds": 0.012300968170166016, + "tick": 21 + }, + { + "renderSeconds": 0.0037189722061157227, + "simulationSeconds": 0.006648063659667969, + "tick": 22 + }, + { + "renderSeconds": 0.0033529996871948242, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.003926992416381836, + "simulationSeconds": 0.007030010223388672, + "tick": 23 + }, + { + "renderSeconds": 0.003386974334716797, + "simulationSeconds": 0.006494998931884766, + "tick": 24 + }, + { + "renderSeconds": 0.003993988037109375, + "simulationSeconds": 0.007419943809509277, + "tick": 25 + }, + { + "renderSeconds": 0.004297971725463867, + "simulationSeconds": 0.007214069366455078, + "tick": 26 + }, + { + "renderSeconds": 0.0041730403900146484, + "simulationSeconds": 0.007357954978942871, + "tick": 27 + }, + { + "renderSeconds": 0.003977060317993164, + "simulationSeconds": 0.014626026153564453, + "tick": 29 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.012069940567016602, + "tick": 31 + }, + { + "renderSeconds": 0.0037980079650878906, + "simulationSeconds": 0.006467938423156738, + "tick": 32 + }, + { + "renderSeconds": 0.0035709142684936523, + "simulationSeconds": 0.006767988204956055, + "tick": 33 + }, + { + "renderSeconds": 0.003915905952453613, + "simulationSeconds": 0.0065490007400512695, + "tick": 34 + }, + { + "renderSeconds": 0.0041179656982421875, + "simulationSeconds": 0.01246798038482666, + "tick": 36 + }, + { + "renderSeconds": 0.00380706787109375, + "simulationSeconds": 0.006329059600830078, + "tick": 37 + }, + { + "renderSeconds": 0.004203081130981445, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.003628969192504883, + "simulationSeconds": 0.008324027061462402, + "tick": 38 + }, + { + "renderSeconds": 0.0033899545669555664, + "simulationSeconds": 0.006533980369567871, + "tick": 39 + }, + { + "renderSeconds": 0.0037889480590820312, + "simulationSeconds": 0.006090998649597168, + "tick": 40 + }, + { + "renderSeconds": 0.004188060760498047, + "simulationSeconds": 0.006744980812072754, + "tick": 41 + }, + { + "renderSeconds": 0.0036029815673828125, + "simulationSeconds": 0.006145000457763672, + "tick": 42 + }, + { + "renderSeconds": 0.0037850141525268555, + "simulationSeconds": 0.0123978853225708, + "tick": 44 + }, + { + "renderSeconds": 0.00330197811126709, + "simulationSeconds": 0.007215976715087891, + "tick": 45 + }, + { + "renderSeconds": 0.0038299560546875, + "simulationSeconds": 0.0071489810943603516, + "tick": 46 + }, + { + "renderSeconds": 0.00365602970123291, + "simulationSeconds": 0.006281018257141113, + "tick": 47 + }, + { + "renderSeconds": 0.003702998161315918, + "simulationSeconds": 0.006773948669433594, + "tick": 48 + }, + { + "renderSeconds": 0.0034199953079223633, + "simulationSeconds": 0.006096959114074707, + "tick": 49 + }, + { + "renderSeconds": 0.003715991973876953, + "simulationSeconds": 0.01468503475189209, + "tick": 51 + }, + { + "renderSeconds": 0.004673957824707031, + "simulationSeconds": 0.007940053939819336, + "tick": 52 + }, + { + "renderSeconds": 0.0033540725708007812, + "simulationSeconds": 0.006407976150512695, + "tick": 53 + }, + { + "renderSeconds": 0.0037200450897216797, + "simulationSeconds": 0.006471991539001465, + "tick": 54 + }, + { + "renderSeconds": 0.004138946533203125, + "simulationSeconds": 0.0070760250091552734, + "tick": 55 + }, + { + "renderSeconds": 0.004388928413391113, + "simulationSeconds": 0.00719904899597168, + "tick": 56 + }, + { + "renderSeconds": 0.004899024963378906, + "simulationSeconds": 0.006624937057495117, + "tick": 57 + }, + { + "renderSeconds": 0.0036410093307495117, + "simulationSeconds": 0.012337923049926758, + "tick": 59 + }, + { + "renderSeconds": 0.0043059587478637695, + "simulationSeconds": 0.007216095924377441, + "tick": 60 + }, + { + "renderSeconds": 0.0036939382553100586, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.004227995872497559, + "simulationSeconds": 0.006990909576416016, + "tick": 61 + }, + { + "renderSeconds": 0.004846096038818359, + "simulationSeconds": 0.007358908653259277, + "tick": 62 + }, + { + "renderSeconds": 0.004317045211791992, + "simulationSeconds": 0.008098006248474121, + "tick": 63 + }, + { + "renderSeconds": 0.004480957984924316, + "simulationSeconds": 0.02137303352355957, + "tick": 66 + }, + { + "renderSeconds": 0.005138993263244629, + "simulationSeconds": 0.019154071807861328, + "tick": 68 + }, + { + "renderSeconds": 0.00457608699798584, + "simulationSeconds": 0.014972925186157227, + "tick": 70 + }, + { + "renderSeconds": 0.004456996917724609, + "simulationSeconds": 0, + "tick": 70 + }, + { + "renderSeconds": 0.004763960838317871, + "simulationSeconds": 0.007024049758911133, + "tick": 71 + }, + { + "renderSeconds": 0.0038889646530151367, + "simulationSeconds": 0.006497979164123535, + "tick": 72 + }, + { + "renderSeconds": 0.00386202335357666, + "simulationSeconds": 0.014152884483337402, + "tick": 74 + }, + { + "renderSeconds": 0.0036879777908325195, + "simulationSeconds": 0.01293802261352539, + "tick": 76 + }, + { + "renderSeconds": 0.004081010818481445, + "simulationSeconds": 0.013471007347106934, + "tick": 78 + }, + { + "renderSeconds": 0.0041790008544921875, + "simulationSeconds": 0.007122993469238281, + "tick": 79 + }, + { + "renderSeconds": 0.004004955291748047, + "simulationSeconds": 0.014364957809448242, + "tick": 81 + }, + { + "renderSeconds": 0.00380098819732666, + "simulationSeconds": 0.0065419673919677734, + "tick": 82 + }, + { + "renderSeconds": 0.003800034523010254, + "simulationSeconds": 0.006485939025878906, + "tick": 83 + }, + { + "renderSeconds": 0.0036820173263549805, + "simulationSeconds": 0.0067119598388671875, + "tick": 84 + }, + { + "renderSeconds": 0.0037659406661987305, + "simulationSeconds": 0.006669044494628906, + "tick": 85 + }, + { + "renderSeconds": 0.0038889646530151367, + "simulationSeconds": 0.0068329572677612305, + "tick": 86 + }, + { + "renderSeconds": 0.003895998001098633, + "simulationSeconds": 0.006224989891052246, + "tick": 87 + }, + { + "renderSeconds": 0.003843069076538086, + "simulationSeconds": 0.013130903244018555, + "tick": 89 + }, + { + "renderSeconds": 0.004878044128417969, + "simulationSeconds": 0.010470986366271973, + "tick": 90 + }, + { + "renderSeconds": 0.004503965377807617, + "simulationSeconds": 0.007604002952575684, + "tick": 91 + }, + { + "renderSeconds": 0.004930973052978516, + "simulationSeconds": 0.007747054100036621, + "tick": 92 + }, + { + "renderSeconds": 0.00397491455078125, + "simulationSeconds": 0.007363080978393555, + "tick": 93 + }, + { + "renderSeconds": 0.003332972526550293, + "simulationSeconds": 0.020272016525268555, + "tick": 96 + }, + { + "renderSeconds": 0.004913926124572754, + "simulationSeconds": 0.007972955703735352, + "tick": 97 + }, + { + "renderSeconds": 0.003854990005493164, + "simulationSeconds": 0.013345956802368164, + "tick": 99 + }, + { + "renderSeconds": 0.0032939910888671875, + "simulationSeconds": 0.013273000717163086, + "tick": 101 + }, + { + "renderSeconds": 0.003508925437927246, + "simulationSeconds": 0.008867025375366211, + "tick": 102 + }, + { + "renderSeconds": 0.0034819841384887695, + "simulationSeconds": 0.01367795467376709, + "tick": 104 + }, + { + "renderSeconds": 0.0037549734115600586, + "simulationSeconds": 0.0067479610443115234, + "tick": 105 + }, + { + "renderSeconds": 0.0037790536880493164, + "simulationSeconds": 0.006502032279968262, + "tick": 106 + }, + { + "renderSeconds": 0.004395961761474609, + "simulationSeconds": 0.006695985794067383, + "tick": 107 + }, + { + "renderSeconds": 0.004243969917297363, + "simulationSeconds": 0.006567955017089844, + "tick": 108 + }, + { + "renderSeconds": 0.004087924957275391, + "simulationSeconds": 0.006557106971740723, + "tick": 109 + }, + { + "renderSeconds": 0.004322052001953125, + "simulationSeconds": 0.016357898712158203, + "tick": 111 + }, + { + "renderSeconds": 0.004091024398803711, + "simulationSeconds": 0.007218003273010254, + "tick": 112 + }, + { + "renderSeconds": 0.003860950469970703, + "simulationSeconds": 0.008021950721740723, + "tick": 113 + }, + { + "renderSeconds": 0.004190921783447266, + "simulationSeconds": 0.006661057472229004, + "tick": 114 + }, + { + "renderSeconds": 0.004203081130981445, + "simulationSeconds": 0.0069779157638549805, + "tick": 115 + }, + { + "renderSeconds": 0.0050209760665893555, + "simulationSeconds": 0.0073059797286987305, + "tick": 116 + }, + { + "renderSeconds": 0.00397801399230957, + "simulationSeconds": 0.007215976715087891, + "tick": 117 + }, + { + "renderSeconds": 0.0035049915313720703, + "simulationSeconds": 0.014433979988098145, + "tick": 119 + }, + { + "renderSeconds": 0.0036290884017944336, + "simulationSeconds": 0.013357996940612793, + "tick": 121 + }, + { + "renderSeconds": 0.004004001617431641, + "simulationSeconds": 0.013767004013061523, + "tick": 123 + }, + { + "renderSeconds": 0.00403594970703125, + "simulationSeconds": 0.007197022438049316, + "tick": 124 + }, + { + "renderSeconds": 0.003116011619567871, + "simulationSeconds": 0.012910008430480957, + "tick": 126 + }, + { + "renderSeconds": 0.00409698486328125, + "simulationSeconds": 0.013172030448913574, + "tick": 128 + }, + { + "renderSeconds": 0.004141092300415039, + "simulationSeconds": 0.013175010681152344, + "tick": 130 + }, + { + "renderSeconds": 0.0034890174865722656, + "simulationSeconds": 0.006542086601257324, + "tick": 131 + }, + { + "renderSeconds": 0.004890084266662598, + "simulationSeconds": 0.0066280364990234375, + "tick": 132 + }, + { + "renderSeconds": 0.003497004508972168, + "simulationSeconds": 0.012243032455444336, + "tick": 134 + }, + { + "renderSeconds": 0.004087924957275391, + "simulationSeconds": 0.008314013481140137, + "tick": 135 + }, + { + "renderSeconds": 0.0038820505142211914, + "simulationSeconds": 0.006896018981933594, + "tick": 136 + }, + { + "renderSeconds": 0.0035309791564941406, + "simulationSeconds": 0.0066070556640625, + "tick": 137 + }, + { + "renderSeconds": 0.004320979118347168, + "simulationSeconds": 0.0061370134353637695, + "tick": 138 + }, + { + "renderSeconds": 0.0038679838180541992, + "simulationSeconds": 0.0065239667892456055, + "tick": 139 + }, + { + "renderSeconds": 0.003280043601989746, + "simulationSeconds": 0.011842966079711914, + "tick": 141 + }, + { + "renderSeconds": 0.004060983657836914, + "simulationSeconds": 0.006436944007873535, + "tick": 142 + }, + { + "renderSeconds": 0.003878951072692871, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.004006028175354004, + "simulationSeconds": 0.00583493709564209, + "tick": 143 + }, + { + "renderSeconds": 0.003926992416381836, + "simulationSeconds": 0.006208062171936035, + "tick": 144 + }, + { + "renderSeconds": 0.0035380125045776367, + "simulationSeconds": 0.006150007247924805, + "tick": 145 + }, + { + "renderSeconds": 0.0034809112548828125, + "simulationSeconds": 0.006675004959106445, + "tick": 146 + }, + { + "renderSeconds": 0.003648042678833008, + "simulationSeconds": 0.006116032600402832, + "tick": 147 + }, + { + "renderSeconds": 0.003805994987487793, + "simulationSeconds": 0.013674020767211914, + "tick": 149 + }, + { + "renderSeconds": 0.004457950592041016, + "simulationSeconds": 0.00677800178527832, + "tick": 150 + }, + { + "renderSeconds": 0.0041359663009643555, + "simulationSeconds": 9.5367431640625e-07, + "tick": 150 + }, + { + "renderSeconds": 0.006011009216308594, + "simulationSeconds": 0.008833050727844238, + "tick": 151 + }, + { + "renderSeconds": 0.004948973655700684, + "simulationSeconds": 0.008466005325317383, + "tick": 152 + }, + { + "renderSeconds": 0.004078030586242676, + "simulationSeconds": 0.020766019821166992, + "tick": 155 + }, + { + "renderSeconds": 0.003885984420776367, + "simulationSeconds": 0.012035965919494629, + "tick": 157 + }, + { + "renderSeconds": 0.0038030147552490234, + "simulationSeconds": 0.00639796257019043, + "tick": 158 + }, + { + "renderSeconds": 0.004332065582275391, + "simulationSeconds": 0.0082930326461792, + "tick": 159 + }, + { + "renderSeconds": 0.0033979415893554688, + "simulationSeconds": 0.005998015403747559, + "tick": 160 + }, + { + "renderSeconds": 0.003981947898864746, + "simulationSeconds": 0.006718993186950684, + "tick": 161 + }, + { + "renderSeconds": 0.003376007080078125, + "simulationSeconds": 0.0065250396728515625, + "tick": 162 + }, + { + "renderSeconds": 0.003632068634033203, + "simulationSeconds": 0.01217496395111084, + "tick": 164 + }, + { + "renderSeconds": 0.0038390159606933594, + "simulationSeconds": 0.006033062934875488, + "tick": 165 + }, + { + "renderSeconds": 0.004907011985778809, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 165 + }, + { + "renderSeconds": 0.003911018371582031, + "simulationSeconds": 0.007362008094787598, + "tick": 166 + }, + { + "renderSeconds": 0.004419088363647461, + "simulationSeconds": 0.007428884506225586, + "tick": 167 + }, + { + "renderSeconds": 0.004128932952880859, + "simulationSeconds": 0.007236957550048828, + "tick": 168 + }, + { + "renderSeconds": 0.004163026809692383, + "simulationSeconds": 0.007089972496032715, + "tick": 169 + }, + { + "renderSeconds": 0.004150032997131348, + "simulationSeconds": 0.021327972412109375, + "tick": 172 + }, + { + "renderSeconds": 0.004903078079223633, + "simulationSeconds": 0.007359027862548828, + "tick": 173 + }, + { + "renderSeconds": 0.004495978355407715, + "simulationSeconds": 0.007358908653259277, + "tick": 174 + }, + { + "renderSeconds": 0.0037020444869995117, + "simulationSeconds": 0.006227970123291016, + "tick": 175 + }, + { + "renderSeconds": 0.003598928451538086, + "simulationSeconds": 0.006590008735656738, + "tick": 176 + }, + { + "renderSeconds": 0.004137992858886719, + "simulationSeconds": 0.00636899471282959, + "tick": 177 + }, + { + "renderSeconds": 0.003350973129272461, + "simulationSeconds": 0.012866973876953125, + "tick": 179 + }, + { + "renderSeconds": 0.004814028739929199, + "simulationSeconds": 0.006592988967895508, + "tick": 180 + }, + { + "renderSeconds": 0.003823995590209961, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.003982067108154297, + "simulationSeconds": 0.006967902183532715, + "tick": 181 + }, + { + "renderSeconds": 0.00406193733215332, + "simulationSeconds": 0.007693052291870117, + "tick": 182 + }, + { + "renderSeconds": 0.0034750699996948242, + "simulationSeconds": 0.00680696964263916, + "tick": 183 + }, + { + "renderSeconds": 0.003641963005065918, + "simulationSeconds": 0.0062830448150634766, + "tick": 184 + }, + { + "renderSeconds": 0.0036280155181884766, + "simulationSeconds": 0.012704968452453613, + "tick": 186 + }, + { + "renderSeconds": 0.0033839941024780273, + "simulationSeconds": 0.0075190067291259766, + "tick": 187 + }, + { + "renderSeconds": 0.0035309791564941406, + "simulationSeconds": 0.006574034690856934, + "tick": 188 + }, + { + "renderSeconds": 0.0043239593505859375, + "simulationSeconds": 0.007003068923950195, + "tick": 189 + }, + { + "renderSeconds": 0.005051970481872559, + "simulationSeconds": 0.007215976715087891, + "tick": 190 + }, + { + "renderSeconds": 0.00365293025970459, + "simulationSeconds": 0.006090044975280762, + "tick": 191 + }, + { + "renderSeconds": 0.004359006881713867, + "simulationSeconds": 0.006169915199279785, + "tick": 192 + }, + { + "renderSeconds": 0.003493070602416992, + "simulationSeconds": 0.012507915496826172, + "tick": 194 + }, + { + "renderSeconds": 0.0036820173263549805, + "simulationSeconds": 0.006420016288757324, + "tick": 195 + }, + { + "renderSeconds": 0.00350797176361084, + "simulationSeconds": 0, + "tick": 195 + }, + { + "renderSeconds": 0.003782987594604492, + "simulationSeconds": 0.006394028663635254, + "tick": 196 + }, + { + "renderSeconds": 0.0036929845809936523, + "simulationSeconds": 0.006496071815490723, + "tick": 197 + }, + { + "renderSeconds": 0.0042989253997802734, + "simulationSeconds": 0.006476998329162598, + "tick": 198 + }, + { + "renderSeconds": 0.003877997398376465, + "simulationSeconds": 0.00625300407409668, + "tick": 199 + }, + { + "renderSeconds": 0.0033540725708007812, + "simulationSeconds": 0.012686014175415039, + "tick": 201 + }, + { + "renderSeconds": 0.004006028175354004, + "simulationSeconds": 0.006309986114501953, + "tick": 202 + }, + { + "renderSeconds": 0.0037609338760375977, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.0036870241165161133, + "simulationSeconds": 0.006628990173339844, + "tick": 203 + }, + { + "renderSeconds": 0.004099011421203613, + "simulationSeconds": 0.006495952606201172, + "tick": 204 + }, + { + "renderSeconds": 0.003751039505004883, + "simulationSeconds": 0.007129073143005371, + "tick": 205 + }, + { + "renderSeconds": 0.003918051719665527, + "simulationSeconds": 0.006705045700073242, + "tick": 206 + }, + { + "renderSeconds": 0.0034639835357666016, + "simulationSeconds": 0.006729006767272949, + "tick": 207 + }, + { + "renderSeconds": 0.004452109336853027, + "simulationSeconds": 0.014405965805053711, + "tick": 209 + }, + { + "renderSeconds": 0.004329085350036621, + "simulationSeconds": 0.014819979667663574, + "tick": 211 + }, + { + "renderSeconds": 0.0036269426345825195, + "simulationSeconds": 0.013521075248718262, + "tick": 213 + }, + { + "renderSeconds": 0.0047109127044677734, + "simulationSeconds": 0.0067299604415893555, + "tick": 214 + }, + { + "renderSeconds": 0.0037310123443603516, + "simulationSeconds": 0.01291501522064209, + "tick": 216 + }, + { + "renderSeconds": 0.003631114959716797, + "simulationSeconds": 0.01240396499633789, + "tick": 218 + }, + { + "renderSeconds": 0.004227995872497559, + "simulationSeconds": 0.012906074523925781, + "tick": 220 + }, + { + "renderSeconds": 0.0033850669860839844, + "simulationSeconds": 0.006309986114501953, + "tick": 221 + }, + { + "renderSeconds": 0.0037260055541992188, + "simulationSeconds": 0.006553053855895996, + "tick": 222 + }, + { + "renderSeconds": 0.0030770301818847656, + "simulationSeconds": 0.012076973915100098, + "tick": 224 + }, + { + "renderSeconds": 0.0036269426345825195, + "simulationSeconds": 0.006373047828674316, + "tick": 225 + }, + { + "renderSeconds": 0.003898024559020996, + "simulationSeconds": 9.5367431640625e-07, + "tick": 225 + }, + { + "renderSeconds": 0.003551006317138672, + "simulationSeconds": 0.006681919097900391, + "tick": 226 + }, + { + "renderSeconds": 0.003347039222717285, + "simulationSeconds": 0.00604701042175293, + "tick": 227 + }, + { + "renderSeconds": 0.004261016845703125, + "simulationSeconds": 0.006991982460021973, + "tick": 228 + }, + { + "renderSeconds": 0.00424504280090332, + "simulationSeconds": 0.006785988807678223, + "tick": 229 + }, + { + "renderSeconds": 0.003880023956298828, + "simulationSeconds": 0.014505982398986816, + "tick": 231 + }, + { + "renderSeconds": 0.006078004837036133, + "simulationSeconds": 0.008588075637817383, + "tick": 232 + }, + { + "renderSeconds": 0.00327301025390625, + "simulationSeconds": 0.013023018836975098, + "tick": 234 + }, + { + "renderSeconds": 0.004068970680236816, + "simulationSeconds": 0.013117074966430664, + "tick": 236 + }, + { + "renderSeconds": 0.004097938537597656, + "simulationSeconds": 0.0074939727783203125, + "tick": 237 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.013670921325683594, + "tick": 239 + }, + { + "renderSeconds": 0.003303050994873047, + "simulationSeconds": 0.006585955619812012, + "tick": 240 + }, + { + "renderSeconds": 0.0038579702377319336, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 240 + }, + { + "renderSeconds": 0.0032950639724731445, + "simulationSeconds": 0.007436990737915039, + "tick": 241 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.0066269636154174805, + "tick": 242 + }, + { + "renderSeconds": 0.002798914909362793, + "simulationSeconds": 0.0070410966873168945, + "tick": 243 + }, + { + "renderSeconds": 0.0031189918518066406, + "simulationSeconds": 0.006647944450378418, + "tick": 244 + }, + { + "renderSeconds": 0.0028069019317626953, + "simulationSeconds": 0.014248013496398926, + "tick": 246 + }, + { + "renderSeconds": 0.0036989450454711914, + "simulationSeconds": 0.007559061050415039, + "tick": 247 + }, + { + "renderSeconds": 0.003756999969482422, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.004058957099914551, + "simulationSeconds": 0.009186029434204102, + "tick": 248 + }, + { + "renderSeconds": 0.003200054168701172, + "simulationSeconds": 0.007493019104003906, + "tick": 249 + }, + { + "renderSeconds": 0.003328084945678711, + "simulationSeconds": 0.007621049880981445, + "tick": 250 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.007378935813903809, + "tick": 251 + }, + { + "renderSeconds": 0.0030760765075683594, + "simulationSeconds": 0.006981968879699707, + "tick": 252 + }, + { + "renderSeconds": 0.00336301326751709, + "simulationSeconds": 0.0137939453125, + "tick": 254 + }, + { + "renderSeconds": 0.003361940383911133, + "simulationSeconds": 0.007506012916564941, + "tick": 255 + }, + { + "renderSeconds": 0.0034090280532836914, + "simulationSeconds": 0.007197022438049316, + "tick": 256 + }, + { + "renderSeconds": 0.003509044647216797, + "simulationSeconds": 0.00795900821685791, + "tick": 257 + }, + { + "renderSeconds": 0.003316044807434082, + "simulationSeconds": 0.006824970245361328, + "tick": 258 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.007524013519287109, + "tick": 259 + }, + { + "renderSeconds": 0.0026030540466308594, + "simulationSeconds": 0.013177990913391113, + "tick": 261 + }, + { + "renderSeconds": 0.002777099609375, + "simulationSeconds": 0.006189942359924316, + "tick": 262 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0, + "tick": 262 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.006819963455200195, + "tick": 263 + }, + { + "renderSeconds": 0.0023920536041259766, + "simulationSeconds": 0.006209015846252441, + "tick": 264 + }, + { + "renderSeconds": 0.0025330781936645508, + "simulationSeconds": 0.0065310001373291016, + "tick": 265 + }, + { + "renderSeconds": 0.0024160146713256836, + "simulationSeconds": 0.0063790082931518555, + "tick": 266 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.006829023361206055, + "tick": 267 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.013662934303283691, + "tick": 269 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.007130980491638184, + "tick": 270 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.035657000000355765, + "moveTicks": 240, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 392, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.22105157375335693, + "preparationSeconds": 0.5357269048690796, + "reducedMotion": false, + "renderSeconds": 0.8667298555374146, + "repetition": 20, + "scenePreparationSeconds": 0.1901109218597412, + "simulationSeconds": 1.8528681993484497, + "snapshotBuildCount": 228, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 36.32854166789912, + "callbackMaxMS": 47.85354167688638, + "postActionRecords": 226, + "run": "BP008-stage-4-rep-20-axis-16383-reduced-false-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.3823796510696411, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0009620189666748047, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000841975212097168, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008400678634643555, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.000886082649230957, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.005351066589355469, + "simulationSeconds": 0.0074689388275146484, + "tick": 1 + }, + { + "renderSeconds": 0.006479024887084961, + "simulationSeconds": 0.011084914207458496, + "tick": 2 + }, + { + "renderSeconds": 0.005443930625915527, + "simulationSeconds": 0.03191709518432617, + "tick": 5 + }, + { + "renderSeconds": 0.004111051559448242, + "simulationSeconds": 0.014603018760681152, + "tick": 7 + }, + { + "renderSeconds": 0.003628969192504883, + "simulationSeconds": 0.006490111351013184, + "tick": 8 + }, + { + "renderSeconds": 0.004476070404052734, + "simulationSeconds": 0.0066269636154174805, + "tick": 9 + }, + { + "renderSeconds": 0.0037430524826049805, + "simulationSeconds": 0.012719035148620605, + "tick": 11 + }, + { + "renderSeconds": 0.004072070121765137, + "simulationSeconds": 0.012866020202636719, + "tick": 13 + }, + { + "renderSeconds": 0.003672957420349121, + "simulationSeconds": 0.012369036674499512, + "tick": 15 + }, + { + "renderSeconds": 0.0036829710006713867, + "simulationSeconds": 0.006677031517028809, + "tick": 16 + }, + { + "renderSeconds": 0.003527045249938965, + "simulationSeconds": 0.006563067436218262, + "tick": 17 + }, + { + "renderSeconds": 0.0036089420318603516, + "simulationSeconds": 0.014246106147766113, + "tick": 19 + }, + { + "renderSeconds": 0.004243016242980957, + "simulationSeconds": 0.013263106346130371, + "tick": 21 + }, + { + "renderSeconds": 0.004217028617858887, + "simulationSeconds": 0.007665038108825684, + "tick": 22 + }, + { + "renderSeconds": 0.004186034202575684, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0035310983657836914, + "simulationSeconds": 0.0068569183349609375, + "tick": 23 + }, + { + "renderSeconds": 0.0037910938262939453, + "simulationSeconds": 0.0066449642181396484, + "tick": 24 + }, + { + "renderSeconds": 0.0041599273681640625, + "simulationSeconds": 0.014567017555236816, + "tick": 26 + }, + { + "renderSeconds": 0.004444003105163574, + "simulationSeconds": 0.014065027236938477, + "tick": 28 + }, + { + "renderSeconds": 0.0042378902435302734, + "simulationSeconds": 0.014922022819519043, + "tick": 30 + }, + { + "renderSeconds": 0.005302071571350098, + "simulationSeconds": 0.0112379789352417, + "tick": 31 + }, + { + "renderSeconds": 0.00374603271484375, + "simulationSeconds": 0.022499918937683105, + "tick": 34 + }, + { + "renderSeconds": 0.0035909414291381836, + "simulationSeconds": 0.02046990394592285, + "tick": 37 + }, + { + "renderSeconds": 0.0037769079208374023, + "simulationSeconds": 0.0065460205078125, + "tick": 38 + }, + { + "renderSeconds": 0.0041779279708862305, + "simulationSeconds": 0.006512999534606934, + "tick": 39 + }, + { + "renderSeconds": 0.003430962562561035, + "simulationSeconds": 0.012420058250427246, + "tick": 41 + }, + { + "renderSeconds": 0.0035489797592163086, + "simulationSeconds": 0.0062329769134521484, + "tick": 42 + }, + { + "renderSeconds": 0.003982067108154297, + "simulationSeconds": 0.0066339969635009766, + "tick": 43 + }, + { + "renderSeconds": 0.004253029823303223, + "simulationSeconds": 0.006249070167541504, + "tick": 44 + }, + { + "renderSeconds": 0.004352092742919922, + "simulationSeconds": 0.0070029497146606445, + "tick": 45 + }, + { + "renderSeconds": 0.0042040348052978516, + "simulationSeconds": 0.007142901420593262, + "tick": 46 + }, + { + "renderSeconds": 0.004148960113525391, + "simulationSeconds": 0.007742047309875488, + "tick": 47 + }, + { + "renderSeconds": 0.0033899545669555664, + "simulationSeconds": 0.015114068984985352, + "tick": 49 + }, + { + "renderSeconds": 0.004022955894470215, + "simulationSeconds": 0.006208062171936035, + "tick": 50 + }, + { + "renderSeconds": 0.0034290552139282227, + "simulationSeconds": 0.006399035453796387, + "tick": 51 + }, + { + "renderSeconds": 0.004103899002075195, + "simulationSeconds": 0.006318092346191406, + "tick": 52 + }, + { + "renderSeconds": 0.004400014877319336, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0037299394607543945, + "simulationSeconds": 0.006425976753234863, + "tick": 53 + }, + { + "renderSeconds": 0.004557967185974121, + "simulationSeconds": 0.006381988525390625, + "tick": 54 + }, + { + "renderSeconds": 0.003339052200317383, + "simulationSeconds": 0.013114094734191895, + "tick": 56 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.012701034545898438, + "tick": 58 + }, + { + "renderSeconds": 0.004387021064758301, + "simulationSeconds": 0.006883978843688965, + "tick": 59 + }, + { + "renderSeconds": 0.0033309459686279297, + "simulationSeconds": 0.0065081119537353516, + "tick": 60 + }, + { + "renderSeconds": 0.0039789676666259766, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0037069320678710938, + "simulationSeconds": 0.006307005882263184, + "tick": 61 + }, + { + "renderSeconds": 0.0034400224685668945, + "simulationSeconds": 0.0063669681549072266, + "tick": 62 + }, + { + "renderSeconds": 0.003740072250366211, + "simulationSeconds": 0.013202071189880371, + "tick": 64 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.007169008255004883, + "tick": 65 + }, + { + "renderSeconds": 0.003775954246520996, + "simulationSeconds": 0.007102012634277344, + "tick": 66 + }, + { + "renderSeconds": 0.003800034523010254, + "simulationSeconds": 0.006582975387573242, + "tick": 67 + }, + { + "renderSeconds": 0.0038950443267822266, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0037840604782104492, + "simulationSeconds": 0.006343960762023926, + "tick": 68 + }, + { + "renderSeconds": 0.003461003303527832, + "simulationSeconds": 0.005972027778625488, + "tick": 69 + }, + { + "renderSeconds": 0.0038900375366210938, + "simulationSeconds": 0.014128923416137695, + "tick": 71 + }, + { + "renderSeconds": 0.0048220157623291016, + "simulationSeconds": 0.008054971694946289, + "tick": 72 + }, + { + "renderSeconds": 0.003901958465576172, + "simulationSeconds": 0.007539987564086914, + "tick": 73 + }, + { + "renderSeconds": 0.005175948143005371, + "simulationSeconds": 0.008219003677368164, + "tick": 74 + }, + { + "renderSeconds": 0.0036280155181884766, + "simulationSeconds": 0.013612031936645508, + "tick": 76 + }, + { + "renderSeconds": 0.0037599802017211914, + "simulationSeconds": 0.01461493968963623, + "tick": 78 + }, + { + "renderSeconds": 0.005005002021789551, + "simulationSeconds": 0.013643980026245117, + "tick": 80 + }, + { + "renderSeconds": 0.0038650035858154297, + "simulationSeconds": 0.013627052307128906, + "tick": 82 + }, + { + "renderSeconds": 0.003675103187561035, + "simulationSeconds": 0.013203024864196777, + "tick": 84 + }, + { + "renderSeconds": 0.004353046417236328, + "simulationSeconds": 0.013458967208862305, + "tick": 86 + }, + { + "renderSeconds": 0.0039910078048706055, + "simulationSeconds": 0.012963056564331055, + "tick": 88 + }, + { + "renderSeconds": 0.0036410093307495117, + "simulationSeconds": 0.006905913352966309, + "tick": 89 + }, + { + "renderSeconds": 0.004542946815490723, + "simulationSeconds": 0.00666201114654541, + "tick": 90 + }, + { + "renderSeconds": 0.0038220882415771484, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.0036100149154663086, + "simulationSeconds": 0.0067729949951171875, + "tick": 91 + }, + { + "renderSeconds": 0.00404810905456543, + "simulationSeconds": 0.006237030029296875, + "tick": 92 + }, + { + "renderSeconds": 0.003728032112121582, + "simulationSeconds": 0.012922048568725586, + "tick": 94 + }, + { + "renderSeconds": 0.004438042640686035, + "simulationSeconds": 0.0073130130767822266, + "tick": 95 + }, + { + "renderSeconds": 0.00424802303314209, + "simulationSeconds": 0.013068079948425293, + "tick": 97 + }, + { + "renderSeconds": 0.004089951515197754, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.004199028015136719, + "simulationSeconds": 0.006896018981933594, + "tick": 98 + }, + { + "renderSeconds": 0.0036870241165161133, + "simulationSeconds": 0.006475925445556641, + "tick": 99 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.012367010116577148, + "tick": 101 + }, + { + "renderSeconds": 0.0039560794830322266, + "simulationSeconds": 0.0069620609283447266, + "tick": 102 + }, + { + "renderSeconds": 0.003491997718811035, + "simulationSeconds": 0.006643056869506836, + "tick": 103 + }, + { + "renderSeconds": 0.004178047180175781, + "simulationSeconds": 0.014662981033325195, + "tick": 105 + }, + { + "renderSeconds": 0.00403594970703125, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.004253029823303223, + "simulationSeconds": 0.007127046585083008, + "tick": 106 + }, + { + "renderSeconds": 0.0038830041885375977, + "simulationSeconds": 0.007007002830505371, + "tick": 107 + }, + { + "renderSeconds": 0.003412008285522461, + "simulationSeconds": 0.013445019721984863, + "tick": 109 + }, + { + "renderSeconds": 0.004168987274169922, + "simulationSeconds": 0.006515979766845703, + "tick": 110 + }, + { + "renderSeconds": 0.003672003746032715, + "simulationSeconds": 0.013051986694335938, + "tick": 112 + }, + { + "renderSeconds": 0.0037909746170043945, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.003836989402770996, + "simulationSeconds": 0.006453990936279297, + "tick": 113 + }, + { + "renderSeconds": 0.003952980041503906, + "simulationSeconds": 0.006537079811096191, + "tick": 114 + }, + { + "renderSeconds": 0.003794074058532715, + "simulationSeconds": 0.012663006782531738, + "tick": 116 + }, + { + "renderSeconds": 0.004598021507263184, + "simulationSeconds": 0.007239103317260742, + "tick": 117 + }, + { + "renderSeconds": 0.004027009010314941, + "simulationSeconds": 0.007511019706726074, + "tick": 118 + }, + { + "renderSeconds": 0.004263043403625488, + "simulationSeconds": 0.016191959381103516, + "tick": 120 + }, + { + "renderSeconds": 0.0038919448852539062, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003836989402770996, + "simulationSeconds": 0.0067539215087890625, + "tick": 121 + }, + { + "renderSeconds": 0.003965020179748535, + "simulationSeconds": 0.0069730281829833984, + "tick": 122 + }, + { + "renderSeconds": 0.0033620595932006836, + "simulationSeconds": 0.012644052505493164, + "tick": 124 + }, + { + "renderSeconds": 0.004781007766723633, + "simulationSeconds": 0.006757020950317383, + "tick": 125 + }, + { + "renderSeconds": 0.003944039344787598, + "simulationSeconds": 0.013942956924438477, + "tick": 127 + }, + { + "renderSeconds": 0.0037299394607543945, + "simulationSeconds": 0.01371002197265625, + "tick": 129 + }, + { + "renderSeconds": 0.004003047943115234, + "simulationSeconds": 0.014189958572387695, + "tick": 131 + }, + { + "renderSeconds": 0.003576040267944336, + "simulationSeconds": 0.01390695571899414, + "tick": 133 + }, + { + "renderSeconds": 0.003576993942260742, + "simulationSeconds": 0.006332039833068848, + "tick": 134 + }, + { + "renderSeconds": 0.0042999982833862305, + "simulationSeconds": 0.006348013877868652, + "tick": 135 + }, + { + "renderSeconds": 0.003970026969909668, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.003795027732849121, + "simulationSeconds": 0.006759047508239746, + "tick": 136 + }, + { + "renderSeconds": 0.0039288997650146484, + "simulationSeconds": 0.006394028663635254, + "tick": 137 + }, + { + "renderSeconds": 0.00356292724609375, + "simulationSeconds": 0.012220978736877441, + "tick": 139 + }, + { + "renderSeconds": 0.0037469863891601562, + "simulationSeconds": 0.005833983421325684, + "tick": 140 + }, + { + "renderSeconds": 0.0041800737380981445, + "simulationSeconds": 0.006621956825256348, + "tick": 141 + }, + { + "renderSeconds": 0.0034630298614501953, + "simulationSeconds": 0.0061609745025634766, + "tick": 142 + }, + { + "renderSeconds": 0.004752039909362793, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 142 + }, + { + "renderSeconds": 0.0038739442825317383, + "simulationSeconds": 0.008022069931030273, + "tick": 143 + }, + { + "renderSeconds": 0.004480957984924316, + "simulationSeconds": 0.00810098648071289, + "tick": 144 + }, + { + "renderSeconds": 0.003928065299987793, + "simulationSeconds": 0.02047288417816162, + "tick": 147 + }, + { + "renderSeconds": 0.003962993621826172, + "simulationSeconds": 0.013463020324707031, + "tick": 149 + }, + { + "renderSeconds": 0.004641056060791016, + "simulationSeconds": 0.007008075714111328, + "tick": 150 + }, + { + "renderSeconds": 0.004072070121765137, + "simulationSeconds": 0.006389021873474121, + "tick": 151 + }, + { + "renderSeconds": 0.00368499755859375, + "simulationSeconds": 0.01250910758972168, + "tick": 152 + }, + { + "renderSeconds": 0.004349946975708008, + "simulationSeconds": 0.018662095069885254, + "tick": 155 + }, + { + "renderSeconds": 0.0038199424743652344, + "simulationSeconds": 0.012687087059020996, + "tick": 157 + }, + { + "renderSeconds": 0.004075050354003906, + "simulationSeconds": 0.012510061264038086, + "tick": 159 + }, + { + "renderSeconds": 0.0035250186920166016, + "simulationSeconds": 0.012823939323425293, + "tick": 161 + }, + { + "renderSeconds": 0.003786921501159668, + "simulationSeconds": 0.013038992881774902, + "tick": 163 + }, + { + "renderSeconds": 0.004086971282958984, + "simulationSeconds": 0.0068579912185668945, + "tick": 164 + }, + { + "renderSeconds": 0.0037980079650878906, + "simulationSeconds": 0.006348013877868652, + "tick": 165 + }, + { + "renderSeconds": 0.003793001174926758, + "simulationSeconds": 0, + "tick": 165 + }, + { + "renderSeconds": 0.003930091857910156, + "simulationSeconds": 0.0064280033111572266, + "tick": 166 + }, + { + "renderSeconds": 0.004079103469848633, + "simulationSeconds": 0.007010936737060547, + "tick": 167 + }, + { + "renderSeconds": 0.0036889314651489258, + "simulationSeconds": 0.012299060821533203, + "tick": 169 + }, + { + "renderSeconds": 0.004621982574462891, + "simulationSeconds": 0.007079005241394043, + "tick": 170 + }, + { + "renderSeconds": 0.0049860477447509766, + "simulationSeconds": 0.007640957832336426, + "tick": 171 + }, + { + "renderSeconds": 0.0042629241943359375, + "simulationSeconds": 0.014397978782653809, + "tick": 173 + }, + { + "renderSeconds": 0.0035979747772216797, + "simulationSeconds": 0.015300989151000977, + "tick": 175 + }, + { + "renderSeconds": 0.004170060157775879, + "simulationSeconds": 0.013422966003417969, + "tick": 177 + }, + { + "renderSeconds": 0.0034700632095336914, + "simulationSeconds": 0.01646590232849121, + "tick": 179 + }, + { + "renderSeconds": 0.003740072250366211, + "simulationSeconds": 0.012803912162780762, + "tick": 181 + }, + { + "renderSeconds": 0.004456043243408203, + "simulationSeconds": 0.006909012794494629, + "tick": 182 + }, + { + "renderSeconds": 0.0033570528030395508, + "simulationSeconds": 0.013221025466918945, + "tick": 184 + }, + { + "renderSeconds": 0.003515005111694336, + "simulationSeconds": 0.006898999214172363, + "tick": 185 + }, + { + "renderSeconds": 0.004351973533630371, + "simulationSeconds": 0.006988048553466797, + "tick": 186 + }, + { + "renderSeconds": 0.0035549402236938477, + "simulationSeconds": 0.006685972213745117, + "tick": 187 + }, + { + "renderSeconds": 0.0036580562591552734, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.0043790340423583984, + "simulationSeconds": 0.006636977195739746, + "tick": 188 + }, + { + "renderSeconds": 0.004633903503417969, + "simulationSeconds": 0.0070220232009887695, + "tick": 189 + }, + { + "renderSeconds": 0.00433194637298584, + "simulationSeconds": 0.01554107666015625, + "tick": 191 + }, + { + "renderSeconds": 0.003290891647338867, + "simulationSeconds": 0.012284994125366211, + "tick": 193 + }, + { + "renderSeconds": 0.0032989978790283203, + "simulationSeconds": 0.013835906982421875, + "tick": 195 + }, + { + "renderSeconds": 0.0038019418716430664, + "simulationSeconds": 0, + "tick": 195 + }, + { + "renderSeconds": 0.0035610198974609375, + "simulationSeconds": 0.006793975830078125, + "tick": 196 + }, + { + "renderSeconds": 0.003638029098510742, + "simulationSeconds": 0.006638050079345703, + "tick": 197 + }, + { + "renderSeconds": 0.0033129453659057617, + "simulationSeconds": 0.012963056564331055, + "tick": 199 + }, + { + "renderSeconds": 0.0041599273681640625, + "simulationSeconds": 0.007212996482849121, + "tick": 200 + }, + { + "renderSeconds": 0.004267096519470215, + "simulationSeconds": 0.006260037422180176, + "tick": 201 + }, + { + "renderSeconds": 0.004278898239135742, + "simulationSeconds": 0.007311105728149414, + "tick": 202 + }, + { + "renderSeconds": 0.005219936370849609, + "simulationSeconds": 0.007436990737915039, + "tick": 203 + }, + { + "renderSeconds": 0.004524946212768555, + "simulationSeconds": 0.007261991500854492, + "tick": 204 + }, + { + "renderSeconds": 0.0037599802017211914, + "simulationSeconds": 0.013834953308105469, + "tick": 206 + }, + { + "renderSeconds": 0.004016995429992676, + "simulationSeconds": 0.013458013534545898, + "tick": 208 + }, + { + "renderSeconds": 0.004127025604248047, + "simulationSeconds": 0.006621003150939941, + "tick": 209 + }, + { + "renderSeconds": 0.00430607795715332, + "simulationSeconds": 0.007748961448669434, + "tick": 210 + }, + { + "renderSeconds": 0.0038410425186157227, + "simulationSeconds": 0, + "tick": 210 + }, + { + "renderSeconds": 0.004395008087158203, + "simulationSeconds": 0.007174968719482422, + "tick": 211 + }, + { + "renderSeconds": 0.009804964065551758, + "simulationSeconds": 0.006242990493774414, + "tick": 212 + }, + { + "renderSeconds": 0.003522038459777832, + "simulationSeconds": 0.019755005836486816, + "tick": 215 + }, + { + "renderSeconds": 0.00474703311920166, + "simulationSeconds": 0.007174015045166016, + "tick": 216 + }, + { + "renderSeconds": 0.004539966583251953, + "simulationSeconds": 0.012917041778564453, + "tick": 218 + }, + { + "renderSeconds": 0.004480957984924316, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 218 + }, + { + "renderSeconds": 0.005222916603088379, + "simulationSeconds": 0.006793022155761719, + "tick": 219 + }, + { + "renderSeconds": 0.0039490461349487305, + "simulationSeconds": 0.013453006744384766, + "tick": 221 + }, + { + "renderSeconds": 0.003502964973449707, + "simulationSeconds": 0.0129469633102417, + "tick": 223 + }, + { + "renderSeconds": 0.004005074501037598, + "simulationSeconds": 0.012969017028808594, + "tick": 225 + }, + { + "renderSeconds": 0.0038579702377319336, + "simulationSeconds": 0.006575942039489746, + "tick": 226 + }, + { + "renderSeconds": 0.00480496883392334, + "simulationSeconds": 0.006806015968322754, + "tick": 227 + }, + { + "renderSeconds": 0.0033600330352783203, + "simulationSeconds": 0.012704968452453613, + "tick": 229 + }, + { + "renderSeconds": 0.004024028778076172, + "simulationSeconds": 0.013638973236083984, + "tick": 231 + }, + { + "renderSeconds": 0.0034569501876831055, + "simulationSeconds": 0.006981015205383301, + "tick": 232 + }, + { + "renderSeconds": 0.0038220882415771484, + "simulationSeconds": 0, + "tick": 232 + }, + { + "renderSeconds": 0.003867030143737793, + "simulationSeconds": 0.006469011306762695, + "tick": 233 + }, + { + "renderSeconds": 0.004094958305358887, + "simulationSeconds": 0.006306052207946777, + "tick": 234 + }, + { + "renderSeconds": 0.0038089752197265625, + "simulationSeconds": 0.012539982795715332, + "tick": 236 + }, + { + "renderSeconds": 0.004538059234619141, + "simulationSeconds": 0.006570935249328613, + "tick": 237 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.006814002990722656, + "tick": 238 + }, + { + "renderSeconds": 0.003648042678833008, + "simulationSeconds": 0.006385922431945801, + "tick": 239 + }, + { + "renderSeconds": 0.003800034523010254, + "simulationSeconds": 0.007007956504821777, + "tick": 240 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.006228923797607422, + "tick": 241 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.0064460039138793945, + "tick": 242 + }, + { + "renderSeconds": 0.003062009811401367, + "simulationSeconds": 0.013988971710205078, + "tick": 244 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0.0068569183349609375, + "tick": 245 + }, + { + "renderSeconds": 0.002819061279296875, + "simulationSeconds": 0.006303071975708008, + "tick": 246 + }, + { + "renderSeconds": 0.0028429031372070312, + "simulationSeconds": 0.006743073463439941, + "tick": 247 + }, + { + "renderSeconds": 0.0025429725646972656, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.002538919448852539, + "simulationSeconds": 0.006270051002502441, + "tick": 248 + }, + { + "renderSeconds": 0.0029529333114624023, + "simulationSeconds": 0.006546974182128906, + "tick": 249 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.014762043952941895, + "tick": 251 + }, + { + "renderSeconds": 0.003612041473388672, + "simulationSeconds": 0.007136106491088867, + "tick": 252 + }, + { + "renderSeconds": 0.003309965133666992, + "simulationSeconds": 0.00757598876953125, + "tick": 253 + }, + { + "renderSeconds": 0.0033599138259887695, + "simulationSeconds": 0.007371068000793457, + "tick": 254 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.006871938705444336, + "tick": 255 + }, + { + "renderSeconds": 0.0031141042709350586, + "simulationSeconds": 9.5367431640625e-07, + "tick": 255 + }, + { + "renderSeconds": 0.0025069713592529297, + "simulationSeconds": 0.007112026214599609, + "tick": 256 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.006582021713256836, + "tick": 257 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.012472987174987793, + "tick": 259 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0.006552934646606445, + "tick": 260 + }, + { + "renderSeconds": 0.0026929378509521484, + "simulationSeconds": 0.007109999656677246, + "tick": 261 + }, + { + "renderSeconds": 0.003098011016845703, + "simulationSeconds": 0.0074759721755981445, + "tick": 262 + }, + { + "renderSeconds": 0.002958059310913086, + "simulationSeconds": 0, + "tick": 262 + }, + { + "renderSeconds": 0.003576993942260742, + "simulationSeconds": 0.006886005401611328, + "tick": 263 + }, + { + "renderSeconds": 0.0041120052337646484, + "simulationSeconds": 0.00795602798461914, + "tick": 264 + }, + { + "renderSeconds": 0.003503084182739258, + "simulationSeconds": 0.01839900016784668, + "tick": 266 + }, + { + "renderSeconds": 0.0038439035415649414, + "simulationSeconds": 0.017921924591064453, + "tick": 268 + }, + { + "renderSeconds": 0.003466010093688965, + "simulationSeconds": 0.009042024612426758, + "tick": 269 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.015027999877929688, + "tick": 271 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03998945833882317, + "moveTicks": 240, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 368, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.22021543979644775, + "preparationSeconds": 0.5098919868469238, + "reducedMotion": true, + "renderSeconds": 0.8290549516677856, + "repetition": 20, + "scenePreparationSeconds": 0.18441998958587646, + "simulationSeconds": 1.8788349628448486, + "snapshotBuildCount": 216, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 38.77233332605101, + "callbackMaxMS": 47.8986666421406, + "postActionRecords": 214, + "run": "BP008-stage-4-rep-20-axis-16383-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.20372653007507324, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0009340047836303711, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0008319616317749023, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008950233459472656, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000805974006652832, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0048329830169677734, + "simulationSeconds": 0.006012916564941406, + "tick": 1 + }, + { + "renderSeconds": 0.004897952079772949, + "simulationSeconds": 0.009580016136169434, + "tick": 2 + }, + { + "renderSeconds": 0.006024003028869629, + "simulationSeconds": 0.011569976806640625, + "tick": 3 + }, + { + "renderSeconds": 0.004840970039367676, + "simulationSeconds": 0.0347520112991333, + "tick": 6 + }, + { + "renderSeconds": 0.004541993141174316, + "simulationSeconds": 0.030278921127319336, + "tick": 10 + }, + { + "renderSeconds": 0.0042160749435424805, + "simulationSeconds": 0.014927983283996582, + "tick": 12 + }, + { + "renderSeconds": 0.004182100296020508, + "simulationSeconds": 0.014459013938903809, + "tick": 14 + }, + { + "renderSeconds": 0.003741025924682617, + "simulationSeconds": 0.012221097946166992, + "tick": 16 + }, + { + "renderSeconds": 0.0035169124603271484, + "simulationSeconds": 0.0065310001373291016, + "tick": 17 + }, + { + "renderSeconds": 0.0035799741744995117, + "simulationSeconds": 0.006093025207519531, + "tick": 18 + }, + { + "renderSeconds": 0.0035670995712280273, + "simulationSeconds": 0.012305021286010742, + "tick": 20 + }, + { + "renderSeconds": 0.0032879114151000977, + "simulationSeconds": 0.01332998275756836, + "tick": 22 + }, + { + "renderSeconds": 0.0040160417556762695, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.003925919532775879, + "simulationSeconds": 0.007207989692687988, + "tick": 23 + }, + { + "renderSeconds": 0.0035840272903442383, + "simulationSeconds": 0.006058096885681152, + "tick": 24 + }, + { + "renderSeconds": 0.0036149024963378906, + "simulationSeconds": 0.006471991539001465, + "tick": 25 + }, + { + "renderSeconds": 0.004294991493225098, + "simulationSeconds": 0.006329059600830078, + "tick": 26 + }, + { + "renderSeconds": 0.0034810304641723633, + "simulationSeconds": 0.013067007064819336, + "tick": 28 + }, + { + "renderSeconds": 0.004681944847106934, + "simulationSeconds": 0.0068819522857666016, + "tick": 29 + }, + { + "renderSeconds": 0.00389707088470459, + "simulationSeconds": 0.006877899169921875, + "tick": 30 + }, + { + "renderSeconds": 0.0038660764694213867, + "simulationSeconds": 0.0065000057220458984, + "tick": 31 + }, + { + "renderSeconds": 0.003931999206542969, + "simulationSeconds": 0.006293058395385742, + "tick": 32 + }, + { + "renderSeconds": 0.003647923469543457, + "simulationSeconds": 0.0062329769134521484, + "tick": 33 + }, + { + "renderSeconds": 0.0041179656982421875, + "simulationSeconds": 0.014461994171142578, + "tick": 35 + }, + { + "renderSeconds": 0.004217028617858887, + "simulationSeconds": 0.007248997688293457, + "tick": 36 + }, + { + "renderSeconds": 0.004373073577880859, + "simulationSeconds": 0.007224082946777344, + "tick": 37 + }, + { + "renderSeconds": 0.0046269893646240234, + "simulationSeconds": 0.007259011268615723, + "tick": 38 + }, + { + "renderSeconds": 0.005642056465148926, + "simulationSeconds": 0.009272098541259766, + "tick": 39 + }, + { + "renderSeconds": 0.004230976104736328, + "simulationSeconds": 0.007781028747558594, + "tick": 40 + }, + { + "renderSeconds": 0.003461003303527832, + "simulationSeconds": 0.020614027976989746, + "tick": 43 + }, + { + "renderSeconds": 0.004442930221557617, + "simulationSeconds": 0.0066890716552734375, + "tick": 44 + }, + { + "renderSeconds": 0.003535032272338867, + "simulationSeconds": 0.006302952766418457, + "tick": 45 + }, + { + "renderSeconds": 0.004681944847106934, + "simulationSeconds": 0.00760805606842041, + "tick": 46 + }, + { + "renderSeconds": 0.0037289857864379883, + "simulationSeconds": 0.0061920881271362305, + "tick": 47 + }, + { + "renderSeconds": 0.0035419464111328125, + "simulationSeconds": 0.006382942199707031, + "tick": 48 + }, + { + "renderSeconds": 0.0032089948654174805, + "simulationSeconds": 0.013096094131469727, + "tick": 50 + }, + { + "renderSeconds": 0.0035660266876220703, + "simulationSeconds": 0.0060759782791137695, + "tick": 51 + }, + { + "renderSeconds": 0.0039060115814208984, + "simulationSeconds": 0.006981968879699707, + "tick": 52 + }, + { + "renderSeconds": 0.003986954689025879, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.006639957427978516, + "simulationSeconds": 0.009832978248596191, + "tick": 53 + }, + { + "renderSeconds": 0.006662964820861816, + "simulationSeconds": 0.040360093116760254, + "tick": 56 + }, + { + "renderSeconds": 0.004022002220153809, + "simulationSeconds": 0.02343893051147461, + "tick": 59 + }, + { + "renderSeconds": 0.0036679506301879883, + "simulationSeconds": 0.018793940544128418, + "tick": 62 + }, + { + "renderSeconds": 0.0038470029830932617, + "simulationSeconds": 0.012004971504211426, + "tick": 64 + }, + { + "renderSeconds": 0.0034040212631225586, + "simulationSeconds": 0.014001011848449707, + "tick": 66 + }, + { + "renderSeconds": 0.003600001335144043, + "simulationSeconds": 0.007146000862121582, + "tick": 67 + }, + { + "renderSeconds": 0.0031180381774902344, + "simulationSeconds": 0.0067119598388671875, + "tick": 68 + }, + { + "renderSeconds": 0.0035109519958496094, + "simulationSeconds": 0.006502032279968262, + "tick": 69 + }, + { + "renderSeconds": 0.0036929845809936523, + "simulationSeconds": 0.006145000457763672, + "tick": 70 + }, + { + "renderSeconds": 0.003388047218322754, + "simulationSeconds": 0.006584048271179199, + "tick": 71 + }, + { + "renderSeconds": 0.003674030303955078, + "simulationSeconds": 0.014045953750610352, + "tick": 73 + }, + { + "renderSeconds": 0.004106998443603516, + "simulationSeconds": 0.007114052772521973, + "tick": 74 + }, + { + "renderSeconds": 0.004651069641113281, + "simulationSeconds": 0.007614016532897949, + "tick": 75 + }, + { + "renderSeconds": 0.00391697883605957, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0053250789642333984, + "simulationSeconds": 0.007613062858581543, + "tick": 76 + }, + { + "renderSeconds": 0.0039179325103759766, + "simulationSeconds": 0.007006049156188965, + "tick": 77 + }, + { + "renderSeconds": 0.004194021224975586, + "simulationSeconds": 0.007794022560119629, + "tick": 78 + }, + { + "renderSeconds": 0.003996014595031738, + "simulationSeconds": 0.018748044967651367, + "tick": 81 + }, + { + "renderSeconds": 0.0033330917358398438, + "simulationSeconds": 0.006187915802001953, + "tick": 82 + }, + { + "renderSeconds": 0.003998994827270508, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 82 + }, + { + "renderSeconds": 0.00386202335357666, + "simulationSeconds": 0.006351947784423828, + "tick": 83 + }, + { + "renderSeconds": 0.0038750171661376953, + "simulationSeconds": 0.0068160295486450195, + "tick": 84 + }, + { + "renderSeconds": 0.003813028335571289, + "simulationSeconds": 0.006476044654846191, + "tick": 85 + }, + { + "renderSeconds": 0.003755927085876465, + "simulationSeconds": 0.006492018699645996, + "tick": 86 + }, + { + "renderSeconds": 0.0038100481033325195, + "simulationSeconds": 0.01214599609375, + "tick": 88 + }, + { + "renderSeconds": 0.004153013229370117, + "simulationSeconds": 0.006619095802307129, + "tick": 89 + }, + { + "renderSeconds": 0.0033169984817504883, + "simulationSeconds": 0.006011962890625, + "tick": 90 + }, + { + "renderSeconds": 0.004150986671447754, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0035049915313720703, + "simulationSeconds": 0.006571054458618164, + "tick": 91 + }, + { + "renderSeconds": 0.0037720203399658203, + "simulationSeconds": 0.006682038307189941, + "tick": 92 + }, + { + "renderSeconds": 0.003307938575744629, + "simulationSeconds": 0.0067490339279174805, + "tick": 93 + }, + { + "renderSeconds": 0.0036090612411499023, + "simulationSeconds": 0.01344907283782959, + "tick": 95 + }, + { + "renderSeconds": 0.004158973693847656, + "simulationSeconds": 0.013080000877380371, + "tick": 97 + }, + { + "renderSeconds": 0.0040400028228759766, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.00433194637298584, + "simulationSeconds": 0.0060950517654418945, + "tick": 98 + }, + { + "renderSeconds": 0.0036219358444213867, + "simulationSeconds": 0.0062149763107299805, + "tick": 99 + }, + { + "renderSeconds": 0.0038889646530151367, + "simulationSeconds": 0.006220102310180664, + "tick": 100 + }, + { + "renderSeconds": 0.003498077392578125, + "simulationSeconds": 0.006078958511352539, + "tick": 101 + }, + { + "renderSeconds": 0.003549933433532715, + "simulationSeconds": 0.01190805435180664, + "tick": 103 + }, + { + "renderSeconds": 0.003611922264099121, + "simulationSeconds": 0.006422996520996094, + "tick": 104 + }, + { + "renderSeconds": 0.0040531158447265625, + "simulationSeconds": 0.00653994083404541, + "tick": 105 + }, + { + "renderSeconds": 0.00383603572845459, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.003860950469970703, + "simulationSeconds": 0.006615996360778809, + "tick": 106 + }, + { + "renderSeconds": 0.0039479732513427734, + "simulationSeconds": 0.006914019584655762, + "tick": 107 + }, + { + "renderSeconds": 0.004192948341369629, + "simulationSeconds": 0.006699085235595703, + "tick": 108 + }, + { + "renderSeconds": 0.003859996795654297, + "simulationSeconds": 0.013661980628967285, + "tick": 110 + }, + { + "renderSeconds": 0.0042209625244140625, + "simulationSeconds": 0.0073059797286987305, + "tick": 111 + }, + { + "renderSeconds": 0.003824949264526367, + "simulationSeconds": 0.006396055221557617, + "tick": 112 + }, + { + "renderSeconds": 0.004217982292175293, + "simulationSeconds": 0.0069370269775390625, + "tick": 113 + }, + { + "renderSeconds": 0.0034689903259277344, + "simulationSeconds": 0.006227016448974609, + "tick": 114 + }, + { + "renderSeconds": 0.00406801700592041, + "simulationSeconds": 0.006687045097351074, + "tick": 115 + }, + { + "renderSeconds": 0.0042819976806640625, + "simulationSeconds": 0.006391048431396484, + "tick": 116 + }, + { + "renderSeconds": 0.003751039505004883, + "simulationSeconds": 0.013612985610961914, + "tick": 118 + }, + { + "renderSeconds": 0.004641056060791016, + "simulationSeconds": 0.0066449642181396484, + "tick": 119 + }, + { + "renderSeconds": 0.0037729740142822266, + "simulationSeconds": 0.006419062614440918, + "tick": 120 + }, + { + "renderSeconds": 0.0031930208206176758, + "simulationSeconds": 0.007120966911315918, + "tick": 121 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.006128907203674316, + "tick": 122 + }, + { + "renderSeconds": 0.002563953399658203, + "simulationSeconds": 0.006985068321228027, + "tick": 123 + }, + { + "renderSeconds": 0.0025260448455810547, + "simulationSeconds": 0.012392044067382812, + "tick": 125 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.006288051605224609, + "tick": 126 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.006762981414794922, + "tick": 127 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0023839473724365234, + "simulationSeconds": 0.006083011627197266, + "tick": 128 + }, + { + "renderSeconds": 0.0024080276489257812, + "simulationSeconds": 0.006208062171936035, + "tick": 129 + }, + { + "renderSeconds": 0.002296924591064453, + "simulationSeconds": 0.005874037742614746, + "tick": 130 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006456971168518066, + "tick": 131 + }, + { + "renderSeconds": 0.0024089813232421875, + "simulationSeconds": 0.012611031532287598, + "tick": 133 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.006237983703613281, + "tick": 134 + }, + { + "renderSeconds": 0.0042220354080200195, + "simulationSeconds": 0.006947994232177734, + "tick": 135 + }, + { + "renderSeconds": 0.003200054168701172, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.0071489810943603516, + "tick": 136 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.006700992584228516, + "tick": 137 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.007427096366882324, + "tick": 138 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.013649940490722656, + "tick": 140 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.006155967712402344, + "tick": 141 + }, + { + "renderSeconds": 0.0030989646911621094, + "simulationSeconds": 0.006018996238708496, + "tick": 142 + }, + { + "renderSeconds": 0.0049179792404174805, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.005814909934997559, + "tick": 143 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.006358027458190918, + "tick": 144 + }, + { + "renderSeconds": 0.0022859573364257812, + "simulationSeconds": 0.005843043327331543, + "tick": 145 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006083965301513672, + "tick": 146 + }, + { + "renderSeconds": 0.002635955810546875, + "simulationSeconds": 0.01341092586517334, + "tick": 148 + }, + { + "renderSeconds": 0.0024390220642089844, + "simulationSeconds": 0.006652951240539551, + "tick": 149 + }, + { + "renderSeconds": 0.0029250383377075195, + "simulationSeconds": 0.006452083587646484, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04021725000347942, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 190, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.12367689609527588, + "preparationSeconds": 0.5470890998840332, + "reducedMotion": false, + "renderSeconds": 0.46741461753845215, + "repetition": 20, + "scenePreparationSeconds": 0.2050989866256714, + "simulationSeconds": 1.0460721254348755, + "snapshotBuildCount": 128, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 37.20345834153704, + "callbackMaxMS": 63.7199166812934, + "postActionRecords": 126, + "run": "BP008-stage-4-rep-20-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.16137444972991943, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0009610652923583984, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009430646896362305, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009840726852416992, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.005129098892211914, + "simulationSeconds": 0.006956934928894043, + "tick": 1 + }, + { + "renderSeconds": 0.005321979522705078, + "simulationSeconds": 0.00863504409790039, + "tick": 2 + }, + { + "renderSeconds": 0.004948019981384277, + "simulationSeconds": 0.010093927383422852, + "tick": 3 + }, + { + "renderSeconds": 0.0063980817794799805, + "simulationSeconds": 0.01777493953704834, + "tick": 5 + }, + { + "renderSeconds": 0.004392027854919434, + "simulationSeconds": 0.014593958854675293, + "tick": 7 + }, + { + "renderSeconds": 0.0038700103759765625, + "simulationSeconds": 0.054957032203674316, + "tick": 16 + }, + { + "renderSeconds": 0.0033620595932006836, + "simulationSeconds": 0.02437901496887207, + "tick": 20 + }, + { + "renderSeconds": 0.0037260055541992188, + "simulationSeconds": 0.03730499744415283, + "tick": 26 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.053771018981933594, + "tick": 35 + }, + { + "renderSeconds": 0.0035120248794555664, + "simulationSeconds": 0.024008989334106445, + "tick": 39 + }, + { + "renderSeconds": 0.003605961799621582, + "simulationSeconds": 0.01934802532196045, + "tick": 42 + }, + { + "renderSeconds": 0.0037969350814819336, + "simulationSeconds": 0.013709068298339844, + "tick": 44 + }, + { + "renderSeconds": 0.004294037818908691, + "simulationSeconds": 0.013287067413330078, + "tick": 46 + }, + { + "renderSeconds": 0.004248976707458496, + "simulationSeconds": 0.012979984283447266, + "tick": 48 + }, + { + "renderSeconds": 0.003677964210510254, + "simulationSeconds": 0.006608009338378906, + "tick": 49 + }, + { + "renderSeconds": 0.003836989402770996, + "simulationSeconds": 0.006472945213317871, + "tick": 50 + }, + { + "renderSeconds": 0.003401041030883789, + "simulationSeconds": 0.006147980690002441, + "tick": 51 + }, + { + "renderSeconds": 0.003593921661376953, + "simulationSeconds": 0.007097005844116211, + "tick": 52 + }, + { + "renderSeconds": 0.003924965858459473, + "simulationSeconds": 0.013957977294921875, + "tick": 54 + }, + { + "renderSeconds": 0.004286050796508789, + "simulationSeconds": 0.007065892219543457, + "tick": 55 + }, + { + "renderSeconds": 0.004211068153381348, + "simulationSeconds": 0.01547694206237793, + "tick": 57 + }, + { + "renderSeconds": 0.0039130449295043945, + "simulationSeconds": 0.007086038589477539, + "tick": 58 + }, + { + "renderSeconds": 0.003612995147705078, + "simulationSeconds": 0.00630795955657959, + "tick": 59 + }, + { + "renderSeconds": 0.003913998603820801, + "simulationSeconds": 0.006012916564941406, + "tick": 60 + }, + { + "renderSeconds": 0.0038160085678100586, + "simulationSeconds": 0.014725923538208008, + "tick": 62 + }, + { + "renderSeconds": 0.003677964210510254, + "simulationSeconds": 0.006612062454223633, + "tick": 63 + }, + { + "renderSeconds": 0.004087924957275391, + "simulationSeconds": 0.0071179866790771484, + "tick": 64 + }, + { + "renderSeconds": 0.003941059112548828, + "simulationSeconds": 0.012841939926147461, + "tick": 66 + }, + { + "renderSeconds": 0.003912925720214844, + "simulationSeconds": 0.006582021713256836, + "tick": 67 + }, + { + "renderSeconds": 0.0037779808044433594, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.003307938575744629, + "simulationSeconds": 0.012434005737304688, + "tick": 69 + }, + { + "renderSeconds": 0.003750920295715332, + "simulationSeconds": 0.006194949150085449, + "tick": 70 + }, + { + "renderSeconds": 0.0032929182052612305, + "simulationSeconds": 0.006007075309753418, + "tick": 71 + }, + { + "renderSeconds": 0.00380098819732666, + "simulationSeconds": 0.007341980934143066, + "tick": 72 + }, + { + "renderSeconds": 0.004354953765869141, + "simulationSeconds": 0.007175922393798828, + "tick": 73 + }, + { + "renderSeconds": 0.003934025764465332, + "simulationSeconds": 0.007560014724731445, + "tick": 74 + }, + { + "renderSeconds": 0.005809903144836426, + "simulationSeconds": 0.008978962898254395, + "tick": 75 + }, + { + "renderSeconds": 0.0042650699615478516, + "simulationSeconds": 0.014104962348937988, + "tick": 77 + }, + { + "renderSeconds": 0.0044460296630859375, + "simulationSeconds": 0.0138930082321167, + "tick": 79 + }, + { + "renderSeconds": 0.0036760568618774414, + "simulationSeconds": 0.01221001148223877, + "tick": 81 + }, + { + "renderSeconds": 0.0036638975143432617, + "simulationSeconds": 0.01194608211517334, + "tick": 83 + }, + { + "renderSeconds": 0.0038470029830932617, + "simulationSeconds": 0.013270020484924316, + "tick": 85 + }, + { + "renderSeconds": 0.003789067268371582, + "simulationSeconds": 0.006846904754638672, + "tick": 86 + }, + { + "renderSeconds": 0.004004001617431641, + "simulationSeconds": 0.008275985717773438, + "tick": 87 + }, + { + "renderSeconds": 0.003358006477355957, + "simulationSeconds": 0.013007044792175293, + "tick": 89 + }, + { + "renderSeconds": 0.003920078277587891, + "simulationSeconds": 0.0061719417572021484, + "tick": 90 + }, + { + "renderSeconds": 0.00492405891418457, + "simulationSeconds": 0.006504058837890625, + "tick": 91 + }, + { + "renderSeconds": 0.003867030143737793, + "simulationSeconds": 0.006793975830078125, + "tick": 92 + }, + { + "renderSeconds": 0.004395008087158203, + "simulationSeconds": 0.007205009460449219, + "tick": 93 + }, + { + "renderSeconds": 0.0036319494247436523, + "simulationSeconds": 0.0062580108642578125, + "tick": 94 + }, + { + "renderSeconds": 0.004328012466430664, + "simulationSeconds": 0.007769942283630371, + "tick": 95 + }, + { + "renderSeconds": 0.003964066505432129, + "simulationSeconds": 0.014732003211975098, + "tick": 97 + }, + { + "renderSeconds": 0.004294991493225098, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.004456043243408203, + "simulationSeconds": 0.015480995178222656, + "tick": 99 + }, + { + "renderSeconds": 0.0037310123443603516, + "simulationSeconds": 0.013365983963012695, + "tick": 101 + }, + { + "renderSeconds": 0.003957986831665039, + "simulationSeconds": 0.013511896133422852, + "tick": 103 + }, + { + "renderSeconds": 0.0036019086837768555, + "simulationSeconds": 0.012975096702575684, + "tick": 105 + }, + { + "renderSeconds": 0.004148006439208984, + "simulationSeconds": 0.006181955337524414, + "tick": 106 + }, + { + "renderSeconds": 0.0035779476165771484, + "simulationSeconds": 0.00623011589050293, + "tick": 107 + }, + { + "renderSeconds": 0.0037910938262939453, + "simulationSeconds": 0.006042003631591797, + "tick": 108 + }, + { + "renderSeconds": 0.0038039684295654297, + "simulationSeconds": 0.006021022796630859, + "tick": 109 + }, + { + "renderSeconds": 0.004071950912475586, + "simulationSeconds": 0.006510019302368164, + "tick": 110 + }, + { + "renderSeconds": 0.0039000511169433594, + "simulationSeconds": 0.007274985313415527, + "tick": 111 + }, + { + "renderSeconds": 0.004925966262817383, + "simulationSeconds": 0.006936073303222656, + "tick": 112 + }, + { + "renderSeconds": 0.0039789676666259766, + "simulationSeconds": 0.018579959869384766, + "tick": 114 + }, + { + "renderSeconds": 0.003854036331176758, + "simulationSeconds": 0.016318917274475098, + "tick": 116 + }, + { + "renderSeconds": 0.005421042442321777, + "simulationSeconds": 0.007233023643493652, + "tick": 117 + }, + { + "renderSeconds": 0.004149079322814941, + "simulationSeconds": 0.014562010765075684, + "tick": 119 + }, + { + "renderSeconds": 0.0037620067596435547, + "simulationSeconds": 0.006932973861694336, + "tick": 120 + }, + { + "renderSeconds": 0.004231929779052734, + "simulationSeconds": 0.006133079528808594, + "tick": 121 + }, + { + "renderSeconds": 0.0026650428771972656, + "simulationSeconds": 0.006166934967041016, + "tick": 122 + }, + { + "renderSeconds": 0.002705097198486328, + "simulationSeconds": 0.007212996482849121, + "tick": 123 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.006631016731262207, + "tick": 124 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.006199002265930176, + "tick": 125 + }, + { + "renderSeconds": 0.002460956573486328, + "simulationSeconds": 0.006299018859863281, + "tick": 126 + }, + { + "renderSeconds": 0.0025190114974975586, + "simulationSeconds": 0.0067740678787231445, + "tick": 127 + }, + { + "renderSeconds": 0.0029959678649902344, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0030170679092407227, + "simulationSeconds": 0.014070987701416016, + "tick": 129 + }, + { + "renderSeconds": 0.0024389028549194336, + "simulationSeconds": 0.006078004837036133, + "tick": 130 + }, + { + "renderSeconds": 0.0028039216995239258, + "simulationSeconds": 0.007257938385009766, + "tick": 131 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.006332993507385254, + "tick": 132 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.006775975227355957, + "tick": 133 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.00758206844329834, + "tick": 134 + }, + { + "renderSeconds": 0.003428936004638672, + "simulationSeconds": 0.00725400447845459, + "tick": 135 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.007584929466247559, + "tick": 136 + }, + { + "renderSeconds": 0.003593921661376953, + "simulationSeconds": 0.008409976959228516, + "tick": 137 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.006878018379211426, + "tick": 138 + }, + { + "renderSeconds": 0.003459930419921875, + "simulationSeconds": 0.009388923645019531, + "tick": 139 + }, + { + "renderSeconds": 0.0035140514373779297, + "simulationSeconds": 0.008150100708007812, + "tick": 140 + }, + { + "renderSeconds": 0.0035370588302612305, + "simulationSeconds": 0.007281899452209473, + "tick": 141 + }, + { + "renderSeconds": 0.0029839277267456055, + "simulationSeconds": 0.0067250728607177734, + "tick": 142 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.014461040496826172, + "tick": 144 + }, + { + "renderSeconds": 0.0033670663833618164, + "simulationSeconds": 0.007125973701477051, + "tick": 145 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.0071010589599609375, + "tick": 146 + }, + { + "renderSeconds": 0.004279017448425293, + "simulationSeconds": 0.0075719356536865234, + "tick": 147 + }, + { + "renderSeconds": 0.0028780698776245117, + "simulationSeconds": 0.007668018341064453, + "tick": 148 + }, + { + "renderSeconds": 0.0032500028610229492, + "simulationSeconds": 0.007133007049560547, + "tick": 149 + }, + { + "renderSeconds": 0.00297391414642334, + "simulationSeconds": 0.011805057525634766, + "tick": 151 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03815266664605588, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 138, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.10181879997253418, + "preparationSeconds": 0.5329940319061279, + "reducedMotion": true, + "renderSeconds": 0.37427818775177, + "repetition": 20, + "scenePreparationSeconds": 0.18617093563079834, + "simulationSeconds": 1.0288056135177612, + "snapshotBuildCount": 102, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 66.48433333612047, + "callbackMaxMS": 152.73875001003034, + "postActionRecords": 100, + "run": "BP008-stage-4-rep-20-axis-32767-reduced-true-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.775086522102356, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.0009949207305908203, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0009130239486694336, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010410547256469727, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010869503021240234, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0036519765853881836, + "simulationSeconds": 0.01149594783782959, + "tick": 2 + }, + { + "renderSeconds": 0.004461050033569336, + "simulationSeconds": 0.0075490474700927734, + "tick": 3 + }, + { + "renderSeconds": 0.005048036575317383, + "simulationSeconds": 0.008684992790222168, + "tick": 4 + }, + { + "renderSeconds": 0.004647016525268555, + "simulationSeconds": 0.018411993980407715, + "tick": 6 + }, + { + "renderSeconds": 0.005788087844848633, + "simulationSeconds": 0.009310007095336914, + "tick": 7 + }, + { + "renderSeconds": 0.004046082496643066, + "simulationSeconds": 0.008419990539550781, + "tick": 8 + }, + { + "renderSeconds": 0.004357099533081055, + "simulationSeconds": 0.014684915542602539, + "tick": 10 + }, + { + "renderSeconds": 0.003583073616027832, + "simulationSeconds": 0.012449979782104492, + "tick": 12 + }, + { + "renderSeconds": 0.0033379793167114258, + "simulationSeconds": 0.013038992881774902, + "tick": 14 + }, + { + "renderSeconds": 0.003929018974304199, + "simulationSeconds": 0.007067084312438965, + "tick": 15 + }, + { + "renderSeconds": 0.004153013229370117, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0035849809646606445, + "simulationSeconds": 0.015488028526306152, + "tick": 17 + }, + { + "renderSeconds": 0.0038470029830932617, + "simulationSeconds": 0.01469409465789795, + "tick": 19 + }, + { + "renderSeconds": 0.004004001617431641, + "simulationSeconds": 0.013725042343139648, + "tick": 21 + }, + { + "renderSeconds": 0.0037000179290771484, + "simulationSeconds": 0.01297307014465332, + "tick": 23 + }, + { + "renderSeconds": 0.003480076789855957, + "simulationSeconds": 0.013165950775146484, + "tick": 25 + }, + { + "renderSeconds": 0.003838062286376953, + "simulationSeconds": 0.0130690336227417, + "tick": 27 + }, + { + "renderSeconds": 0.0038100481033325195, + "simulationSeconds": 0.01244497299194336, + "tick": 29 + }, + { + "renderSeconds": 0.0035369396209716797, + "simulationSeconds": 0.006497025489807129, + "tick": 30 + }, + { + "renderSeconds": 0.0034389495849609375, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.013309001922607422, + "tick": 32 + }, + { + "renderSeconds": 0.00412297248840332, + "simulationSeconds": 0.006278038024902344, + "tick": 33 + }, + { + "renderSeconds": 0.004147052764892578, + "simulationSeconds": 0.006177067756652832, + "tick": 34 + }, + { + "renderSeconds": 0.0038989782333374023, + "simulationSeconds": 0.0064040422439575195, + "tick": 35 + }, + { + "renderSeconds": 0.0038089752197265625, + "simulationSeconds": 0.0067539215087890625, + "tick": 36 + }, + { + "renderSeconds": 0.004233002662658691, + "simulationSeconds": 0.007112979888916016, + "tick": 37 + }, + { + "renderSeconds": 0.0040520429611206055, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.004572033882141113, + "simulationSeconds": 0.007411003112792969, + "tick": 38 + }, + { + "renderSeconds": 0.004651904106140137, + "simulationSeconds": 0.014940023422241211, + "tick": 40 + }, + { + "renderSeconds": 0.0037859678268432617, + "simulationSeconds": 0.012697100639343262, + "tick": 42 + }, + { + "renderSeconds": 0.0037010908126831055, + "simulationSeconds": 0.013540029525756836, + "tick": 44 + }, + { + "renderSeconds": 0.003769993782043457, + "simulationSeconds": 0.006670951843261719, + "tick": 45 + }, + { + "renderSeconds": 0.003933906555175781, + "simulationSeconds": 0.012457966804504395, + "tick": 47 + }, + { + "renderSeconds": 0.0034629106521606445, + "simulationSeconds": 0.006657004356384277, + "tick": 48 + }, + { + "renderSeconds": 0.004248976707458496, + "simulationSeconds": 0.006409049034118652, + "tick": 49 + }, + { + "renderSeconds": 0.004474997520446777, + "simulationSeconds": 0.0071179866790771484, + "tick": 50 + }, + { + "renderSeconds": 0.0045861005783081055, + "simulationSeconds": 0.00751495361328125, + "tick": 51 + }, + { + "renderSeconds": 0.0038460493087768555, + "simulationSeconds": 0.007274985313415527, + "tick": 52 + }, + { + "renderSeconds": 0.003909111022949219, + "simulationSeconds": 0.014968037605285645, + "tick": 54 + }, + { + "renderSeconds": 0.004801034927368164, + "simulationSeconds": 0.007179975509643555, + "tick": 55 + }, + { + "renderSeconds": 0.0053369998931884766, + "simulationSeconds": 0.014875054359436035, + "tick": 57 + }, + { + "renderSeconds": 0.004305005073547363, + "simulationSeconds": 0.007318973541259766, + "tick": 58 + }, + { + "renderSeconds": 0.005051016807556152, + "simulationSeconds": 0.007617950439453125, + "tick": 59 + }, + { + "renderSeconds": 0.00439000129699707, + "simulationSeconds": 0.0074939727783203125, + "tick": 60 + }, + { + "renderSeconds": 0.0035810470581054688, + "simulationSeconds": 0.013306975364685059, + "tick": 62 + }, + { + "renderSeconds": 0.004007935523986816, + "simulationSeconds": 0.013810992240905762, + "tick": 64 + }, + { + "renderSeconds": 0.004472970962524414, + "simulationSeconds": 0.00699305534362793, + "tick": 65 + }, + { + "renderSeconds": 0.0038139820098876953, + "simulationSeconds": 0.006358981132507324, + "tick": 66 + }, + { + "renderSeconds": 0.003860950469970703, + "simulationSeconds": 0.007175087928771973, + "tick": 67 + }, + { + "renderSeconds": 0.0038650035858154297, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 67 + }, + { + "renderSeconds": 0.0034029483795166016, + "simulationSeconds": 0.007194995880126953, + "tick": 68 + }, + { + "renderSeconds": 0.003679037094116211, + "simulationSeconds": 0.012982010841369629, + "tick": 70 + }, + { + "renderSeconds": 0.004340052604675293, + "simulationSeconds": 0.013574004173278809, + "tick": 72 + }, + { + "renderSeconds": 0.0039479732513427734, + "simulationSeconds": 0.007629036903381348, + "tick": 73 + }, + { + "renderSeconds": 0.0058029890060424805, + "simulationSeconds": 0.008933067321777344, + "tick": 74 + }, + { + "renderSeconds": 0.005146026611328125, + "simulationSeconds": 0.018592000007629395, + "tick": 76 + }, + { + "renderSeconds": 0.004343986511230469, + "simulationSeconds": 0.014356017112731934, + "tick": 78 + }, + { + "renderSeconds": 0.004361987113952637, + "simulationSeconds": 0.007219076156616211, + "tick": 79 + }, + { + "renderSeconds": 0.0038928985595703125, + "simulationSeconds": 0.006888985633850098, + "tick": 80 + }, + { + "renderSeconds": 0.003835916519165039, + "simulationSeconds": 0.013096928596496582, + "tick": 82 + }, + { + "renderSeconds": 0.0037119388580322266, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.004557013511657715, + "simulationSeconds": 0.007646918296813965, + "tick": 83 + }, + { + "renderSeconds": 0.0034339427947998047, + "simulationSeconds": 0.013052940368652344, + "tick": 85 + }, + { + "renderSeconds": 0.004920005798339844, + "simulationSeconds": 0.007452964782714844, + "tick": 86 + }, + { + "renderSeconds": 0.004073023796081543, + "simulationSeconds": 0.007375955581665039, + "tick": 87 + }, + { + "renderSeconds": 0.0033529996871948242, + "simulationSeconds": 0.013808965682983398, + "tick": 89 + }, + { + "renderSeconds": 0.004583001136779785, + "simulationSeconds": 0.006193995475769043, + "tick": 90 + }, + { + "renderSeconds": 0.0038450956344604492, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.004246950149536133, + "simulationSeconds": 0.012652993202209473, + "tick": 92 + }, + { + "renderSeconds": 0.004115939140319824, + "simulationSeconds": 0.006332993507385254, + "tick": 93 + }, + { + "renderSeconds": 0.003847956657409668, + "simulationSeconds": 0.006345987319946289, + "tick": 94 + }, + { + "renderSeconds": 0.0036389827728271484, + "simulationSeconds": 0.006069064140319824, + "tick": 95 + }, + { + "renderSeconds": 0.004631996154785156, + "simulationSeconds": 0.007175922393798828, + "tick": 96 + }, + { + "renderSeconds": 0.0036820173263549805, + "simulationSeconds": 0.006270051002502441, + "tick": 97 + }, + { + "renderSeconds": 0.004085063934326172, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.003918051719665527, + "simulationSeconds": 0.00719296932220459, + "tick": 98 + }, + { + "renderSeconds": 0.00360107421875, + "simulationSeconds": 0.014117002487182617, + "tick": 100 + }, + { + "renderSeconds": 0.003924012184143066, + "simulationSeconds": 0.013099074363708496, + "tick": 102 + }, + { + "renderSeconds": 0.003849029541015625, + "simulationSeconds": 0.006876945495605469, + "tick": 103 + }, + { + "renderSeconds": 0.004392027854919434, + "simulationSeconds": 0.006772041320800781, + "tick": 104 + }, + { + "renderSeconds": 0.003912091255187988, + "simulationSeconds": 0.006392955780029297, + "tick": 105 + }, + { + "renderSeconds": 0.003813028335571289, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 105 + }, + { + "renderSeconds": 0.0036679506301879883, + "simulationSeconds": 0.013017058372497559, + "tick": 107 + }, + { + "renderSeconds": 0.0036280155181884766, + "simulationSeconds": 0.006211996078491211, + "tick": 108 + }, + { + "renderSeconds": 0.004619002342224121, + "simulationSeconds": 0.007128000259399414, + "tick": 109 + }, + { + "renderSeconds": 0.0033750534057617188, + "simulationSeconds": 0.012239933013916016, + "tick": 111 + }, + { + "renderSeconds": 0.003607034683227539, + "simulationSeconds": 0.00636899471282959, + "tick": 112 + }, + { + "renderSeconds": 0.003515958786010742, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0034720897674560547, + "simulationSeconds": 0.006533980369567871, + "tick": 113 + }, + { + "renderSeconds": 0.0033589601516723633, + "simulationSeconds": 0.01217508316040039, + "tick": 115 + }, + { + "renderSeconds": 0.004118084907531738, + "simulationSeconds": 0.007660031318664551, + "tick": 116 + }, + { + "renderSeconds": 0.004433035850524902, + "simulationSeconds": 0.007847070693969727, + "tick": 117 + }, + { + "renderSeconds": 0.0039130449295043945, + "simulationSeconds": 0.00745999813079834, + "tick": 118 + }, + { + "renderSeconds": 0.004022955894470215, + "simulationSeconds": 0.015972018241882324, + "tick": 120 + }, + { + "renderSeconds": 0.004027009010314941, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0036569833755493164, + "simulationSeconds": 0.012812972068786621, + "tick": 122 + }, + { + "renderSeconds": 0.00386202335357666, + "simulationSeconds": 0.012831926345825195, + "tick": 124 + }, + { + "renderSeconds": 0.0038579702377319336, + "simulationSeconds": 0.012238025665283203, + "tick": 126 + }, + { + "renderSeconds": 0.003177046775817871, + "simulationSeconds": 0.007353067398071289, + "tick": 127 + }, + { + "renderSeconds": 0.0038160085678100586, + "simulationSeconds": 0.006358981132507324, + "tick": 128 + }, + { + "renderSeconds": 0.0035370588302612305, + "simulationSeconds": 0.01285707950592041, + "tick": 130 + }, + { + "renderSeconds": 0.0035589933395385742, + "simulationSeconds": 0.006323099136352539, + "tick": 131 + }, + { + "renderSeconds": 0.004067897796630859, + "simulationSeconds": 0.006157994270324707, + "tick": 132 + }, + { + "renderSeconds": 0.0038518905639648438, + "simulationSeconds": 0.006709933280944824, + "tick": 133 + }, + { + "renderSeconds": 0.00338590145111084, + "simulationSeconds": 0.0063860416412353516, + "tick": 134 + }, + { + "renderSeconds": 0.004167914390563965, + "simulationSeconds": 0.006590008735656738, + "tick": 135 + }, + { + "renderSeconds": 0.0039479732513427734, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0035229921340942383, + "simulationSeconds": 0.014109015464782715, + "tick": 137 + }, + { + "renderSeconds": 0.003880023956298828, + "simulationSeconds": 0.006605982780456543, + "tick": 138 + }, + { + "renderSeconds": 0.0038019418716430664, + "simulationSeconds": 0.013926982879638672, + "tick": 140 + }, + { + "renderSeconds": 0.004538893699645996, + "simulationSeconds": 0.00684201717376709, + "tick": 141 + }, + { + "renderSeconds": 0.004021048545837402, + "simulationSeconds": 0.007254958152770996, + "tick": 142 + }, + { + "renderSeconds": 0.004149079322814941, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0036619901657104492, + "simulationSeconds": 0.006119966506958008, + "tick": 143 + }, + { + "renderSeconds": 0.0038889646530151367, + "simulationSeconds": 0.013678908348083496, + "tick": 145 + }, + { + "renderSeconds": 0.003401041030883789, + "simulationSeconds": 0.012333035469055176, + "tick": 147 + }, + { + "renderSeconds": 0.004053950309753418, + "simulationSeconds": 0.006713986396789551, + "tick": 148 + }, + { + "renderSeconds": 0.004318952560424805, + "simulationSeconds": 0.006557106971740723, + "tick": 149 + }, + { + "renderSeconds": 0.003911018371582031, + "simulationSeconds": 0.0061789751052856445, + "tick": 150 + }, + { + "renderSeconds": 0.003883957862854004, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 150 + }, + { + "renderSeconds": 0.003986954689025879, + "simulationSeconds": 0.014528989791870117, + "tick": 152 + }, + { + "renderSeconds": 0.005266904830932617, + "simulationSeconds": 0.007367968559265137, + "tick": 153 + }, + { + "renderSeconds": 0.0037800073623657227, + "simulationSeconds": 0.006910085678100586, + "tick": 154 + }, + { + "renderSeconds": 0.003486037254333496, + "simulationSeconds": 0.013837933540344238, + "tick": 156 + }, + { + "renderSeconds": 0.005015969276428223, + "simulationSeconds": 0.006278038024902344, + "tick": 157 + }, + { + "renderSeconds": 0.004249930381774902, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 157 + }, + { + "renderSeconds": 0.004545927047729492, + "simulationSeconds": 0.006512045860290527, + "tick": 158 + }, + { + "renderSeconds": 0.0038750171661376953, + "simulationSeconds": 0.012687087059020996, + "tick": 160 + }, + { + "renderSeconds": 0.00363004207611084, + "simulationSeconds": 0.0063419342041015625, + "tick": 161 + }, + { + "renderSeconds": 0.003968000411987305, + "simulationSeconds": 0.005800962448120117, + "tick": 162 + }, + { + "renderSeconds": 0.0039789676666259766, + "simulationSeconds": 0.006935000419616699, + "tick": 163 + }, + { + "renderSeconds": 0.00389707088470459, + "simulationSeconds": 0.00639796257019043, + "tick": 164 + }, + { + "renderSeconds": 0.004680037498474121, + "simulationSeconds": 0.007294058799743652, + "tick": 165 + }, + { + "renderSeconds": 0.004338979721069336, + "simulationSeconds": 0.01639997959136963, + "tick": 167 + }, + { + "renderSeconds": 0.004367947578430176, + "simulationSeconds": 0.007586002349853516, + "tick": 168 + }, + { + "renderSeconds": 0.003738999366760254, + "simulationSeconds": 0.017236948013305664, + "tick": 170 + }, + { + "renderSeconds": 0.004487037658691406, + "simulationSeconds": 0.007341980934143066, + "tick": 171 + }, + { + "renderSeconds": 0.00421905517578125, + "simulationSeconds": 0.0065000057220458984, + "tick": 172 + }, + { + "renderSeconds": 0.003648996353149414, + "simulationSeconds": 0.00625300407409668, + "tick": 173 + }, + { + "renderSeconds": 0.00347900390625, + "simulationSeconds": 0.012345075607299805, + "tick": 175 + }, + { + "renderSeconds": 0.0038139820098876953, + "simulationSeconds": 0.006320953369140625, + "tick": 176 + }, + { + "renderSeconds": 0.0039010047912597656, + "simulationSeconds": 0.006798982620239258, + "tick": 177 + }, + { + "renderSeconds": 0.0035239458084106445, + "simulationSeconds": 0.00710606575012207, + "tick": 178 + }, + { + "renderSeconds": 0.004148006439208984, + "simulationSeconds": 0.006616950035095215, + "tick": 179 + }, + { + "renderSeconds": 0.004601001739501953, + "simulationSeconds": 0.006080031394958496, + "tick": 180 + }, + { + "renderSeconds": 0.003975033760070801, + "simulationSeconds": 9.5367431640625e-07, + "tick": 180 + }, + { + "renderSeconds": 0.0034279823303222656, + "simulationSeconds": 0.012529969215393066, + "tick": 182 + }, + { + "renderSeconds": 0.0033490657806396484, + "simulationSeconds": 0.006043910980224609, + "tick": 183 + }, + { + "renderSeconds": 0.004041075706481934, + "simulationSeconds": 0.006417989730834961, + "tick": 184 + }, + { + "renderSeconds": 0.0034760236740112305, + "simulationSeconds": 0.006365060806274414, + "tick": 185 + }, + { + "renderSeconds": 0.004094958305358887, + "simulationSeconds": 0.006840944290161133, + "tick": 186 + }, + { + "renderSeconds": 0.003672003746032715, + "simulationSeconds": 0.00643002986907959, + "tick": 187 + }, + { + "renderSeconds": 0.003695964813232422, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.003744959831237793, + "simulationSeconds": 0.006139039993286133, + "tick": 188 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0.012115955352783203, + "tick": 190 + }, + { + "renderSeconds": 0.004029035568237305, + "simulationSeconds": 0.006129026412963867, + "tick": 191 + }, + { + "renderSeconds": 0.0035409927368164062, + "simulationSeconds": 0.008490920066833496, + "tick": 192 + }, + { + "renderSeconds": 0.004373908042907715, + "simulationSeconds": 0.007220029830932617, + "tick": 193 + }, + { + "renderSeconds": 0.004028916358947754, + "simulationSeconds": 0.006503105163574219, + "tick": 194 + }, + { + "renderSeconds": 0.004603028297424316, + "simulationSeconds": 0.007185101509094238, + "tick": 195 + }, + { + "renderSeconds": 0.00421905517578125, + "simulationSeconds": 9.5367431640625e-07, + "tick": 195 + }, + { + "renderSeconds": 0.004104018211364746, + "simulationSeconds": 0.015110015869140625, + "tick": 197 + }, + { + "renderSeconds": 0.0043680667877197266, + "simulationSeconds": 0.015727996826171875, + "tick": 199 + }, + { + "renderSeconds": 0.004433035850524902, + "simulationSeconds": 0.014902949333190918, + "tick": 201 + }, + { + "renderSeconds": 0.004539966583251953, + "simulationSeconds": 0.00655210018157959, + "tick": 202 + }, + { + "renderSeconds": 0.0038061141967773438, + "simulationSeconds": 0.006997942924499512, + "tick": 203 + }, + { + "renderSeconds": 0.0036330223083496094, + "simulationSeconds": 0.017467975616455078, + "tick": 205 + }, + { + "renderSeconds": 0.003690004348754883, + "simulationSeconds": 0.01217508316040039, + "tick": 207 + }, + { + "renderSeconds": 0.0043010711669921875, + "simulationSeconds": 0.013418912887573242, + "tick": 209 + }, + { + "renderSeconds": 0.004065990447998047, + "simulationSeconds": 0.006370067596435547, + "tick": 210 + }, + { + "renderSeconds": 0.0035200119018554688, + "simulationSeconds": 0.013924002647399902, + "tick": 212 + }, + { + "renderSeconds": 0.003553032875061035, + "simulationSeconds": 0.006369948387145996, + "tick": 213 + }, + { + "renderSeconds": 0.0042868852615356445, + "simulationSeconds": 0.006612062454223633, + "tick": 214 + }, + { + "renderSeconds": 0.0036840438842773438, + "simulationSeconds": 0.006557941436767578, + "tick": 215 + }, + { + "renderSeconds": 0.00480496883392334, + "simulationSeconds": 0.0070819854736328125, + "tick": 216 + }, + { + "renderSeconds": 0.0036079883575439453, + "simulationSeconds": 0.006168007850646973, + "tick": 217 + }, + { + "renderSeconds": 0.00409698486328125, + "simulationSeconds": 0, + "tick": 217 + }, + { + "renderSeconds": 0.0043179988861083984, + "simulationSeconds": 0.007185935974121094, + "tick": 218 + }, + { + "renderSeconds": 0.004083991050720215, + "simulationSeconds": 0.01565396785736084, + "tick": 220 + }, + { + "renderSeconds": 0.004199028015136719, + "simulationSeconds": 0.016067981719970703, + "tick": 222 + }, + { + "renderSeconds": 0.003872990608215332, + "simulationSeconds": 0.013172030448913574, + "tick": 224 + }, + { + "renderSeconds": 0.0050460100173950195, + "simulationSeconds": 0.006615996360778809, + "tick": 225 + }, + { + "renderSeconds": 0.0036710500717163086, + "simulationSeconds": 0.01299595832824707, + "tick": 227 + }, + { + "renderSeconds": 0.003880023956298828, + "simulationSeconds": 0.012591958045959473, + "tick": 229 + }, + { + "renderSeconds": 0.003964900970458984, + "simulationSeconds": 0.012611031532287598, + "tick": 231 + }, + { + "renderSeconds": 0.004068970680236816, + "simulationSeconds": 0.0067369937896728516, + "tick": 232 + }, + { + "renderSeconds": 0.0038170814514160156, + "simulationSeconds": 0.006268024444580078, + "tick": 233 + }, + { + "renderSeconds": 0.0035810470581054688, + "simulationSeconds": 0.014489889144897461, + "tick": 235 + }, + { + "renderSeconds": 0.0037610530853271484, + "simulationSeconds": 0.012953996658325195, + "tick": 237 + }, + { + "renderSeconds": 0.004088997840881348, + "simulationSeconds": 0.006889939308166504, + "tick": 238 + }, + { + "renderSeconds": 0.0049239397048950195, + "simulationSeconds": 0.007187962532043457, + "tick": 239 + }, + { + "renderSeconds": 0.0035600662231445312, + "simulationSeconds": 0.0077419281005859375, + "tick": 240 + }, + { + "renderSeconds": 0.004371047019958496, + "simulationSeconds": 0, + "tick": 240 + }, + { + "renderSeconds": 0.003618955612182617, + "simulationSeconds": 0.013131022453308105, + "tick": 242 + }, + { + "renderSeconds": 0.004109978675842285, + "simulationSeconds": 0.013854026794433594, + "tick": 244 + }, + { + "renderSeconds": 0.004220008850097656, + "simulationSeconds": 0.007291913032531738, + "tick": 245 + }, + { + "renderSeconds": 0.003979086875915527, + "simulationSeconds": 0.007387042045593262, + "tick": 246 + }, + { + "renderSeconds": 0.004297971725463867, + "simulationSeconds": 0.007560014724731445, + "tick": 247 + }, + { + "renderSeconds": 0.0040209293365478516, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.004264950752258301, + "simulationSeconds": 0.007021069526672363, + "tick": 248 + }, + { + "renderSeconds": 0.005103945732116699, + "simulationSeconds": 0.01427304744720459, + "tick": 250 + }, + { + "renderSeconds": 0.004279971122741699, + "simulationSeconds": 0.01471400260925293, + "tick": 252 + }, + { + "renderSeconds": 0.00400698184967041, + "simulationSeconds": 0.012830972671508789, + "tick": 254 + }, + { + "renderSeconds": 0.006496906280517578, + "simulationSeconds": 0.012781023979187012, + "tick": 256 + }, + { + "renderSeconds": 0.004275083541870117, + "simulationSeconds": 0.014958024024963379, + "tick": 258 + }, + { + "renderSeconds": 0.0037859678268432617, + "simulationSeconds": 0.01350390911102295, + "tick": 260 + }, + { + "renderSeconds": 0.0039670467376708984, + "simulationSeconds": 0.012915968894958496, + "tick": 262 + }, + { + "renderSeconds": 0.004043936729431152, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 262 + }, + { + "renderSeconds": 0.003769993782043457, + "simulationSeconds": 0.006663084030151367, + "tick": 263 + }, + { + "renderSeconds": 0.003383040428161621, + "simulationSeconds": 0.014435887336730957, + "tick": 265 + }, + { + "renderSeconds": 0.003886103630065918, + "simulationSeconds": 0.013455986976623535, + "tick": 267 + }, + { + "renderSeconds": 0.004403948783874512, + "simulationSeconds": 0.00701904296875, + "tick": 268 + }, + { + "renderSeconds": 0.003885030746459961, + "simulationSeconds": 0.006584048271179199, + "tick": 269 + }, + { + "renderSeconds": 0.003872990608215332, + "simulationSeconds": 0.007176995277404785, + "tick": 270 + }, + { + "renderSeconds": 0.003913998603820801, + "simulationSeconds": 0, + "tick": 270 + }, + { + "renderSeconds": 0.004762053489685059, + "simulationSeconds": 0.013433098793029785, + "tick": 272 + }, + { + "renderSeconds": 0.003502964973449707, + "simulationSeconds": 0.0063849687576293945, + "tick": 273 + }, + { + "renderSeconds": 0.004423975944519043, + "simulationSeconds": 0.006860971450805664, + "tick": 274 + }, + { + "renderSeconds": 0.004957914352416992, + "simulationSeconds": 0.01452791690826416, + "tick": 276 + }, + { + "renderSeconds": 0.004207015037536621, + "simulationSeconds": 0.007476091384887695, + "tick": 277 + }, + { + "renderSeconds": 0.004297018051147461, + "simulationSeconds": 0.0066449642181396484, + "tick": 278 + }, + { + "renderSeconds": 0.0036820173263549805, + "simulationSeconds": 0.013301968574523926, + "tick": 280 + }, + { + "renderSeconds": 0.00391697883605957, + "simulationSeconds": 0.006685018539428711, + "tick": 281 + }, + { + "renderSeconds": 0.004414916038513184, + "simulationSeconds": 0.007193088531494141, + "tick": 282 + }, + { + "renderSeconds": 0.0034580230712890625, + "simulationSeconds": 0.006204009056091309, + "tick": 283 + }, + { + "renderSeconds": 0.0038709640502929688, + "simulationSeconds": 0.006826996803283691, + "tick": 284 + }, + { + "renderSeconds": 0.003760099411010742, + "simulationSeconds": 0.006250977516174316, + "tick": 285 + }, + { + "renderSeconds": 0.0037440061569213867, + "simulationSeconds": 0, + "tick": 285 + }, + { + "renderSeconds": 0.003461003303527832, + "simulationSeconds": 0.011798977851867676, + "tick": 287 + }, + { + "renderSeconds": 0.004466056823730469, + "simulationSeconds": 0.006631016731262207, + "tick": 288 + }, + { + "renderSeconds": 0.004464983940124512, + "simulationSeconds": 0.007182955741882324, + "tick": 289 + }, + { + "renderSeconds": 0.0045500993728637695, + "simulationSeconds": 0.007711887359619141, + "tick": 290 + }, + { + "renderSeconds": 0.004014015197753906, + "simulationSeconds": 0.013701081275939941, + "tick": 292 + }, + { + "renderSeconds": 0.004732966423034668, + "simulationSeconds": 0, + "tick": 292 + }, + { + "renderSeconds": 0.004938960075378418, + "simulationSeconds": 0.007052063941955566, + "tick": 293 + }, + { + "renderSeconds": 0.003588080406188965, + "simulationSeconds": 0.012475967407226562, + "tick": 295 + }, + { + "renderSeconds": 0.004474997520446777, + "simulationSeconds": 0.007406949996948242, + "tick": 296 + }, + { + "renderSeconds": 0.003944993019104004, + "simulationSeconds": 0.013548016548156738, + "tick": 298 + }, + { + "renderSeconds": 0.004483938217163086, + "simulationSeconds": 0.006759047508239746, + "tick": 299 + }, + { + "renderSeconds": 0.004441022872924805, + "simulationSeconds": 0.008745908737182617, + "tick": 300 + }, + { + "renderSeconds": 0.0033729076385498047, + "simulationSeconds": 0.011695027351379395, + "tick": 302 + }, + { + "renderSeconds": 0.003980040550231934, + "simulationSeconds": 0.00740504264831543, + "tick": 303 + }, + { + "renderSeconds": 0.004644989967346191, + "simulationSeconds": 0.0072220563888549805, + "tick": 304 + }, + { + "renderSeconds": 0.004119992256164551, + "simulationSeconds": 0.006867051124572754, + "tick": 305 + }, + { + "renderSeconds": 0.004369020462036133, + "simulationSeconds": 0.008183002471923828, + "tick": 306 + }, + { + "renderSeconds": 0.004253029823303223, + "simulationSeconds": 0.006678938865661621, + "tick": 307 + }, + { + "renderSeconds": 0.00439298152923584, + "simulationSeconds": 0.007270097732543945, + "tick": 308 + }, + { + "renderSeconds": 0.0041429996490478516, + "simulationSeconds": 0.01432192325592041, + "tick": 310 + }, + { + "renderSeconds": 0.004286050796508789, + "simulationSeconds": 0.006763100624084473, + "tick": 311 + }, + { + "renderSeconds": 0.004054903984069824, + "simulationSeconds": 0.014262080192565918, + "tick": 313 + }, + { + "renderSeconds": 0.004706978797912598, + "simulationSeconds": 0.0066449642181396484, + "tick": 314 + }, + { + "renderSeconds": 0.003805994987487793, + "simulationSeconds": 0.006317019462585449, + "tick": 315 + }, + { + "renderSeconds": 0.004140019416809082, + "simulationSeconds": 9.5367431640625e-07, + "tick": 315 + }, + { + "renderSeconds": 0.003583073616027832, + "simulationSeconds": 0.01255500316619873, + "tick": 317 + }, + { + "renderSeconds": 0.003955960273742676, + "simulationSeconds": 0.00630795955657959, + "tick": 318 + }, + { + "renderSeconds": 0.0038470029830932617, + "simulationSeconds": 0.00577998161315918, + "tick": 319 + }, + { + "renderSeconds": 0.003943085670471191, + "simulationSeconds": 0.006349921226501465, + "tick": 320 + }, + { + "renderSeconds": 0.003867030143737793, + "simulationSeconds": 0.006039977073669434, + "tick": 321 + }, + { + "renderSeconds": 0.003885030746459961, + "simulationSeconds": 0.0062520503997802734, + "tick": 322 + }, + { + "renderSeconds": 0.004047989845275879, + "simulationSeconds": 0, + "tick": 322 + }, + { + "renderSeconds": 0.00371706485748291, + "simulationSeconds": 0.006640911102294922, + "tick": 323 + }, + { + "renderSeconds": 0.0035649538040161133, + "simulationSeconds": 0.012048959732055664, + "tick": 325 + }, + { + "renderSeconds": 0.0035560131072998047, + "simulationSeconds": 0.005823016166687012, + "tick": 326 + }, + { + "renderSeconds": 0.0044629573822021484, + "simulationSeconds": 0.006206989288330078, + "tick": 327 + }, + { + "renderSeconds": 0.0034809112548828125, + "simulationSeconds": 0.006144046783447266, + "tick": 328 + }, + { + "renderSeconds": 0.004364013671875, + "simulationSeconds": 0.0064400434494018555, + "tick": 329 + }, + { + "renderSeconds": 0.0033190250396728516, + "simulationSeconds": 0.006342053413391113, + "tick": 330 + }, + { + "renderSeconds": 0.0041179656982421875, + "simulationSeconds": 0, + "tick": 330 + }, + { + "renderSeconds": 0.0034519433975219727, + "simulationSeconds": 0.0127640962600708, + "tick": 332 + }, + { + "renderSeconds": 0.0037300586700439453, + "simulationSeconds": 0.006211996078491211, + "tick": 333 + }, + { + "renderSeconds": 0.0032540559768676758, + "simulationSeconds": 0.006618976593017578, + "tick": 334 + }, + { + "renderSeconds": 0.004355907440185547, + "simulationSeconds": 0.006006956100463867, + "tick": 335 + }, + { + "renderSeconds": 0.0035240650177001953, + "simulationSeconds": 0.006311893463134766, + "tick": 336 + }, + { + "renderSeconds": 0.004101991653442383, + "simulationSeconds": 0.006727933883666992, + "tick": 337 + }, + { + "renderSeconds": 0.0037850141525268555, + "simulationSeconds": 0, + "tick": 337 + }, + { + "renderSeconds": 0.003898024559020996, + "simulationSeconds": 0.0067789554595947266, + "tick": 338 + }, + { + "renderSeconds": 0.0036939382553100586, + "simulationSeconds": 0.013050079345703125, + "tick": 340 + }, + { + "renderSeconds": 0.0038830041885375977, + "simulationSeconds": 0.006505012512207031, + "tick": 341 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.0066089630126953125, + "tick": 342 + }, + { + "renderSeconds": 0.003936052322387695, + "simulationSeconds": 0.00704193115234375, + "tick": 343 + }, + { + "renderSeconds": 0.003576993942260742, + "simulationSeconds": 0.006103038787841797, + "tick": 344 + }, + { + "renderSeconds": 0.00459599494934082, + "simulationSeconds": 0.006468057632446289, + "tick": 345 + }, + { + "renderSeconds": 0.004217028617858887, + "simulationSeconds": 0, + "tick": 345 + }, + { + "renderSeconds": 0.004803061485290527, + "simulationSeconds": 0.013371944427490234, + "tick": 347 + }, + { + "renderSeconds": 0.003895998001098633, + "simulationSeconds": 0.006580948829650879, + "tick": 348 + }, + { + "renderSeconds": 0.0043669939041137695, + "simulationSeconds": 0.007419109344482422, + "tick": 349 + }, + { + "renderSeconds": 0.004012107849121094, + "simulationSeconds": 0.01509392261505127, + "tick": 351 + }, + { + "renderSeconds": 0.004053950309753418, + "simulationSeconds": 0.007841944694519043, + "tick": 352 + }, + { + "renderSeconds": 0.003977060317993164, + "simulationSeconds": 0, + "tick": 352 + }, + { + "renderSeconds": 0.003605961799621582, + "simulationSeconds": 0.006364107131958008, + "tick": 353 + }, + { + "renderSeconds": 0.003347039222717285, + "simulationSeconds": 0.01367807388305664, + "tick": 355 + }, + { + "renderSeconds": 0.003943920135498047, + "simulationSeconds": 0.006327033042907715, + "tick": 356 + }, + { + "renderSeconds": 0.0037859678268432617, + "simulationSeconds": 0.01365506649017334, + "tick": 358 + }, + { + "renderSeconds": 0.005091071128845215, + "simulationSeconds": 0.007130026817321777, + "tick": 359 + }, + { + "renderSeconds": 0.0035009384155273438, + "simulationSeconds": 0.007728099822998047, + "tick": 360 + }, + { + "renderSeconds": 0.0038269758224487305, + "simulationSeconds": 0, + "tick": 360 + }, + { + "renderSeconds": 0.003883957862854004, + "simulationSeconds": 0.01279294490814209, + "tick": 362 + }, + { + "renderSeconds": 0.0034750699996948242, + "simulationSeconds": 0.013017058372497559, + "tick": 364 + }, + { + "renderSeconds": 0.004163026809692383, + "simulationSeconds": 0.0063860416412353516, + "tick": 365 + }, + { + "renderSeconds": 0.0038050413131713867, + "simulationSeconds": 0.007030963897705078, + "tick": 366 + }, + { + "renderSeconds": 0.0041359663009643555, + "simulationSeconds": 0.006479978561401367, + "tick": 367 + }, + { + "renderSeconds": 0.004048943519592285, + "simulationSeconds": 0, + "tick": 367 + }, + { + "renderSeconds": 0.003903985023498535, + "simulationSeconds": 0.006263017654418945, + "tick": 368 + }, + { + "renderSeconds": 0.004007935523986816, + "simulationSeconds": 0.014809012413024902, + "tick": 370 + }, + { + "renderSeconds": 0.004153013229370117, + "simulationSeconds": 0.007220029830932617, + "tick": 371 + }, + { + "renderSeconds": 0.004008054733276367, + "simulationSeconds": 0.0073969364166259766, + "tick": 372 + }, + { + "renderSeconds": 0.003854990005493164, + "simulationSeconds": 0.014593958854675293, + "tick": 374 + }, + { + "renderSeconds": 0.00463104248046875, + "simulationSeconds": 0.007357954978942871, + "tick": 375 + }, + { + "renderSeconds": 0.004114985466003418, + "simulationSeconds": 9.5367431640625e-07, + "tick": 375 + }, + { + "renderSeconds": 0.003490924835205078, + "simulationSeconds": 0.013026118278503418, + "tick": 377 + }, + { + "renderSeconds": 0.0045239925384521484, + "simulationSeconds": 0.006833076477050781, + "tick": 378 + }, + { + "renderSeconds": 0.003908991813659668, + "simulationSeconds": 0.014892935752868652, + "tick": 380 + }, + { + "renderSeconds": 0.0043179988861083984, + "simulationSeconds": 0.00755000114440918, + "tick": 381 + }, + { + "renderSeconds": 0.0033659934997558594, + "simulationSeconds": 0.006301999092102051, + "tick": 382 + }, + { + "renderSeconds": 0.004251956939697266, + "simulationSeconds": 0.006383061408996582, + "tick": 383 + }, + { + "renderSeconds": 0.0034580230712890625, + "simulationSeconds": 0.012783050537109375, + "tick": 385 + }, + { + "renderSeconds": 0.0036889314651489258, + "simulationSeconds": 0.006331086158752441, + "tick": 386 + }, + { + "renderSeconds": 0.003916025161743164, + "simulationSeconds": 0.007211089134216309, + "tick": 387 + }, + { + "renderSeconds": 0.003462076187133789, + "simulationSeconds": 0.0066280364990234375, + "tick": 388 + }, + { + "renderSeconds": 0.004217982292175293, + "simulationSeconds": 0.006569027900695801, + "tick": 389 + }, + { + "renderSeconds": 0.0036400556564331055, + "simulationSeconds": 0.006279945373535156, + "tick": 390 + }, + { + "renderSeconds": 0.004133939743041992, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 390 + }, + { + "renderSeconds": 0.003654956817626953, + "simulationSeconds": 0.012750983238220215, + "tick": 392 + }, + { + "renderSeconds": 0.00421905517578125, + "simulationSeconds": 0.0065909624099731445, + "tick": 393 + }, + { + "renderSeconds": 0.003773927688598633, + "simulationSeconds": 0.006524085998535156, + "tick": 394 + }, + { + "renderSeconds": 0.004235982894897461, + "simulationSeconds": 0.006961941719055176, + "tick": 395 + }, + { + "renderSeconds": 0.003983974456787109, + "simulationSeconds": 0.00640106201171875, + "tick": 396 + }, + { + "renderSeconds": 0.003853917121887207, + "simulationSeconds": 0.006613969802856445, + "tick": 397 + }, + { + "renderSeconds": 0.0035529136657714844, + "simulationSeconds": 0, + "tick": 397 + }, + { + "renderSeconds": 0.003980040550231934, + "simulationSeconds": 0.006358981132507324, + "tick": 398 + }, + { + "renderSeconds": 0.004603981971740723, + "simulationSeconds": 0.014310002326965332, + "tick": 400 + }, + { + "renderSeconds": 0.0039539337158203125, + "simulationSeconds": 0.015012979507446289, + "tick": 402 + }, + { + "renderSeconds": 0.004351019859313965, + "simulationSeconds": 0.009150028228759766, + "tick": 403 + }, + { + "renderSeconds": 0.00394594669342041, + "simulationSeconds": 0.007339000701904297, + "tick": 404 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.014773011207580566, + "tick": 406 + }, + { + "renderSeconds": 0.004535079002380371, + "simulationSeconds": 0.006796002388000488, + "tick": 407 + }, + { + "renderSeconds": 0.004060983657836914, + "simulationSeconds": 0.0064220428466796875, + "tick": 408 + }, + { + "renderSeconds": 0.0049179792404174805, + "simulationSeconds": 0.007066011428833008, + "tick": 409 + }, + { + "renderSeconds": 0.003612995147705078, + "simulationSeconds": 0.01240396499633789, + "tick": 411 + }, + { + "renderSeconds": 0.003605961799621582, + "simulationSeconds": 0.006116032600402832, + "tick": 412 + }, + { + "renderSeconds": 0.0038700103759765625, + "simulationSeconds": 0, + "tick": 412 + }, + { + "renderSeconds": 0.0036019086837768555, + "simulationSeconds": 0.0061609745025634766, + "tick": 413 + }, + { + "renderSeconds": 0.004147052764892578, + "simulationSeconds": 0.013162016868591309, + "tick": 415 + }, + { + "renderSeconds": 0.005203962326049805, + "simulationSeconds": 0.00877690315246582, + "tick": 416 + }, + { + "renderSeconds": 0.004019021987915039, + "simulationSeconds": 0.007386922836303711, + "tick": 417 + }, + { + "renderSeconds": 0.00400698184967041, + "simulationSeconds": 0.014868021011352539, + "tick": 419 + }, + { + "renderSeconds": 0.004624009132385254, + "simulationSeconds": 0.007532000541687012, + "tick": 420 + }, + { + "renderSeconds": 0.003983020782470703, + "simulationSeconds": 0, + "tick": 420 + }, + { + "renderSeconds": 0.0040891170501708984, + "simulationSeconds": 0.014726996421813965, + "tick": 422 + }, + { + "renderSeconds": 0.004521012306213379, + "simulationSeconds": 0.01400601863861084, + "tick": 424 + }, + { + "renderSeconds": 0.0035190582275390625, + "simulationSeconds": 0.0065909624099731445, + "tick": 425 + }, + { + "renderSeconds": 0.0039299726486206055, + "simulationSeconds": 0.0063599348068237305, + "tick": 426 + }, + { + "renderSeconds": 0.003628969192504883, + "simulationSeconds": 0.006451964378356934, + "tick": 427 + }, + { + "renderSeconds": 0.0037369728088378906, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 427 + }, + { + "renderSeconds": 0.003484964370727539, + "simulationSeconds": 0.0065310001373291016, + "tick": 428 + }, + { + "renderSeconds": 0.003872990608215332, + "simulationSeconds": 0.014271974563598633, + "tick": 430 + }, + { + "renderSeconds": 0.004868030548095703, + "simulationSeconds": 0.007561087608337402, + "tick": 431 + }, + { + "renderSeconds": 0.004516005516052246, + "simulationSeconds": 0.007209062576293945, + "tick": 432 + }, + { + "renderSeconds": 0.0038529634475708008, + "simulationSeconds": 0.014307022094726562, + "tick": 434 + }, + { + "renderSeconds": 0.0036249160766601562, + "simulationSeconds": 0.006711006164550781, + "tick": 435 + }, + { + "renderSeconds": 0.0038939714431762695, + "simulationSeconds": 0, + "tick": 435 + }, + { + "renderSeconds": 0.0033420324325561523, + "simulationSeconds": 0.012677907943725586, + "tick": 437 + }, + { + "renderSeconds": 0.004900932312011719, + "simulationSeconds": 0.006369948387145996, + "tick": 438 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.0066879987716674805, + "tick": 439 + }, + { + "renderSeconds": 0.003787994384765625, + "simulationSeconds": 0.006824970245361328, + "tick": 440 + }, + { + "renderSeconds": 0.0037200450897216797, + "simulationSeconds": 0.007037997245788574, + "tick": 441 + }, + { + "renderSeconds": 0.0037369728088378906, + "simulationSeconds": 0.005944967269897461, + "tick": 442 + }, + { + "renderSeconds": 0.00421905517578125, + "simulationSeconds": 0, + "tick": 442 + }, + { + "renderSeconds": 0.003987908363342285, + "simulationSeconds": 0.007161974906921387, + "tick": 443 + }, + { + "renderSeconds": 0.004734992980957031, + "simulationSeconds": 0.017442941665649414, + "tick": 445 + }, + { + "renderSeconds": 0.0049430131912231445, + "simulationSeconds": 0.01858198642730713, + "tick": 447 + }, + { + "renderSeconds": 0.00442194938659668, + "simulationSeconds": 0.017619013786315918, + "tick": 449 + }, + { + "renderSeconds": 0.0045049190521240234, + "simulationSeconds": 0.0091400146484375, + "tick": 450 + }, + { + "renderSeconds": 0.004011034965515137, + "simulationSeconds": 0.023571014404296875, + "tick": 453 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.018743038177490234, + "tick": 456 + }, + { + "renderSeconds": 0.004090070724487305, + "simulationSeconds": 0.012394070625305176, + "tick": 458 + }, + { + "renderSeconds": 0.003697991371154785, + "simulationSeconds": 0.012687921524047852, + "tick": 460 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.014306902885437012, + "tick": 462 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.00568997859954834, + "tick": 463 + }, + { + "renderSeconds": 0.0032930374145507812, + "simulationSeconds": 0.006157994270324707, + "tick": 464 + }, + { + "renderSeconds": 0.004004001617431641, + "simulationSeconds": 0.006777048110961914, + "tick": 465 + }, + { + "renderSeconds": 0.003881096839904785, + "simulationSeconds": 0, + "tick": 465 + }, + { + "renderSeconds": 0.003849029541015625, + "simulationSeconds": 0.01390695571899414, + "tick": 467 + }, + { + "renderSeconds": 0.004038095474243164, + "simulationSeconds": 0.006837010383605957, + "tick": 468 + }, + { + "renderSeconds": 0.0046579837799072266, + "simulationSeconds": 0.007102012634277344, + "tick": 469 + }, + { + "renderSeconds": 0.005055904388427734, + "simulationSeconds": 0.007429003715515137, + "tick": 470 + }, + { + "renderSeconds": 0.004719972610473633, + "simulationSeconds": 0.017573952674865723, + "tick": 472 + }, + { + "renderSeconds": 0.004565000534057617, + "simulationSeconds": 0, + "tick": 472 + }, + { + "renderSeconds": 0.004001021385192871, + "simulationSeconds": 0.006829977035522461, + "tick": 473 + }, + { + "renderSeconds": 0.004189968109130859, + "simulationSeconds": 0.014496922492980957, + "tick": 475 + }, + { + "renderSeconds": 0.004435062408447266, + "simulationSeconds": 0.01693105697631836, + "tick": 477 + }, + { + "renderSeconds": 0.004461050033569336, + "simulationSeconds": 0.014439940452575684, + "tick": 479 + }, + { + "renderSeconds": 0.0030781030654907227, + "simulationSeconds": 0.013133049011230469, + "tick": 481 + }, + { + "renderSeconds": 0.004297018051147461, + "simulationSeconds": 0.012618064880371094, + "tick": 483 + }, + { + "renderSeconds": 0.0027360916137695312, + "simulationSeconds": 0.00660395622253418, + "tick": 484 + }, + { + "renderSeconds": 0.00233304500579834, + "simulationSeconds": 0.0060770511627197266, + "tick": 485 + }, + { + "renderSeconds": 0.0032880306243896484, + "simulationSeconds": 0.006161928176879883, + "tick": 486 + }, + { + "renderSeconds": 0.002619028091430664, + "simulationSeconds": 0.006330966949462891, + "tick": 487 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 9.5367431640625e-07, + "tick": 487 + }, + { + "renderSeconds": 0.0026640892028808594, + "simulationSeconds": 0.006212949752807617, + "tick": 488 + }, + { + "renderSeconds": 0.0026859045028686523, + "simulationSeconds": 0.0135270357131958, + "tick": 490 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0.007231950759887695, + "tick": 491 + }, + { + "renderSeconds": 0.0033589601516723633, + "simulationSeconds": 0.008471012115478516, + "tick": 492 + }, + { + "renderSeconds": 0.0032290220260620117, + "simulationSeconds": 0.007378935813903809, + "tick": 493 + }, + { + "renderSeconds": 0.003341078758239746, + "simulationSeconds": 0.009135961532592773, + "tick": 494 + }, + { + "renderSeconds": 0.0032449960708618164, + "simulationSeconds": 0.007944941520690918, + "tick": 495 + }, + { + "renderSeconds": 0.0032999515533447266, + "simulationSeconds": 0, + "tick": 495 + }, + { + "renderSeconds": 0.0031850337982177734, + "simulationSeconds": 0.015292048454284668, + "tick": 497 + }, + { + "renderSeconds": 0.003769993782043457, + "simulationSeconds": 0.0077800750732421875, + "tick": 498 + }, + { + "renderSeconds": 0.0028499364852905273, + "simulationSeconds": 0.014561057090759277, + "tick": 500 + }, + { + "renderSeconds": 0.0029059648513793945, + "simulationSeconds": 0.007154941558837891, + "tick": 501 + }, + { + "renderSeconds": 0.0036869049072265625, + "simulationSeconds": 0.007403016090393066, + "tick": 502 + }, + { + "renderSeconds": 0.00339508056640625, + "simulationSeconds": 0, + "tick": 502 + }, + { + "renderSeconds": 0.0029839277267456055, + "simulationSeconds": 0.007696986198425293, + "tick": 503 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 0.014814972877502441, + "tick": 505 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.007992029190063477, + "tick": 506 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.0074079036712646484, + "tick": 507 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.008178949356079102, + "tick": 508 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.007112026214599609, + "tick": 509 + }, + { + "renderSeconds": 0.0032889842987060547, + "simulationSeconds": 0.0075609683990478516, + "tick": 510 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.039508541667601094, + "moveTicks": 480, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 784, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.42999517917633057, + "preparationSeconds": 0.5100690126419067, + "reducedMotion": false, + "renderSeconds": 1.6701481342315674, + "repetition": 20, + "scenePreparationSeconds": 0.17695200443267822, + "simulationSeconds": 3.529151439666748, + "snapshotBuildCount": 424, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 35.0406666402705, + "callbackMaxMS": 50.458833342418075, + "postActionRecords": 422, + "run": "BP008-stage-4-rep-20-axis-8191-reduced-false-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.7888007164001465, + "distancePhaseComparison": true, + "frameCosts": [ + { + "renderSeconds": 0.000635981559753418, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009660720825195312, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009829998016357422, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011249780654907227, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0046079158782958984, + "simulationSeconds": 0.011765003204345703, + "tick": 2 + }, + { + "renderSeconds": 0.004256010055541992, + "simulationSeconds": 0.00622105598449707, + "tick": 3 + }, + { + "renderSeconds": 0.0049610137939453125, + "simulationSeconds": 0.0067490339279174805, + "tick": 4 + }, + { + "renderSeconds": 0.004030942916870117, + "simulationSeconds": 0.0073920488357543945, + "tick": 5 + }, + { + "renderSeconds": 0.003942966461181641, + "simulationSeconds": 0.015004992485046387, + "tick": 7 + }, + { + "renderSeconds": 0.004423022270202637, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.005063056945800781, + "simulationSeconds": 0.008625030517578125, + "tick": 8 + }, + { + "renderSeconds": 0.004763960838317871, + "simulationSeconds": 0.018305063247680664, + "tick": 10 + }, + { + "renderSeconds": 0.003936052322387695, + "simulationSeconds": 0.014804959297180176, + "tick": 12 + }, + { + "renderSeconds": 0.004173994064331055, + "simulationSeconds": 0.014634013175964355, + "tick": 14 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.013200998306274414, + "tick": 16 + }, + { + "renderSeconds": 0.003982067108154297, + "simulationSeconds": 0.012448906898498535, + "tick": 18 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0.013304948806762695, + "tick": 20 + }, + { + "renderSeconds": 0.004400014877319336, + "simulationSeconds": 0.007673978805541992, + "tick": 21 + }, + { + "renderSeconds": 0.004016995429992676, + "simulationSeconds": 0.006425023078918457, + "tick": 22 + }, + { + "renderSeconds": 0.0035409927368164062, + "simulationSeconds": 0.007201075553894043, + "tick": 23 + }, + { + "renderSeconds": 0.0035610198974609375, + "simulationSeconds": 0.01272892951965332, + "tick": 25 + }, + { + "renderSeconds": 0.004228949546813965, + "simulationSeconds": 0.006405949592590332, + "tick": 26 + }, + { + "renderSeconds": 0.0039060115814208984, + "simulationSeconds": 0.006494998931884766, + "tick": 27 + }, + { + "renderSeconds": 0.004099011421203613, + "simulationSeconds": 0.006696939468383789, + "tick": 28 + }, + { + "renderSeconds": 0.0036580562591552734, + "simulationSeconds": 0.006677031517028809, + "tick": 29 + }, + { + "renderSeconds": 0.004737973213195801, + "simulationSeconds": 0.00637507438659668, + "tick": 30 + }, + { + "renderSeconds": 0.0039370059967041016, + "simulationSeconds": 9.5367431640625e-07, + "tick": 30 + }, + { + "renderSeconds": 0.0037070512771606445, + "simulationSeconds": 0.012853026390075684, + "tick": 32 + }, + { + "renderSeconds": 0.003920078277587891, + "simulationSeconds": 0.013548970222473145, + "tick": 34 + }, + { + "renderSeconds": 0.004061102867126465, + "simulationSeconds": 0.00792694091796875, + "tick": 35 + }, + { + "renderSeconds": 0.003980040550231934, + "simulationSeconds": 0.006343960762023926, + "tick": 36 + }, + { + "renderSeconds": 0.004878044128417969, + "simulationSeconds": 0.007248997688293457, + "tick": 37 + }, + { + "renderSeconds": 0.004122018814086914, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.003844022750854492, + "simulationSeconds": 0.006578922271728516, + "tick": 38 + }, + { + "renderSeconds": 0.0035840272903442383, + "simulationSeconds": 0.01376795768737793, + "tick": 40 + }, + { + "renderSeconds": 0.003751039505004883, + "simulationSeconds": 0.013193011283874512, + "tick": 42 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.012632966041564941, + "tick": 44 + }, + { + "renderSeconds": 0.0037369728088378906, + "simulationSeconds": 0.006883978843688965, + "tick": 45 + }, + { + "renderSeconds": 0.0033539533615112305, + "simulationSeconds": 0.013373017311096191, + "tick": 47 + }, + { + "renderSeconds": 0.004266977310180664, + "simulationSeconds": 0.006479978561401367, + "tick": 48 + }, + { + "renderSeconds": 0.0039010047912597656, + "simulationSeconds": 0.006230950355529785, + "tick": 49 + }, + { + "renderSeconds": 0.003726959228515625, + "simulationSeconds": 0.006558060646057129, + "tick": 50 + }, + { + "renderSeconds": 0.0036890506744384766, + "simulationSeconds": 0.006083965301513672, + "tick": 51 + }, + { + "renderSeconds": 0.003936886787414551, + "simulationSeconds": 0.006315946578979492, + "tick": 52 + }, + { + "renderSeconds": 0.0033789873123168945, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0035289525985717773, + "simulationSeconds": 0.006096959114074707, + "tick": 53 + }, + { + "renderSeconds": 0.003726959228515625, + "simulationSeconds": 0.012447953224182129, + "tick": 55 + }, + { + "renderSeconds": 0.003793001174926758, + "simulationSeconds": 0.0066519975662231445, + "tick": 56 + }, + { + "renderSeconds": 0.003565073013305664, + "simulationSeconds": 0.006358981132507324, + "tick": 57 + }, + { + "renderSeconds": 0.003794074058532715, + "simulationSeconds": 0.006714940071105957, + "tick": 58 + }, + { + "renderSeconds": 0.003963947296142578, + "simulationSeconds": 0.006247997283935547, + "tick": 59 + }, + { + "renderSeconds": 0.003611922264099121, + "simulationSeconds": 0.00622403621673584, + "tick": 60 + }, + { + "renderSeconds": 0.00341796875, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.003938078880310059, + "simulationSeconds": 0.01273500919342041, + "tick": 62 + }, + { + "renderSeconds": 0.003733038902282715, + "simulationSeconds": 0.0062940120697021484, + "tick": 63 + }, + { + "renderSeconds": 0.004678010940551758, + "simulationSeconds": 0.006273984909057617, + "tick": 64 + }, + { + "renderSeconds": 0.0034880638122558594, + "simulationSeconds": 0.012222886085510254, + "tick": 66 + }, + { + "renderSeconds": 0.003702998161315918, + "simulationSeconds": 0.007097959518432617, + "tick": 67 + }, + { + "renderSeconds": 0.0041429996490478516, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0036330223083496094, + "simulationSeconds": 0.0064629316329956055, + "tick": 68 + }, + { + "renderSeconds": 0.0032770633697509766, + "simulationSeconds": 0.01283407211303711, + "tick": 70 + }, + { + "renderSeconds": 0.0036399364471435547, + "simulationSeconds": 0.0063980817794799805, + "tick": 71 + }, + { + "renderSeconds": 0.003697991371154785, + "simulationSeconds": 0.0073250532150268555, + "tick": 72 + }, + { + "renderSeconds": 0.004127025604248047, + "simulationSeconds": 0.006381034851074219, + "tick": 73 + }, + { + "renderSeconds": 0.003551006317138672, + "simulationSeconds": 0.0070220232009887695, + "tick": 74 + }, + { + "renderSeconds": 0.003708958625793457, + "simulationSeconds": 0.00686800479888916, + "tick": 75 + }, + { + "renderSeconds": 0.0037109851837158203, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0034369230270385742, + "simulationSeconds": 0.01253211498260498, + "tick": 77 + }, + { + "renderSeconds": 0.004987955093383789, + "simulationSeconds": 0.007650017738342285, + "tick": 78 + }, + { + "renderSeconds": 0.004273056983947754, + "simulationSeconds": 0.01626598834991455, + "tick": 80 + }, + { + "renderSeconds": 0.004819035530090332, + "simulationSeconds": 0.009086966514587402, + "tick": 81 + }, + { + "renderSeconds": 0.004930973052978516, + "simulationSeconds": 0.017840027809143066, + "tick": 83 + }, + { + "renderSeconds": 0.0050580501556396484, + "simulationSeconds": 0.01752305030822754, + "tick": 85 + }, + { + "renderSeconds": 0.003970980644226074, + "simulationSeconds": 0.0143890380859375, + "tick": 87 + }, + { + "renderSeconds": 0.004205107688903809, + "simulationSeconds": 0.0075550079345703125, + "tick": 88 + }, + { + "renderSeconds": 0.00501704216003418, + "simulationSeconds": 0.007787942886352539, + "tick": 89 + }, + { + "renderSeconds": 0.004503011703491211, + "simulationSeconds": 0.007074952125549316, + "tick": 90 + }, + { + "renderSeconds": 0.003666996955871582, + "simulationSeconds": 0.014477968215942383, + "tick": 92 + }, + { + "renderSeconds": 0.004492998123168945, + "simulationSeconds": 0.006615042686462402, + "tick": 93 + }, + { + "renderSeconds": 0.003849029541015625, + "simulationSeconds": 0.006065964698791504, + "tick": 94 + }, + { + "renderSeconds": 0.0036079883575439453, + "simulationSeconds": 0.013257980346679688, + "tick": 96 + }, + { + "renderSeconds": 0.004238009452819824, + "simulationSeconds": 0.0064029693603515625, + "tick": 97 + }, + { + "renderSeconds": 0.004034996032714844, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.00412595272064209, + "simulationSeconds": 0.006599068641662598, + "tick": 98 + }, + { + "renderSeconds": 0.003516077995300293, + "simulationSeconds": 0.012691974639892578, + "tick": 100 + }, + { + "renderSeconds": 0.0036460161209106445, + "simulationSeconds": 0.005920052528381348, + "tick": 101 + }, + { + "renderSeconds": 0.00480198860168457, + "simulationSeconds": 0.006946086883544922, + "tick": 102 + }, + { + "renderSeconds": 0.003993034362792969, + "simulationSeconds": 0.006289005279541016, + "tick": 103 + }, + { + "renderSeconds": 0.003954052925109863, + "simulationSeconds": 0.006438016891479492, + "tick": 104 + }, + { + "renderSeconds": 0.003592967987060547, + "simulationSeconds": 0.0062639713287353516, + "tick": 105 + }, + { + "renderSeconds": 0.0043179988861083984, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.004127979278564453, + "simulationSeconds": 0.014667987823486328, + "tick": 107 + }, + { + "renderSeconds": 0.0039049386978149414, + "simulationSeconds": 0.013445019721984863, + "tick": 109 + }, + { + "renderSeconds": 0.004680991172790527, + "simulationSeconds": 0.01282799243927002, + "tick": 111 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.0068770647048950195, + "tick": 112 + }, + { + "renderSeconds": 0.0039730072021484375, + "simulationSeconds": 0.0066040754318237305, + "tick": 113 + }, + { + "renderSeconds": 0.002933025360107422, + "simulationSeconds": 0.013459086418151855, + "tick": 115 + }, + { + "renderSeconds": 0.003583073616027832, + "simulationSeconds": 0.013458013534545898, + "tick": 117 + }, + { + "renderSeconds": 0.0038160085678100586, + "simulationSeconds": 0.00710296630859375, + "tick": 118 + }, + { + "renderSeconds": 0.0043239593505859375, + "simulationSeconds": 0.006759047508239746, + "tick": 119 + }, + { + "renderSeconds": 0.0034350156784057617, + "simulationSeconds": 0.0061789751052856445, + "tick": 120 + }, + { + "renderSeconds": 0.004207968711853027, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0035469532012939453, + "simulationSeconds": 0.012848973274230957, + "tick": 122 + }, + { + "renderSeconds": 0.00418698787689209, + "simulationSeconds": 0.008376002311706543, + "tick": 123 + }, + { + "renderSeconds": 0.0038590431213378906, + "simulationSeconds": 0.014613986015319824, + "tick": 125 + }, + { + "renderSeconds": 0.00474703311920166, + "simulationSeconds": 0.007409930229187012, + "tick": 126 + }, + { + "renderSeconds": 0.005082964897155762, + "simulationSeconds": 0.00725102424621582, + "tick": 127 + }, + { + "renderSeconds": 0.0037239789962768555, + "simulationSeconds": 0.01394498348236084, + "tick": 129 + }, + { + "renderSeconds": 0.0038269758224487305, + "simulationSeconds": 0.006036996841430664, + "tick": 130 + }, + { + "renderSeconds": 0.0034880638122558594, + "simulationSeconds": 0.006924033164978027, + "tick": 131 + }, + { + "renderSeconds": 0.0034819841384887695, + "simulationSeconds": 0.0064220428466796875, + "tick": 132 + }, + { + "renderSeconds": 0.0036220550537109375, + "simulationSeconds": 0.006106972694396973, + "tick": 133 + }, + { + "renderSeconds": 0.0037539005279541016, + "simulationSeconds": 0.006327986717224121, + "tick": 134 + }, + { + "renderSeconds": 0.004562020301818848, + "simulationSeconds": 0.0073089599609375, + "tick": 135 + }, + { + "renderSeconds": 0.003614068031311035, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0038640499114990234, + "simulationSeconds": 0.014181971549987793, + "tick": 137 + }, + { + "renderSeconds": 0.003885984420776367, + "simulationSeconds": 0.006675004959106445, + "tick": 138 + }, + { + "renderSeconds": 0.004104971885681152, + "simulationSeconds": 0.007177948951721191, + "tick": 139 + }, + { + "renderSeconds": 0.004127025604248047, + "simulationSeconds": 0.0067980289459228516, + "tick": 140 + }, + { + "renderSeconds": 0.0041849613189697266, + "simulationSeconds": 0.007391095161437988, + "tick": 141 + }, + { + "renderSeconds": 0.004308938980102539, + "simulationSeconds": 0.007339000701904297, + "tick": 142 + }, + { + "renderSeconds": 0.0042760372161865234, + "simulationSeconds": 0.006805062294006348, + "tick": 143 + }, + { + "renderSeconds": 0.004358053207397461, + "simulationSeconds": 0.014224052429199219, + "tick": 145 + }, + { + "renderSeconds": 0.003879070281982422, + "simulationSeconds": 0.00725102424621582, + "tick": 146 + }, + { + "renderSeconds": 0.0036820173263549805, + "simulationSeconds": 0.016659021377563477, + "tick": 148 + }, + { + "renderSeconds": 0.0044220685958862305, + "simulationSeconds": 0.006727933883666992, + "tick": 149 + }, + { + "renderSeconds": 0.004037022590637207, + "simulationSeconds": 0.0062209367752075195, + "tick": 150 + }, + { + "renderSeconds": 0.0033429861068725586, + "simulationSeconds": 0.01657700538635254, + "tick": 152 + }, + { + "renderSeconds": 0.004797101020812988, + "simulationSeconds": 0.0066509246826171875, + "tick": 153 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.006204009056091309, + "tick": 154 + }, + { + "renderSeconds": 0.004457950592041016, + "simulationSeconds": 0.006435036659240723, + "tick": 155 + }, + { + "renderSeconds": 0.0037769079208374023, + "simulationSeconds": 0.005714058876037598, + "tick": 156 + }, + { + "renderSeconds": 0.003912091255187988, + "simulationSeconds": 0.0059909820556640625, + "tick": 157 + }, + { + "renderSeconds": 0.003910064697265625, + "simulationSeconds": 9.5367431640625e-07, + "tick": 157 + }, + { + "renderSeconds": 0.004063963890075684, + "simulationSeconds": 0.0067729949951171875, + "tick": 158 + }, + { + "renderSeconds": 0.004736900329589844, + "simulationSeconds": 0.015340924263000488, + "tick": 160 + }, + { + "renderSeconds": 0.006882905960083008, + "simulationSeconds": 0.018683910369873047, + "tick": 162 + }, + { + "renderSeconds": 0.004395008087158203, + "simulationSeconds": 0.015768051147460938, + "tick": 164 + }, + { + "renderSeconds": 0.003781914710998535, + "simulationSeconds": 0.013656973838806152, + "tick": 166 + }, + { + "renderSeconds": 0.0034629106521606445, + "simulationSeconds": 0.013615012168884277, + "tick": 168 + }, + { + "renderSeconds": 0.0032529830932617188, + "simulationSeconds": 0.013325929641723633, + "tick": 170 + }, + { + "renderSeconds": 0.0044291019439697266, + "simulationSeconds": 0.006737947463989258, + "tick": 171 + }, + { + "renderSeconds": 0.004220008850097656, + "simulationSeconds": 0.006013989448547363, + "tick": 172 + }, + { + "renderSeconds": 0.0036470890045166016, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.0039520263671875, + "simulationSeconds": 0.006760001182556152, + "tick": 173 + }, + { + "renderSeconds": 0.00356900691986084, + "simulationSeconds": 0.012696981430053711, + "tick": 175 + }, + { + "renderSeconds": 0.0035409927368164062, + "simulationSeconds": 0.00636601448059082, + "tick": 176 + }, + { + "renderSeconds": 0.004701018333435059, + "simulationSeconds": 0.0072209835052490234, + "tick": 177 + }, + { + "renderSeconds": 0.004477024078369141, + "simulationSeconds": 0.0075969696044921875, + "tick": 178 + }, + { + "renderSeconds": 0.004204988479614258, + "simulationSeconds": 0.015626072883605957, + "tick": 180 + }, + { + "renderSeconds": 0.004303932189941406, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.004763007164001465, + "simulationSeconds": 0.015163064002990723, + "tick": 182 + }, + { + "renderSeconds": 0.004761934280395508, + "simulationSeconds": 0.014773964881896973, + "tick": 184 + }, + { + "renderSeconds": 0.0038319826126098633, + "simulationSeconds": 0.013096928596496582, + "tick": 186 + }, + { + "renderSeconds": 0.0036278963088989258, + "simulationSeconds": 0.006589055061340332, + "tick": 187 + }, + { + "renderSeconds": 0.0038080215454101562, + "simulationSeconds": 0.006757020950317383, + "tick": 188 + }, + { + "renderSeconds": 0.00330197811126709, + "simulationSeconds": 0.012199997901916504, + "tick": 190 + }, + { + "renderSeconds": 0.0039980411529541016, + "simulationSeconds": 0.006742000579833984, + "tick": 191 + }, + { + "renderSeconds": 0.004051089286804199, + "simulationSeconds": 0.006975889205932617, + "tick": 192 + }, + { + "renderSeconds": 0.0037779808044433594, + "simulationSeconds": 0.013736963272094727, + "tick": 194 + }, + { + "renderSeconds": 0.004714012145996094, + "simulationSeconds": 0.008234977722167969, + "tick": 195 + }, + { + "renderSeconds": 0.00521695613861084, + "simulationSeconds": 0, + "tick": 195 + }, + { + "renderSeconds": 0.004750967025756836, + "simulationSeconds": 0.01786196231842041, + "tick": 197 + }, + { + "renderSeconds": 0.005197048187255859, + "simulationSeconds": 0.017747044563293457, + "tick": 199 + }, + { + "renderSeconds": 0.004477024078369141, + "simulationSeconds": 0.024073004722595215, + "tick": 202 + }, + { + "renderSeconds": 0.0034210681915283203, + "simulationSeconds": 0.014219045639038086, + "tick": 204 + }, + { + "renderSeconds": 0.0034900903701782227, + "simulationSeconds": 0.013737916946411133, + "tick": 206 + }, + { + "renderSeconds": 0.003993988037109375, + "simulationSeconds": 0.01253199577331543, + "tick": 208 + }, + { + "renderSeconds": 0.00371706485748291, + "simulationSeconds": 0.006289005279541016, + "tick": 209 + }, + { + "renderSeconds": 0.004317045211791992, + "simulationSeconds": 0.006616950035095215, + "tick": 210 + }, + { + "renderSeconds": 0.0033440589904785156, + "simulationSeconds": 0.012408018112182617, + "tick": 212 + }, + { + "renderSeconds": 0.004060983657836914, + "simulationSeconds": 0.006289005279541016, + "tick": 213 + }, + { + "renderSeconds": 0.004104018211364746, + "simulationSeconds": 0.007339954376220703, + "tick": 214 + }, + { + "renderSeconds": 0.004290938377380371, + "simulationSeconds": 0.007121920585632324, + "tick": 215 + }, + { + "renderSeconds": 0.004141092300415039, + "simulationSeconds": 0.007501959800720215, + "tick": 216 + }, + { + "renderSeconds": 0.004293084144592285, + "simulationSeconds": 0.007388949394226074, + "tick": 217 + }, + { + "renderSeconds": 0.003860950469970703, + "simulationSeconds": 0.007310986518859863, + "tick": 218 + }, + { + "renderSeconds": 0.003980040550231934, + "simulationSeconds": 0.012428998947143555, + "tick": 220 + }, + { + "renderSeconds": 0.0034641027450561523, + "simulationSeconds": 0.006430983543395996, + "tick": 221 + }, + { + "renderSeconds": 0.004475951194763184, + "simulationSeconds": 0.006829977035522461, + "tick": 222 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.006457924842834473, + "tick": 223 + }, + { + "renderSeconds": 0.0035990476608276367, + "simulationSeconds": 0.006680965423583984, + "tick": 224 + }, + { + "renderSeconds": 0.004029989242553711, + "simulationSeconds": 0.006167054176330566, + "tick": 225 + }, + { + "renderSeconds": 0.004181981086730957, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.013306021690368652, + "tick": 227 + }, + { + "renderSeconds": 0.0040400028228759766, + "simulationSeconds": 0.01332390308380127, + "tick": 229 + }, + { + "renderSeconds": 0.0037480592727661133, + "simulationSeconds": 0.0070459842681884766, + "tick": 230 + }, + { + "renderSeconds": 0.004023075103759766, + "simulationSeconds": 0.0068329572677612305, + "tick": 231 + }, + { + "renderSeconds": 0.003676891326904297, + "simulationSeconds": 0.0064650774002075195, + "tick": 232 + }, + { + "renderSeconds": 0.004143953323364258, + "simulationSeconds": 9.5367431640625e-07, + "tick": 232 + }, + { + "renderSeconds": 0.0035910606384277344, + "simulationSeconds": 0.00647890567779541, + "tick": 233 + }, + { + "renderSeconds": 0.003394007682800293, + "simulationSeconds": 0.011947989463806152, + "tick": 235 + }, + { + "renderSeconds": 0.0043479204177856445, + "simulationSeconds": 0.006538033485412598, + "tick": 236 + }, + { + "renderSeconds": 0.003810882568359375, + "simulationSeconds": 0.007285952568054199, + "tick": 237 + }, + { + "renderSeconds": 0.004647970199584961, + "simulationSeconds": 0.01842200756072998, + "tick": 239 + }, + { + "renderSeconds": 0.005138039588928223, + "simulationSeconds": 0.009216904640197754, + "tick": 240 + }, + { + "renderSeconds": 0.004091978073120117, + "simulationSeconds": 0.014181017875671387, + "tick": 242 + }, + { + "renderSeconds": 0.004230022430419922, + "simulationSeconds": 0.007407069206237793, + "tick": 243 + }, + { + "renderSeconds": 0.003223896026611328, + "simulationSeconds": 0.014390110969543457, + "tick": 245 + }, + { + "renderSeconds": 0.004043936729431152, + "simulationSeconds": 0.006239056587219238, + "tick": 246 + }, + { + "renderSeconds": 0.0032929182052612305, + "simulationSeconds": 0.0062100887298583984, + "tick": 247 + }, + { + "renderSeconds": 0.003527045249938965, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.0034029483795166016, + "simulationSeconds": 0.006896018981933594, + "tick": 248 + }, + { + "renderSeconds": 0.0032470226287841797, + "simulationSeconds": 0.01223301887512207, + "tick": 250 + }, + { + "renderSeconds": 0.0039049386978149414, + "simulationSeconds": 0.0066759586334228516, + "tick": 251 + }, + { + "renderSeconds": 0.003921985626220703, + "simulationSeconds": 0.006987929344177246, + "tick": 252 + }, + { + "renderSeconds": 0.003940939903259277, + "simulationSeconds": 0.007848024368286133, + "tick": 253 + }, + { + "renderSeconds": 0.0038640499114990234, + "simulationSeconds": 0.006271004676818848, + "tick": 254 + }, + { + "renderSeconds": 0.004094958305358887, + "simulationSeconds": 0.006595015525817871, + "tick": 255 + }, + { + "renderSeconds": 0.003515005111694336, + "simulationSeconds": 0, + "tick": 255 + }, + { + "renderSeconds": 0.003423929214477539, + "simulationSeconds": 0.013084053993225098, + "tick": 257 + }, + { + "renderSeconds": 0.0042018890380859375, + "simulationSeconds": 0.005973935127258301, + "tick": 258 + }, + { + "renderSeconds": 0.0038930177688598633, + "simulationSeconds": 0.007883071899414062, + "tick": 259 + }, + { + "renderSeconds": 0.0038149356842041016, + "simulationSeconds": 0.013659000396728516, + "tick": 261 + }, + { + "renderSeconds": 0.004362940788269043, + "simulationSeconds": 0.006954073905944824, + "tick": 262 + }, + { + "renderSeconds": 0.0046759843826293945, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 262 + }, + { + "renderSeconds": 0.004330992698669434, + "simulationSeconds": 0.007425069808959961, + "tick": 263 + }, + { + "renderSeconds": 0.004114985466003418, + "simulationSeconds": 0.015716075897216797, + "tick": 265 + }, + { + "renderSeconds": 0.0038100481033325195, + "simulationSeconds": 0.014055013656616211, + "tick": 267 + }, + { + "renderSeconds": 0.003834962844848633, + "simulationSeconds": 0.013905048370361328, + "tick": 269 + }, + { + "renderSeconds": 0.004083037376403809, + "simulationSeconds": 0.0066030025482177734, + "tick": 270 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.014316082000732422, + "tick": 272 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.006175041198730469, + "tick": 273 + }, + { + "renderSeconds": 0.00389707088470459, + "simulationSeconds": 0.006866931915283203, + "tick": 274 + }, + { + "renderSeconds": 0.003612041473388672, + "simulationSeconds": 0.006528973579406738, + "tick": 275 + }, + { + "renderSeconds": 0.00371396541595459, + "simulationSeconds": 0.006659984588623047, + "tick": 276 + }, + { + "renderSeconds": 0.004098057746887207, + "simulationSeconds": 0.0071370601654052734, + "tick": 277 + }, + { + "renderSeconds": 0.004667997360229492, + "simulationSeconds": 0.007090926170349121, + "tick": 278 + }, + { + "renderSeconds": 0.003970026969909668, + "simulationSeconds": 0.014412999153137207, + "tick": 280 + }, + { + "renderSeconds": 0.004531979560852051, + "simulationSeconds": 0.007248997688293457, + "tick": 281 + }, + { + "renderSeconds": 0.0036160945892333984, + "simulationSeconds": 0.012840032577514648, + "tick": 283 + }, + { + "renderSeconds": 0.004027962684631348, + "simulationSeconds": 0.006543993949890137, + "tick": 284 + }, + { + "renderSeconds": 0.0037000179290771484, + "simulationSeconds": 0.006412982940673828, + "tick": 285 + }, + { + "renderSeconds": 0.00389707088470459, + "simulationSeconds": 0, + "tick": 285 + }, + { + "renderSeconds": 0.003404974937438965, + "simulationSeconds": 0.01232302188873291, + "tick": 287 + }, + { + "renderSeconds": 0.004241943359375, + "simulationSeconds": 0.006729006767272949, + "tick": 288 + }, + { + "renderSeconds": 0.003975987434387207, + "simulationSeconds": 0.0071790218353271484, + "tick": 289 + }, + { + "renderSeconds": 0.00392603874206543, + "simulationSeconds": 0.006684064865112305, + "tick": 290 + }, + { + "renderSeconds": 0.003914952278137207, + "simulationSeconds": 0.012380003929138184, + "tick": 292 + }, + { + "renderSeconds": 0.00412595272064209, + "simulationSeconds": 0, + "tick": 292 + }, + { + "renderSeconds": 0.0043669939041137695, + "simulationSeconds": 0.006412982940673828, + "tick": 293 + }, + { + "renderSeconds": 0.003673076629638672, + "simulationSeconds": 0.012965083122253418, + "tick": 295 + }, + { + "renderSeconds": 0.003982901573181152, + "simulationSeconds": 0.0059250593185424805, + "tick": 296 + }, + { + "renderSeconds": 0.003994941711425781, + "simulationSeconds": 0.005803942680358887, + "tick": 297 + }, + { + "renderSeconds": 0.0038700103759765625, + "simulationSeconds": 0.005982041358947754, + "tick": 298 + }, + { + "renderSeconds": 0.0037540197372436523, + "simulationSeconds": 0.005815982818603516, + "tick": 299 + }, + { + "renderSeconds": 0.0039920806884765625, + "simulationSeconds": 0.0065119266510009766, + "tick": 300 + }, + { + "renderSeconds": 0.004008054733276367, + "simulationSeconds": 0, + "tick": 300 + }, + { + "renderSeconds": 0.0036859512329101562, + "simulationSeconds": 0.013458967208862305, + "tick": 302 + }, + { + "renderSeconds": 0.00350797176361084, + "simulationSeconds": 0.005733013153076172, + "tick": 303 + }, + { + "renderSeconds": 0.0041779279708862305, + "simulationSeconds": 0.0064239501953125, + "tick": 304 + }, + { + "renderSeconds": 0.003399968147277832, + "simulationSeconds": 0.005964994430541992, + "tick": 305 + }, + { + "renderSeconds": 0.00373995304107666, + "simulationSeconds": 0.006431102752685547, + "tick": 306 + }, + { + "renderSeconds": 0.003958940505981445, + "simulationSeconds": 0.006317019462585449, + "tick": 307 + }, + { + "renderSeconds": 0.003715991973876953, + "simulationSeconds": 0, + "tick": 307 + }, + { + "renderSeconds": 0.00448000431060791, + "simulationSeconds": 0.005859017372131348, + "tick": 308 + }, + { + "renderSeconds": 0.0036050081253051758, + "simulationSeconds": 0.0117720365524292, + "tick": 310 + }, + { + "renderSeconds": 0.004397988319396973, + "simulationSeconds": 0.007047057151794434, + "tick": 311 + }, + { + "renderSeconds": 0.003889918327331543, + "simulationSeconds": 0.006558060646057129, + "tick": 312 + }, + { + "renderSeconds": 0.003906965255737305, + "simulationSeconds": 0.014819025993347168, + "tick": 314 + }, + { + "renderSeconds": 0.004754066467285156, + "simulationSeconds": 0.00857698917388916, + "tick": 315 + }, + { + "renderSeconds": 0.00415802001953125, + "simulationSeconds": 0, + "tick": 315 + }, + { + "renderSeconds": 0.004588007926940918, + "simulationSeconds": 0.01355600357055664, + "tick": 317 + }, + { + "renderSeconds": 0.003782033920288086, + "simulationSeconds": 0.011866927146911621, + "tick": 319 + }, + { + "renderSeconds": 0.003654956817626953, + "simulationSeconds": 0.013141989707946777, + "tick": 321 + }, + { + "renderSeconds": 0.004374980926513672, + "simulationSeconds": 0.006803989410400391, + "tick": 322 + }, + { + "renderSeconds": 0.004119992256164551, + "simulationSeconds": 0.006114006042480469, + "tick": 323 + }, + { + "renderSeconds": 0.004078984260559082, + "simulationSeconds": 0.013131976127624512, + "tick": 325 + }, + { + "renderSeconds": 0.0044100284576416016, + "simulationSeconds": 0.005793929100036621, + "tick": 326 + }, + { + "renderSeconds": 0.00466001033782959, + "simulationSeconds": 0.006793022155761719, + "tick": 327 + }, + { + "renderSeconds": 0.0040160417556762695, + "simulationSeconds": 0.012629032135009766, + "tick": 329 + }, + { + "renderSeconds": 0.0036989450454711914, + "simulationSeconds": 0.006492972373962402, + "tick": 330 + }, + { + "renderSeconds": 0.004253983497619629, + "simulationSeconds": 0, + "tick": 330 + }, + { + "renderSeconds": 0.0037900209426879883, + "simulationSeconds": 0.012757062911987305, + "tick": 332 + }, + { + "renderSeconds": 0.005010008811950684, + "simulationSeconds": 0.007474064826965332, + "tick": 333 + }, + { + "renderSeconds": 0.004091024398803711, + "simulationSeconds": 0.006295919418334961, + "tick": 334 + }, + { + "renderSeconds": 0.0039479732513427734, + "simulationSeconds": 0.014053940773010254, + "tick": 336 + }, + { + "renderSeconds": 0.004507899284362793, + "simulationSeconds": 0.006660103797912598, + "tick": 337 + }, + { + "renderSeconds": 0.004034996032714844, + "simulationSeconds": 0, + "tick": 337 + }, + { + "renderSeconds": 0.004533886909484863, + "simulationSeconds": 0.006596088409423828, + "tick": 338 + }, + { + "renderSeconds": 0.0037540197372436523, + "simulationSeconds": 0.012823939323425293, + "tick": 340 + }, + { + "renderSeconds": 0.0043250322341918945, + "simulationSeconds": 0.006283998489379883, + "tick": 341 + }, + { + "renderSeconds": 0.004073023796081543, + "simulationSeconds": 0.006402015686035156, + "tick": 342 + }, + { + "renderSeconds": 0.004414916038513184, + "simulationSeconds": 0.007333040237426758, + "tick": 343 + }, + { + "renderSeconds": 0.0038330554962158203, + "simulationSeconds": 0.014265060424804688, + "tick": 345 + }, + { + "renderSeconds": 0.00435793399810791, + "simulationSeconds": 0, + "tick": 345 + }, + { + "renderSeconds": 0.0036410093307495117, + "simulationSeconds": 0.01286005973815918, + "tick": 347 + }, + { + "renderSeconds": 0.00371396541595459, + "simulationSeconds": 0.006083965301513672, + "tick": 348 + }, + { + "renderSeconds": 0.004283905029296875, + "simulationSeconds": 0.0064231157302856445, + "tick": 349 + }, + { + "renderSeconds": 0.0037549734115600586, + "simulationSeconds": 0.005957961082458496, + "tick": 350 + }, + { + "renderSeconds": 0.0037130117416381836, + "simulationSeconds": 0.0062940120697021484, + "tick": 351 + }, + { + "renderSeconds": 0.0038439035415649414, + "simulationSeconds": 0.006199002265930176, + "tick": 352 + }, + { + "renderSeconds": 0.003816962242126465, + "simulationSeconds": 0, + "tick": 352 + }, + { + "renderSeconds": 0.0032880306243896484, + "simulationSeconds": 0.0070459842681884766, + "tick": 353 + }, + { + "renderSeconds": 0.00342404842376709, + "simulationSeconds": 0.012328028678894043, + "tick": 355 + }, + { + "renderSeconds": 0.0035979747772216797, + "simulationSeconds": 0.006649971008300781, + "tick": 356 + }, + { + "renderSeconds": 0.0037480592727661133, + "simulationSeconds": 0.006381988525390625, + "tick": 357 + }, + { + "renderSeconds": 0.004199028015136719, + "simulationSeconds": 0.007543087005615234, + "tick": 358 + }, + { + "renderSeconds": 0.00398099422454834, + "simulationSeconds": 0.006242036819458008, + "tick": 359 + }, + { + "renderSeconds": 0.003877997398376465, + "simulationSeconds": 0.006157040596008301, + "tick": 360 + }, + { + "renderSeconds": 0.0035409927368164062, + "simulationSeconds": 0, + "tick": 360 + }, + { + "renderSeconds": 0.003901958465576172, + "simulationSeconds": 0.015141963958740234, + "tick": 362 + }, + { + "renderSeconds": 0.0051250457763671875, + "simulationSeconds": 0.01801002025604248, + "tick": 364 + }, + { + "renderSeconds": 0.003920912742614746, + "simulationSeconds": 0.012840032577514648, + "tick": 366 + }, + { + "renderSeconds": 0.004029035568237305, + "simulationSeconds": 0.006907939910888672, + "tick": 367 + }, + { + "renderSeconds": 0.003983020782470703, + "simulationSeconds": 0, + "tick": 367 + }, + { + "renderSeconds": 0.00416409969329834, + "simulationSeconds": 0.007084965705871582, + "tick": 368 + }, + { + "renderSeconds": 0.0035920143127441406, + "simulationSeconds": 0.013195991516113281, + "tick": 370 + }, + { + "renderSeconds": 0.0052340030670166016, + "simulationSeconds": 0.006269931793212891, + "tick": 371 + }, + { + "renderSeconds": 0.003612995147705078, + "simulationSeconds": 0.014235973358154297, + "tick": 373 + }, + { + "renderSeconds": 0.004509091377258301, + "simulationSeconds": 0.006573915481567383, + "tick": 374 + }, + { + "renderSeconds": 0.0038499832153320312, + "simulationSeconds": 0.007771968841552734, + "tick": 375 + }, + { + "renderSeconds": 0.004279017448425293, + "simulationSeconds": 0, + "tick": 375 + }, + { + "renderSeconds": 0.0035109519958496094, + "simulationSeconds": 0.012523055076599121, + "tick": 377 + }, + { + "renderSeconds": 0.0035170316696166992, + "simulationSeconds": 0.012708902359008789, + "tick": 379 + }, + { + "renderSeconds": 0.004166007041931152, + "simulationSeconds": 0.006474018096923828, + "tick": 380 + }, + { + "renderSeconds": 0.003915071487426758, + "simulationSeconds": 0.006786942481994629, + "tick": 381 + }, + { + "renderSeconds": 0.005031943321228027, + "simulationSeconds": 0.006695985794067383, + "tick": 382 + }, + { + "renderSeconds": 0.003943085670471191, + "simulationSeconds": 0, + "tick": 382 + }, + { + "renderSeconds": 0.004759073257446289, + "simulationSeconds": 0.006866931915283203, + "tick": 383 + }, + { + "renderSeconds": 0.0036580562591552734, + "simulationSeconds": 0.01285696029663086, + "tick": 385 + }, + { + "renderSeconds": 0.004053950309753418, + "simulationSeconds": 0.015381097793579102, + "tick": 387 + }, + { + "renderSeconds": 0.005005002021789551, + "simulationSeconds": 0.007516026496887207, + "tick": 388 + }, + { + "renderSeconds": 0.004195094108581543, + "simulationSeconds": 0.012969017028808594, + "tick": 390 + }, + { + "renderSeconds": 0.004236936569213867, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 390 + }, + { + "renderSeconds": 0.0042029619216918945, + "simulationSeconds": 0.013839006423950195, + "tick": 392 + }, + { + "renderSeconds": 0.003484010696411133, + "simulationSeconds": 0.006299018859863281, + "tick": 393 + }, + { + "renderSeconds": 0.003816962242126465, + "simulationSeconds": 0.013769030570983887, + "tick": 395 + }, + { + "renderSeconds": 0.003931999206542969, + "simulationSeconds": 0.006328940391540527, + "tick": 396 + }, + { + "renderSeconds": 0.004214048385620117, + "simulationSeconds": 0.006701946258544922, + "tick": 397 + }, + { + "renderSeconds": 0.0036159753799438477, + "simulationSeconds": 9.5367431640625e-07, + "tick": 397 + }, + { + "renderSeconds": 0.004912018775939941, + "simulationSeconds": 0.007288932800292969, + "tick": 398 + }, + { + "renderSeconds": 0.00347900390625, + "simulationSeconds": 0.012714028358459473, + "tick": 400 + }, + { + "renderSeconds": 0.00374603271484375, + "simulationSeconds": 0.013064980506896973, + "tick": 402 + }, + { + "renderSeconds": 0.004148006439208984, + "simulationSeconds": 0.01377403736114502, + "tick": 404 + }, + { + "renderSeconds": 0.0036240816116333008, + "simulationSeconds": 0.006760954856872559, + "tick": 405 + }, + { + "renderSeconds": 0.003863096237182617, + "simulationSeconds": 0.013133883476257324, + "tick": 407 + }, + { + "renderSeconds": 0.0038499832153320312, + "simulationSeconds": 0.013788938522338867, + "tick": 409 + }, + { + "renderSeconds": 0.003740072250366211, + "simulationSeconds": 0.006579995155334473, + "tick": 410 + }, + { + "renderSeconds": 0.004748940467834473, + "simulationSeconds": 0.006802916526794434, + "tick": 411 + }, + { + "renderSeconds": 0.003751039505004883, + "simulationSeconds": 0.006648063659667969, + "tick": 412 + }, + { + "renderSeconds": 0.004612922668457031, + "simulationSeconds": 0, + "tick": 412 + }, + { + "renderSeconds": 0.003924012184143066, + "simulationSeconds": 0.007243990898132324, + "tick": 413 + }, + { + "renderSeconds": 0.0037310123443603516, + "simulationSeconds": 0.014153003692626953, + "tick": 415 + }, + { + "renderSeconds": 0.0035500526428222656, + "simulationSeconds": 0.012910962104797363, + "tick": 417 + }, + { + "renderSeconds": 0.003793001174926758, + "simulationSeconds": 0.013256072998046875, + "tick": 419 + }, + { + "renderSeconds": 0.004173994064331055, + "simulationSeconds": 0.006888031959533691, + "tick": 420 + }, + { + "renderSeconds": 0.004045009613037109, + "simulationSeconds": 0.012264013290405273, + "tick": 422 + }, + { + "renderSeconds": 0.004075050354003906, + "simulationSeconds": 0.014523983001708984, + "tick": 424 + }, + { + "renderSeconds": 0.0040819644927978516, + "simulationSeconds": 0.006330013275146484, + "tick": 425 + }, + { + "renderSeconds": 0.003918051719665527, + "simulationSeconds": 0.006008028984069824, + "tick": 426 + }, + { + "renderSeconds": 0.003950953483581543, + "simulationSeconds": 0.006322026252746582, + "tick": 427 + }, + { + "renderSeconds": 0.004091024398803711, + "simulationSeconds": 0, + "tick": 427 + }, + { + "renderSeconds": 0.004181027412414551, + "simulationSeconds": 0.0075190067291259766, + "tick": 428 + }, + { + "renderSeconds": 0.003838062286376953, + "simulationSeconds": 0.014236092567443848, + "tick": 430 + }, + { + "renderSeconds": 0.004334926605224609, + "simulationSeconds": 0.014171957969665527, + "tick": 432 + }, + { + "renderSeconds": 0.004297018051147461, + "simulationSeconds": 0.014696002006530762, + "tick": 434 + }, + { + "renderSeconds": 0.0039179325103759766, + "simulationSeconds": 0.00701296329498291, + "tick": 435 + }, + { + "renderSeconds": 0.0038809776306152344, + "simulationSeconds": 0.013361930847167969, + "tick": 437 + }, + { + "renderSeconds": 0.0031859874725341797, + "simulationSeconds": 0.0129469633102417, + "tick": 439 + }, + { + "renderSeconds": 0.0037720203399658203, + "simulationSeconds": 0.012392997741699219, + "tick": 441 + }, + { + "renderSeconds": 0.003695964813232422, + "simulationSeconds": 0.006385087966918945, + "tick": 442 + }, + { + "renderSeconds": 0.003430008888244629, + "simulationSeconds": 0.007094025611877441, + "tick": 443 + }, + { + "renderSeconds": 0.0031540393829345703, + "simulationSeconds": 0.013320088386535645, + "tick": 445 + }, + { + "renderSeconds": 0.0038878917694091797, + "simulationSeconds": 0.006045103073120117, + "tick": 446 + }, + { + "renderSeconds": 0.00410008430480957, + "simulationSeconds": 0.006101012229919434, + "tick": 447 + }, + { + "renderSeconds": 0.004253983497619629, + "simulationSeconds": 0.0068149566650390625, + "tick": 448 + }, + { + "renderSeconds": 0.0035469532012939453, + "simulationSeconds": 0.006453990936279297, + "tick": 449 + }, + { + "renderSeconds": 0.0036590099334716797, + "simulationSeconds": 0.0068929195404052734, + "tick": 450 + }, + { + "renderSeconds": 0.0035600662231445312, + "simulationSeconds": 0, + "tick": 450 + }, + { + "renderSeconds": 0.0033910274505615234, + "simulationSeconds": 0.013247966766357422, + "tick": 452 + }, + { + "renderSeconds": 0.00424802303314209, + "simulationSeconds": 0.006582975387573242, + "tick": 453 + }, + { + "renderSeconds": 0.004317045211791992, + "simulationSeconds": 0.0060149431228637695, + "tick": 454 + }, + { + "renderSeconds": 0.004148960113525391, + "simulationSeconds": 0.013776063919067383, + "tick": 456 + }, + { + "renderSeconds": 0.0047789812088012695, + "simulationSeconds": 0.006237983703613281, + "tick": 457 + }, + { + "renderSeconds": 0.004253983497619629, + "simulationSeconds": 0, + "tick": 457 + }, + { + "renderSeconds": 0.004415988922119141, + "simulationSeconds": 0.006344914436340332, + "tick": 458 + }, + { + "renderSeconds": 0.0036211013793945312, + "simulationSeconds": 0.014120936393737793, + "tick": 460 + }, + { + "renderSeconds": 0.0038290023803710938, + "simulationSeconds": 0.01129305362701416, + "tick": 462 + }, + { + "renderSeconds": 0.0037289857864379883, + "simulationSeconds": 0.005777955055236816, + "tick": 463 + }, + { + "renderSeconds": 0.004253029823303223, + "simulationSeconds": 0.006563067436218262, + "tick": 464 + }, + { + "renderSeconds": 0.003665924072265625, + "simulationSeconds": 0.005806088447570801, + "tick": 465 + }, + { + "renderSeconds": 0.003949999809265137, + "simulationSeconds": 0, + "tick": 465 + }, + { + "renderSeconds": 0.003497004508972168, + "simulationSeconds": 0.01170492172241211, + "tick": 467 + }, + { + "renderSeconds": 0.0035120248794555664, + "simulationSeconds": 0.00566709041595459, + "tick": 468 + }, + { + "renderSeconds": 0.004312992095947266, + "simulationSeconds": 0.006983041763305664, + "tick": 469 + }, + { + "renderSeconds": 0.003975987434387207, + "simulationSeconds": 0.005966067314147949, + "tick": 470 + }, + { + "renderSeconds": 0.0037070512771606445, + "simulationSeconds": 0.006062984466552734, + "tick": 471 + }, + { + "renderSeconds": 0.0040280818939208984, + "simulationSeconds": 0.005535006523132324, + "tick": 472 + }, + { + "renderSeconds": 0.00433194637298584, + "simulationSeconds": 0, + "tick": 472 + }, + { + "renderSeconds": 0.004415988922119141, + "simulationSeconds": 0.007197022438049316, + "tick": 473 + }, + { + "renderSeconds": 0.0039789676666259766, + "simulationSeconds": 0.013460040092468262, + "tick": 475 + }, + { + "renderSeconds": 0.004786014556884766, + "simulationSeconds": 0.007360935211181641, + "tick": 476 + }, + { + "renderSeconds": 0.004247069358825684, + "simulationSeconds": 0.012386918067932129, + "tick": 478 + }, + { + "renderSeconds": 0.004016995429992676, + "simulationSeconds": 0.00751495361328125, + "tick": 479 + }, + { + "renderSeconds": 0.004423975944519043, + "simulationSeconds": 0.00718998908996582, + "tick": 480 + }, + { + "renderSeconds": 0.003751993179321289, + "simulationSeconds": 0, + "tick": 480 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.01221001148223877, + "tick": 482 + }, + { + "renderSeconds": 0.002644062042236328, + "simulationSeconds": 0.005913972854614258, + "tick": 483 + }, + { + "renderSeconds": 0.0027399063110351562, + "simulationSeconds": 0.006139993667602539, + "tick": 484 + }, + { + "renderSeconds": 0.00244903564453125, + "simulationSeconds": 0.0060160160064697266, + "tick": 485 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.006085991859436035, + "tick": 486 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.006108999252319336, + "tick": 487 + }, + { + "renderSeconds": 0.002975940704345703, + "simulationSeconds": 0, + "tick": 487 + }, + { + "renderSeconds": 0.0030080080032348633, + "simulationSeconds": 0.007030010223388672, + "tick": 488 + }, + { + "renderSeconds": 0.0033680200576782227, + "simulationSeconds": 0.014790058135986328, + "tick": 490 + }, + { + "renderSeconds": 0.0034459829330444336, + "simulationSeconds": 0.009739995002746582, + "tick": 491 + }, + { + "renderSeconds": 0.0032439231872558594, + "simulationSeconds": 0.007790923118591309, + "tick": 492 + }, + { + "renderSeconds": 0.0035719871520996094, + "simulationSeconds": 0.014901995658874512, + "tick": 494 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0.008970022201538086, + "tick": 495 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0, + "tick": 495 + }, + { + "renderSeconds": 0.002472996711730957, + "simulationSeconds": 0.01273500919342041, + "tick": 497 + }, + { + "renderSeconds": 0.0029369592666625977, + "simulationSeconds": 0.006569027900695801, + "tick": 498 + }, + { + "renderSeconds": 0.002544999122619629, + "simulationSeconds": 0.0063179731369018555, + "tick": 499 + }, + { + "renderSeconds": 0.003083944320678711, + "simulationSeconds": 0.007726907730102539, + "tick": 500 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.0073430538177490234, + "tick": 501 + }, + { + "renderSeconds": 0.003314971923828125, + "simulationSeconds": 0.008488059043884277, + "tick": 502 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 9.5367431640625e-07, + "tick": 502 + }, + { + "renderSeconds": 0.0024260282516479492, + "simulationSeconds": 0.0061550140380859375, + "tick": 503 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.013357996940612793, + "tick": 505 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0.008876919746398926, + "tick": 506 + }, + { + "renderSeconds": 0.0029609203338623047, + "simulationSeconds": 0.007021069526672363, + "tick": 507 + }, + { + "renderSeconds": 0.003905057907104492, + "simulationSeconds": 0.007544994354248047, + "tick": 508 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.006981015205383301, + "tick": 509 + }, + { + "renderSeconds": 0.0035719871520996094, + "simulationSeconds": 0.00755000114440918, + "tick": 510 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03868779164622538, + "moveTicks": 480, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 786, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.4339026212692261, + "preparationSeconds": 0.5078600645065308, + "reducedMotion": true, + "renderSeconds": 1.6584022045135498, + "repetition": 20, + "scenePreparationSeconds": 0.1722879409790039, + "simulationSeconds": 3.4835658073425293, + "snapshotBuildCount": 425, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 35.52566666621715, + "callbackMaxMS": 43.45408332301304, + "postActionRecords": 423, + "run": "BP008-stage-4-rep-20-axis-8191-reduced-true-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.4174767732620239, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.001056075096130371, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0006290674209594727, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000904083251953125, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.000738978385925293, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0034990310668945312, + "simulationSeconds": 0.00699305534362793, + "tick": 1 + }, + { + "renderSeconds": 0.0037109851837158203, + "simulationSeconds": 0.007393002510070801, + "tick": 2 + }, + { + "renderSeconds": 0.0037429332733154297, + "simulationSeconds": 0.009531021118164062, + "tick": 3 + }, + { + "renderSeconds": 0.003592967987060547, + "simulationSeconds": 0.009129047393798828, + "tick": 4 + }, + { + "renderSeconds": 0.004001975059509277, + "simulationSeconds": 0.020961999893188477, + "tick": 6 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0.018043041229248047, + "tick": 8 + }, + { + "renderSeconds": 0.003242015838623047, + "simulationSeconds": 0.007287025451660156, + "tick": 9 + }, + { + "renderSeconds": 0.002463102340698242, + "simulationSeconds": 0.02000105381011963, + "tick": 12 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.013332962989807129, + "tick": 14 + }, + { + "renderSeconds": 0.003255009651184082, + "simulationSeconds": 0.007254958152770996, + "tick": 15 + }, + { + "renderSeconds": 0.002834916114807129, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0026110410690307617, + "simulationSeconds": 0.006785035133361816, + "tick": 16 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.007238030433654785, + "tick": 17 + }, + { + "renderSeconds": 0.0028249025344848633, + "simulationSeconds": 0.007475018501281738, + "tick": 18 + }, + { + "renderSeconds": 0.0029278993606567383, + "simulationSeconds": 0.006751060485839844, + "tick": 19 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.013527989387512207, + "tick": 21 + }, + { + "renderSeconds": 0.00380098819732666, + "simulationSeconds": 0.006960034370422363, + "tick": 22 + }, + { + "renderSeconds": 0.0037959814071655273, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.009027957916259766, + "tick": 23 + }, + { + "renderSeconds": 0.00277101993560791, + "simulationSeconds": 0.014407038688659668, + "tick": 25 + }, + { + "renderSeconds": 0.0033159255981445312, + "simulationSeconds": 0.007583022117614746, + "tick": 26 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0.0077430009841918945, + "tick": 27 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.02349698543548584, + "tick": 30 + }, + { + "renderSeconds": 0.0026160478591918945, + "simulationSeconds": 0.012376070022583008, + "tick": 32 + }, + { + "renderSeconds": 0.002521991729736328, + "simulationSeconds": 0.012741923332214355, + "tick": 34 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.012429952621459961, + "tick": 36 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.00628507137298584, + "tick": 37 + }, + { + "renderSeconds": 0.0027059316635131836, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.007173061370849609, + "tick": 38 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006145000457763672, + "tick": 39 + }, + { + "renderSeconds": 0.0030350685119628906, + "simulationSeconds": 0.006586909294128418, + "tick": 40 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.006265997886657715, + "tick": 41 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.0077010393142700195, + "tick": 42 + }, + { + "renderSeconds": 0.0027490854263305664, + "simulationSeconds": 0.01371300220489502, + "tick": 44 + }, + { + "renderSeconds": 0.0033379793167114258, + "simulationSeconds": 0.007223010063171387, + "tick": 45 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.004470944404602051, + "simulationSeconds": 0.01021111011505127, + "tick": 46 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.00761103630065918, + "tick": 47 + }, + { + "renderSeconds": 0.003648996353149414, + "simulationSeconds": 0.009208917617797852, + "tick": 48 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0.02248406410217285, + "tick": 51 + }, + { + "renderSeconds": 0.00297391414642334, + "simulationSeconds": 0.007781028747558594, + "tick": 52 + }, + { + "renderSeconds": 0.002610921859741211, + "simulationSeconds": 0.00707399845123291, + "tick": 53 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006031990051269531, + "tick": 54 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.0062520503997802734, + "tick": 55 + }, + { + "renderSeconds": 0.0024520158767700195, + "simulationSeconds": 0.006186008453369141, + "tick": 56 + }, + { + "renderSeconds": 0.002471923828125, + "simulationSeconds": 0.006460070610046387, + "tick": 57 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.012769937515258789, + "tick": 59 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.00713801383972168, + "tick": 60 + }, + { + "renderSeconds": 0.0029169321060180664, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 60 + }, + { + "renderSeconds": 0.0029659271240234375, + "simulationSeconds": 0.0072689056396484375, + "tick": 61 + }, + { + "renderSeconds": 0.0033730268478393555, + "simulationSeconds": 0.007130980491638184, + "tick": 62 + }, + { + "renderSeconds": 0.004040956497192383, + "simulationSeconds": 0.008853912353515625, + "tick": 63 + }, + { + "renderSeconds": 0.0038160085678100586, + "simulationSeconds": 0.009286999702453613, + "tick": 64 + }, + { + "renderSeconds": 0.0030819177627563477, + "simulationSeconds": 0.026481986045837402, + "tick": 67 + }, + { + "renderSeconds": 0.0026520490646362305, + "simulationSeconds": 0.013622045516967773, + "tick": 69 + }, + { + "renderSeconds": 0.0022929906845092773, + "simulationSeconds": 0.012787103652954102, + "tick": 71 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.0068939924240112305, + "tick": 72 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0.011868000030517578, + "tick": 74 + }, + { + "renderSeconds": 0.0023540258407592773, + "simulationSeconds": 0.006107926368713379, + "tick": 75 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002526998519897461, + "simulationSeconds": 0.006520986557006836, + "tick": 76 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.006403923034667969, + "tick": 77 + }, + { + "renderSeconds": 0.0024629831314086914, + "simulationSeconds": 0.006627082824707031, + "tick": 78 + }, + { + "renderSeconds": 0.0025010108947753906, + "simulationSeconds": 0.006460070610046387, + "tick": 79 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.014370083808898926, + "tick": 81 + }, + { + "renderSeconds": 0.003847956657409668, + "simulationSeconds": 0.007426023483276367, + "tick": 82 + }, + { + "renderSeconds": 0.0034780502319335938, + "simulationSeconds": 9.5367431640625e-07, + "tick": 82 + }, + { + "renderSeconds": 0.0037680864334106445, + "simulationSeconds": 0.009055018424987793, + "tick": 83 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.0076209306716918945, + "tick": 84 + }, + { + "renderSeconds": 0.0038110017776489258, + "simulationSeconds": 0.008014917373657227, + "tick": 85 + }, + { + "renderSeconds": 0.002458930015563965, + "simulationSeconds": 0.006474018096923828, + "tick": 86 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.006585955619812012, + "tick": 87 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.01247406005859375, + "tick": 89 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.006663918495178223, + "tick": 90 + }, + { + "renderSeconds": 0.00277101993560791, + "simulationSeconds": 0.006176948547363281, + "tick": 91 + }, + { + "renderSeconds": 0.0026900768280029297, + "simulationSeconds": 0.006441950798034668, + "tick": 92 + }, + { + "renderSeconds": 0.0024890899658203125, + "simulationSeconds": 0.006286978721618652, + "tick": 93 + }, + { + "renderSeconds": 0.002570033073425293, + "simulationSeconds": 0.006461977958679199, + "tick": 94 + }, + { + "renderSeconds": 0.0028519630432128906, + "simulationSeconds": 0.013749003410339355, + "tick": 96 + }, + { + "renderSeconds": 0.003932952880859375, + "simulationSeconds": 0.007888078689575195, + "tick": 97 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.003180980682373047, + "simulationSeconds": 0.006263017654418945, + "tick": 98 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.006090998649597168, + "tick": 99 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.0064029693603515625, + "tick": 100 + }, + { + "renderSeconds": 0.0034699440002441406, + "simulationSeconds": 0.007243037223815918, + "tick": 101 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.006989002227783203, + "tick": 102 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.014207005500793457, + "tick": 104 + }, + { + "renderSeconds": 0.003690958023071289, + "simulationSeconds": 0.007716059684753418, + "tick": 105 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 105 + }, + { + "renderSeconds": 0.002957940101623535, + "simulationSeconds": 0.007278084754943848, + "tick": 106 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0.006952047348022461, + "tick": 107 + }, + { + "renderSeconds": 0.003303050994873047, + "simulationSeconds": 0.006681084632873535, + "tick": 108 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.00698697566986084, + "tick": 109 + }, + { + "renderSeconds": 0.0029020309448242188, + "simulationSeconds": 0.014263033866882324, + "tick": 111 + }, + { + "renderSeconds": 0.003103017807006836, + "simulationSeconds": 0.007700920104980469, + "tick": 112 + }, + { + "renderSeconds": 0.0031049251556396484, + "simulationSeconds": 0.007158994674682617, + "tick": 113 + }, + { + "renderSeconds": 0.0032100677490234375, + "simulationSeconds": 0.007879972457885742, + "tick": 114 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.007017970085144043, + "tick": 115 + }, + { + "renderSeconds": 0.0034329891204833984, + "simulationSeconds": 0.007470965385437012, + "tick": 116 + }, + { + "renderSeconds": 0.0030689239501953125, + "simulationSeconds": 0.007151961326599121, + "tick": 117 + }, + { + "renderSeconds": 0.003029942512512207, + "simulationSeconds": 0.015469074249267578, + "tick": 119 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.014935016632080078, + "tick": 121 + }, + { + "renderSeconds": 0.003423929214477539, + "simulationSeconds": 0, + "tick": 121 + }, + { + "renderSeconds": 0.0033249855041503906, + "simulationSeconds": 0.00704503059387207, + "tick": 122 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.007856965065002441, + "tick": 123 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.006618976593017578, + "tick": 124 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.012521028518676758, + "tick": 126 + }, + { + "renderSeconds": 0.0031080245971679688, + "simulationSeconds": 0.006346940994262695, + "tick": 127 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 127 + }, + { + "renderSeconds": 0.0029600858688354492, + "simulationSeconds": 0.006431937217712402, + "tick": 128 + }, + { + "renderSeconds": 0.0034099817276000977, + "simulationSeconds": 0.00725710391998291, + "tick": 129 + }, + { + "renderSeconds": 0.0032869577407836914, + "simulationSeconds": 0.007103085517883301, + "tick": 130 + }, + { + "renderSeconds": 0.0032809972763061523, + "simulationSeconds": 0.007421016693115234, + "tick": 131 + }, + { + "renderSeconds": 0.004037022590637207, + "simulationSeconds": 0.007358074188232422, + "tick": 132 + }, + { + "renderSeconds": 0.003072023391723633, + "simulationSeconds": 0.01462090015411377, + "tick": 134 + }, + { + "renderSeconds": 0.0028319358825683594, + "simulationSeconds": 0.013407111167907715, + "tick": 136 + }, + { + "renderSeconds": 0.0028710365295410156, + "simulationSeconds": 0.012249946594238281, + "tick": 138 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 0.0065729618072509766, + "tick": 139 + }, + { + "renderSeconds": 0.0027369260787963867, + "simulationSeconds": 0.01256406307220459, + "tick": 141 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.006606936454772949, + "tick": 142 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0031729936599731445, + "simulationSeconds": 0.006840944290161133, + "tick": 143 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0.006477952003479004, + "tick": 144 + }, + { + "renderSeconds": 0.00291597843170166, + "simulationSeconds": 0.006209015846252441, + "tick": 145 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.0061370134353637695, + "tick": 146 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.005970001220703125, + "tick": 147 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.014365077018737793, + "tick": 149 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.0069370269775390625, + "tick": 150 + }, + { + "renderSeconds": 0.0033409595489501953, + "simulationSeconds": 9.5367431640625e-07, + "tick": 150 + }, + { + "renderSeconds": 0.003690958023071289, + "simulationSeconds": 0.006819009780883789, + "tick": 151 + }, + { + "renderSeconds": 0.003704071044921875, + "simulationSeconds": 0.008059978485107422, + "tick": 152 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0.007369041442871094, + "tick": 153 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.00616300106048584, + "tick": 154 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.012238025665283203, + "tick": 156 + }, + { + "renderSeconds": 0.0024590492248535156, + "simulationSeconds": 0.005964994430541992, + "tick": 157 + }, + { + "renderSeconds": 0.0030210018157958984, + "simulationSeconds": 0, + "tick": 157 + }, + { + "renderSeconds": 0.00333404541015625, + "simulationSeconds": 0.007601022720336914, + "tick": 158 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.0069380998611450195, + "tick": 159 + }, + { + "renderSeconds": 0.0030579566955566406, + "simulationSeconds": 0.006976008415222168, + "tick": 160 + }, + { + "renderSeconds": 0.0030580759048461914, + "simulationSeconds": 0.007027983665466309, + "tick": 161 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 0.00618898868560791, + "tick": 162 + }, + { + "renderSeconds": 0.0029059648513793945, + "simulationSeconds": 0.014497995376586914, + "tick": 164 + }, + { + "renderSeconds": 0.003600001335144043, + "simulationSeconds": 0.006829023361206055, + "tick": 165 + }, + { + "renderSeconds": 0.004238009452819824, + "simulationSeconds": 0, + "tick": 165 + }, + { + "renderSeconds": 0.0031299591064453125, + "simulationSeconds": 0.007628917694091797, + "tick": 166 + }, + { + "renderSeconds": 0.003733038902282715, + "simulationSeconds": 0.007895946502685547, + "tick": 167 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.006363987922668457, + "tick": 168 + }, + { + "renderSeconds": 0.003442049026489258, + "simulationSeconds": 0.006968021392822266, + "tick": 169 + }, + { + "renderSeconds": 0.0029009580612182617, + "simulationSeconds": 0.014031052589416504, + "tick": 171 + }, + { + "renderSeconds": 0.003298044204711914, + "simulationSeconds": 0.014600992202758789, + "tick": 173 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.01416003704071045, + "tick": 175 + }, + { + "renderSeconds": 0.0026320219039916992, + "simulationSeconds": 0.0063359737396240234, + "tick": 176 + }, + { + "renderSeconds": 0.0032480955123901367, + "simulationSeconds": 0.006193995475769043, + "tick": 177 + }, + { + "renderSeconds": 0.0022170543670654297, + "simulationSeconds": 0.012501001358032227, + "tick": 179 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006102085113525391, + "tick": 180 + }, + { + "renderSeconds": 0.003331899642944336, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.002875089645385742, + "simulationSeconds": 0.006694912910461426, + "tick": 181 + }, + { + "renderSeconds": 0.0029010772705078125, + "simulationSeconds": 0.006639957427978516, + "tick": 182 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.007441997528076172, + "tick": 183 + }, + { + "renderSeconds": 0.003298044204711914, + "simulationSeconds": 0.006522059440612793, + "tick": 184 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.012676000595092773, + "tick": 186 + }, + { + "renderSeconds": 0.0036400556564331055, + "simulationSeconds": 0.00731503963470459, + "tick": 187 + }, + { + "renderSeconds": 0.0030471086502075195, + "simulationSeconds": 9.5367431640625e-07, + "tick": 187 + }, + { + "renderSeconds": 0.0034140348434448242, + "simulationSeconds": 0.007717013359069824, + "tick": 188 + }, + { + "renderSeconds": 0.003259897232055664, + "simulationSeconds": 0.007327914237976074, + "tick": 189 + }, + { + "renderSeconds": 0.0038080215454101562, + "simulationSeconds": 0.008269906044006348, + "tick": 190 + }, + { + "renderSeconds": 0.003720998764038086, + "simulationSeconds": 0.025532007217407227, + "tick": 193 + }, + { + "renderSeconds": 0.0028378963470458984, + "simulationSeconds": 0.019725918769836426, + "tick": 196 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.006907939910888672, + "tick": 197 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.008487939834594727, + "tick": 198 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.006443977355957031, + "tick": 199 + }, + { + "renderSeconds": 0.0022619962692260742, + "simulationSeconds": 0.013200044631958008, + "tick": 201 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.006914019584655762, + "tick": 202 + }, + { + "renderSeconds": 0.0030770301818847656, + "simulationSeconds": 0.006826996803283691, + "tick": 203 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.00678098201751709, + "tick": 204 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.0067479610443115234, + "tick": 205 + }, + { + "renderSeconds": 0.003430962562561035, + "simulationSeconds": 0.006327033042907715, + "tick": 206 + }, + { + "renderSeconds": 0.002904057502746582, + "simulationSeconds": 0.0064820051193237305, + "tick": 207 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.014500975608825684, + "tick": 209 + }, + { + "renderSeconds": 0.0031499862670898438, + "simulationSeconds": 0.007387042045593262, + "tick": 210 + }, + { + "renderSeconds": 0.00345003604888916, + "simulationSeconds": 0, + "tick": 210 + }, + { + "renderSeconds": 0.0033600330352783203, + "simulationSeconds": 0.007146954536437988, + "tick": 211 + }, + { + "renderSeconds": 0.0033129453659057617, + "simulationSeconds": 0.0073549747467041016, + "tick": 212 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.00745999813079834, + "tick": 213 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0.007274031639099121, + "tick": 214 + }, + { + "renderSeconds": 0.003052949905395508, + "simulationSeconds": 0.01442408561706543, + "tick": 216 + }, + { + "renderSeconds": 0.0024700164794921875, + "simulationSeconds": 0.014611005783081055, + "tick": 218 + }, + { + "renderSeconds": 0.0027369260787963867, + "simulationSeconds": 0.013080000877380371, + "tick": 220 + }, + { + "renderSeconds": 0.0028069019317626953, + "simulationSeconds": 0.007176041603088379, + "tick": 221 + }, + { + "renderSeconds": 0.0034799575805664062, + "simulationSeconds": 0.0067299604415893555, + "tick": 222 + }, + { + "renderSeconds": 0.0024199485778808594, + "simulationSeconds": 0.01217198371887207, + "tick": 224 + }, + { + "renderSeconds": 0.0032019615173339844, + "simulationSeconds": 0.006134033203125, + "tick": 225 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.002436995506286621, + "simulationSeconds": 0.006415009498596191, + "tick": 226 + }, + { + "renderSeconds": 0.003007054328918457, + "simulationSeconds": 0.006307005882263184, + "tick": 227 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0.0069010257720947266, + "tick": 228 + }, + { + "renderSeconds": 0.0030220746994018555, + "simulationSeconds": 0.006945967674255371, + "tick": 229 + }, + { + "renderSeconds": 0.0028399229049682617, + "simulationSeconds": 0.01453101634979248, + "tick": 231 + }, + { + "renderSeconds": 0.003630995750427246, + "simulationSeconds": 0.007378935813903809, + "tick": 232 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0, + "tick": 232 + }, + { + "renderSeconds": 0.0034939050674438477, + "simulationSeconds": 0.00943899154663086, + "tick": 233 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.0070819854736328125, + "tick": 234 + }, + { + "renderSeconds": 0.004191994667053223, + "simulationSeconds": 0.009163975715637207, + "tick": 235 + }, + { + "renderSeconds": 0.0036269426345825195, + "simulationSeconds": 0.017470955848693848, + "tick": 237 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.01788198947906494, + "tick": 239 + }, + { + "renderSeconds": 0.0033949613571166992, + "simulationSeconds": 0.01680600643157959, + "tick": 241 + }, + { + "renderSeconds": 0.0026880502700805664, + "simulationSeconds": 0.007013916969299316, + "tick": 242 + }, + { + "renderSeconds": 0.0033910274505615234, + "simulationSeconds": 0.008144974708557129, + "tick": 243 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.007148027420043945, + "tick": 244 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.01427602767944336, + "tick": 246 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.00725400447845459, + "tick": 247 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.007924914360046387, + "tick": 248 + }, + { + "renderSeconds": 0.003168940544128418, + "simulationSeconds": 0.007210969924926758, + "tick": 249 + }, + { + "renderSeconds": 0.0030020475387573242, + "simulationSeconds": 0.007477998733520508, + "tick": 250 + }, + { + "renderSeconds": 0.003564000129699707, + "simulationSeconds": 0.007686972618103027, + "tick": 251 + }, + { + "renderSeconds": 0.0034390687942504883, + "simulationSeconds": 0.009258031845092773, + "tick": 252 + }, + { + "renderSeconds": 0.0036330223083496094, + "simulationSeconds": 0.01834392547607422, + "tick": 254 + }, + { + "renderSeconds": 0.0038100481033325195, + "simulationSeconds": 0.014631032943725586, + "tick": 256 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0, + "tick": 256 + }, + { + "renderSeconds": 0.004024028778076172, + "simulationSeconds": 0.008536934852600098, + "tick": 257 + }, + { + "renderSeconds": 0.0034040212631225586, + "simulationSeconds": 0.009773969650268555, + "tick": 258 + }, + { + "renderSeconds": 0.0034339427947998047, + "simulationSeconds": 0.009095072746276855, + "tick": 259 + }, + { + "renderSeconds": 0.003545999526977539, + "simulationSeconds": 0.017402052879333496, + "tick": 261 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.013615965843200684, + "tick": 263 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.0064820051193237305, + "tick": 264 + }, + { + "renderSeconds": 0.0033200979232788086, + "simulationSeconds": 0.0063849687576293945, + "tick": 265 + }, + { + "renderSeconds": 0.0027390718460083008, + "simulationSeconds": 0.0065430402755737305, + "tick": 266 + }, + { + "renderSeconds": 0.0024690628051757812, + "simulationSeconds": 0.007012009620666504, + "tick": 267 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.012614965438842773, + "tick": 269 + }, + { + "renderSeconds": 0.002454042434692383, + "simulationSeconds": 0.006876945495605469, + "tick": 270 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.0384138333320152, + "moveTicks": 240, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 410, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.24078035354614258, + "preparationSeconds": 0.5085580348968506, + "reducedMotion": false, + "renderSeconds": 0.708111047744751, + "repetition": 21, + "scenePreparationSeconds": 0.180588960647583, + "simulationSeconds": 1.936480164527893, + "snapshotBuildCount": 234, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 36.032958334544674, + "callbackMaxMS": 51.63800000445917, + "postActionRecords": 232, + "run": "BP008-stage-4-rep-21-axis-16383-reduced-false-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.37242329120635986, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.001103043556213379, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0007979869842529297, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009740591049194336, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009709596633911133, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0037469863891601562, + "simulationSeconds": 0.006396055221557617, + "tick": 1 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.03873491287231445, + "tick": 7 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.04150390625, + "tick": 14 + }, + { + "renderSeconds": 0.002708911895751953, + "simulationSeconds": 0.024334073066711426, + "tick": 18 + }, + { + "renderSeconds": 0.0022079944610595703, + "simulationSeconds": 0.019276976585388184, + "tick": 21 + }, + { + "renderSeconds": 0.0029420852661132812, + "simulationSeconds": 0.013255000114440918, + "tick": 23 + }, + { + "renderSeconds": 0.0028340816497802734, + "simulationSeconds": 0.0064018964767456055, + "tick": 24 + }, + { + "renderSeconds": 0.0031050443649291992, + "simulationSeconds": 0.006760001182556152, + "tick": 25 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.006622910499572754, + "tick": 26 + }, + { + "renderSeconds": 0.0031839609146118164, + "simulationSeconds": 0.018267035484313965, + "tick": 29 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.012484908103942871, + "tick": 31 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.007385969161987305, + "tick": 32 + }, + { + "renderSeconds": 0.003213047981262207, + "simulationSeconds": 0.006853938102722168, + "tick": 33 + }, + { + "renderSeconds": 0.0025130510330200195, + "simulationSeconds": 0.006448984146118164, + "tick": 34 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006528019905090332, + "tick": 35 + }, + { + "renderSeconds": 0.0029349327087402344, + "simulationSeconds": 0.012560009956359863, + "tick": 37 + }, + { + "renderSeconds": 0.002682924270629883, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.006447911262512207, + "tick": 38 + }, + { + "renderSeconds": 0.003116011619567871, + "simulationSeconds": 0.007339000701904297, + "tick": 39 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0.020506978034973145, + "tick": 42 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.014521002769470215, + "tick": 44 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 0.01353597640991211, + "tick": 46 + }, + { + "renderSeconds": 0.004405021667480469, + "simulationSeconds": 0.006643056869506836, + "tick": 47 + }, + { + "renderSeconds": 0.002769947052001953, + "simulationSeconds": 0.010444998741149902, + "tick": 48 + }, + { + "renderSeconds": 0.0029190778732299805, + "simulationSeconds": 0.013022065162658691, + "tick": 50 + }, + { + "renderSeconds": 0.0025119781494140625, + "simulationSeconds": 0.012756943702697754, + "tick": 52 + }, + { + "renderSeconds": 0.0037479400634765625, + "simulationSeconds": 0.007328033447265625, + "tick": 53 + }, + { + "renderSeconds": 0.0025490522384643555, + "simulationSeconds": 0.006283998489379883, + "tick": 54 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.00678098201751709, + "tick": 55 + }, + { + "renderSeconds": 0.0027779340744018555, + "simulationSeconds": 0.006306052207946777, + "tick": 56 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0.007225990295410156, + "tick": 57 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.014603018760681152, + "tick": 59 + }, + { + "renderSeconds": 0.003258943557739258, + "simulationSeconds": 0.0073320865631103516, + "tick": 60 + }, + { + "renderSeconds": 0.0030869245529174805, + "simulationSeconds": 0.007205009460449219, + "tick": 61 + }, + { + "renderSeconds": 0.0036050081253051758, + "simulationSeconds": 0.006976008415222168, + "tick": 62 + }, + { + "renderSeconds": 0.002764105796813965, + "simulationSeconds": 0.0066269636154174805, + "tick": 63 + }, + { + "renderSeconds": 0.00282895565032959, + "simulationSeconds": 0.0067369937896728516, + "tick": 64 + }, + { + "renderSeconds": 0.0030080080032348633, + "simulationSeconds": 0.01891195774078369, + "tick": 67 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.006757974624633789, + "tick": 68 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.006659030914306641, + "tick": 69 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.006849050521850586, + "tick": 70 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006268024444580078, + "tick": 71 + }, + { + "renderSeconds": 0.0025069713592529297, + "simulationSeconds": 0.006394028663635254, + "tick": 72 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0.013916015625, + "tick": 74 + }, + { + "renderSeconds": 0.0035140514373779297, + "simulationSeconds": 0.008977055549621582, + "tick": 75 + }, + { + "renderSeconds": 0.003940939903259277, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.00515902042388916, + "simulationSeconds": 0.012627005577087402, + "tick": 76 + }, + { + "renderSeconds": 0.00374603271484375, + "simulationSeconds": 0.026071906089782715, + "tick": 79 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.02139604091644287, + "tick": 82 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.020069003105163574, + "tick": 85 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0.011933088302612305, + "tick": 87 + }, + { + "renderSeconds": 0.0028470754623413086, + "simulationSeconds": 0.012138962745666504, + "tick": 89 + }, + { + "renderSeconds": 0.002816915512084961, + "simulationSeconds": 0.006074070930480957, + "tick": 90 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0.006315946578979492, + "tick": 91 + }, + { + "renderSeconds": 0.0030330419540405273, + "simulationSeconds": 0.0060340166091918945, + "tick": 92 + }, + { + "renderSeconds": 0.003503084182739258, + "simulationSeconds": 0.0076149702072143555, + "tick": 93 + }, + { + "renderSeconds": 0.0034519433975219727, + "simulationSeconds": 0.008311033248901367, + "tick": 94 + }, + { + "renderSeconds": 0.0034379959106445312, + "simulationSeconds": 0.007225990295410156, + "tick": 95 + }, + { + "renderSeconds": 0.0031290054321289062, + "simulationSeconds": 0.012573003768920898, + "tick": 97 + }, + { + "renderSeconds": 0.0029469728469848633, + "simulationSeconds": 0.012877941131591797, + "tick": 99 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.013409018516540527, + "tick": 101 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.0062209367752075195, + "tick": 102 + }, + { + "renderSeconds": 0.002586960792541504, + "simulationSeconds": 0.01228797435760498, + "tick": 104 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.0064460039138793945, + "tick": 105 + }, + { + "renderSeconds": 0.002557039260864258, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0030690431594848633, + "simulationSeconds": 0.006832003593444824, + "tick": 106 + }, + { + "renderSeconds": 0.003836989402770996, + "simulationSeconds": 0.008574962615966797, + "tick": 107 + }, + { + "renderSeconds": 0.005539059638977051, + "simulationSeconds": 0.00952303409576416, + "tick": 108 + }, + { + "renderSeconds": 0.0036079883575439453, + "simulationSeconds": 0.02135300636291504, + "tick": 110 + }, + { + "renderSeconds": 0.00341796875, + "simulationSeconds": 0.028357982635498047, + "tick": 113 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.016413092613220215, + "tick": 115 + }, + { + "renderSeconds": 0.0035729408264160156, + "simulationSeconds": 0.006801962852478027, + "tick": 116 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.006753087043762207, + "tick": 117 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0.015061020851135254, + "tick": 119 + }, + { + "renderSeconds": 0.0022579431533813477, + "simulationSeconds": 0.012859940528869629, + "tick": 121 + }, + { + "renderSeconds": 0.003152012825012207, + "simulationSeconds": 0.00636601448059082, + "tick": 122 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.0066149234771728516, + "tick": 123 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.006819009780883789, + "tick": 124 + }, + { + "renderSeconds": 0.0028399229049682617, + "simulationSeconds": 0.006471991539001465, + "tick": 125 + }, + { + "renderSeconds": 0.002521991729736328, + "simulationSeconds": 0.012508034706115723, + "tick": 127 + }, + { + "renderSeconds": 0.0027909278869628906, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.006645083427429199, + "tick": 128 + }, + { + "renderSeconds": 0.002731919288635254, + "simulationSeconds": 0.006294965744018555, + "tick": 129 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.007997989654541016, + "tick": 130 + }, + { + "renderSeconds": 0.003113985061645508, + "simulationSeconds": 0.007493019104003906, + "tick": 131 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.006904959678649902, + "tick": 132 + }, + { + "renderSeconds": 0.0038520097732543945, + "simulationSeconds": 0.018890976905822754, + "tick": 134 + }, + { + "renderSeconds": 0.0033799409866333008, + "simulationSeconds": 0.014613032341003418, + "tick": 136 + }, + { + "renderSeconds": 0.0033529996871948242, + "simulationSeconds": 0.007272005081176758, + "tick": 137 + }, + { + "renderSeconds": 0.0033229589462280273, + "simulationSeconds": 0.006904006004333496, + "tick": 138 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.006219029426574707, + "tick": 139 + }, + { + "renderSeconds": 0.0028759241104125977, + "simulationSeconds": 0.006304025650024414, + "tick": 140 + }, + { + "renderSeconds": 0.002765059471130371, + "simulationSeconds": 0.012333035469055176, + "tick": 142 + }, + { + "renderSeconds": 0.002969980239868164, + "simulationSeconds": 0.012804985046386719, + "tick": 144 + }, + { + "renderSeconds": 0.0037620067596435547, + "simulationSeconds": 0.012676000595092773, + "tick": 146 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.006562948226928711, + "tick": 147 + }, + { + "renderSeconds": 0.002539992332458496, + "simulationSeconds": 0.012367010116577148, + "tick": 149 + }, + { + "renderSeconds": 0.0030399560928344727, + "simulationSeconds": 0.006507992744445801, + "tick": 150 + }, + { + "renderSeconds": 0.00260007381439209, + "simulationSeconds": 0, + "tick": 150 + }, + { + "renderSeconds": 0.0031270980834960938, + "simulationSeconds": 0.005944967269897461, + "tick": 151 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.007431983947753906, + "tick": 152 + }, + { + "renderSeconds": 0.003737926483154297, + "simulationSeconds": 0.00866997241973877, + "tick": 153 + }, + { + "renderSeconds": 0.0038460493087768555, + "simulationSeconds": 0.008597970008850098, + "tick": 154 + }, + { + "renderSeconds": 0.0037140846252441406, + "simulationSeconds": 0.026387929916381836, + "tick": 157 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.0140150785446167, + "tick": 159 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.0069969892501831055, + "tick": 160 + }, + { + "renderSeconds": 0.0031090974807739258, + "simulationSeconds": 0.006770968437194824, + "tick": 161 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.0059729814529418945, + "tick": 162 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.013261079788208008, + "tick": 164 + }, + { + "renderSeconds": 0.0025110244750976562, + "simulationSeconds": 0.006137967109680176, + "tick": 165 + }, + { + "renderSeconds": 0.0033360719680786133, + "simulationSeconds": 0.008678913116455078, + "tick": 166 + }, + { + "renderSeconds": 0.0029480457305908203, + "simulationSeconds": 0.006902933120727539, + "tick": 167 + }, + { + "renderSeconds": 0.0028830766677856445, + "simulationSeconds": 0.006210923194885254, + "tick": 168 + }, + { + "renderSeconds": 0.0031790733337402344, + "simulationSeconds": 0.006451964378356934, + "tick": 169 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006490945816040039, + "tick": 170 + }, + { + "renderSeconds": 0.003358006477355957, + "simulationSeconds": 0.014429926872253418, + "tick": 172 + }, + { + "renderSeconds": 0.0031380653381347656, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.0040929317474365234, + "simulationSeconds": 0.008623957633972168, + "tick": 173 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.007640957832336426, + "tick": 174 + }, + { + "renderSeconds": 0.003726959228515625, + "simulationSeconds": 0.009514927864074707, + "tick": 175 + }, + { + "renderSeconds": 0.003287076950073242, + "simulationSeconds": 0.02177894115447998, + "tick": 178 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.01933896541595459, + "tick": 181 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.012690901756286621, + "tick": 183 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0.006923079490661621, + "tick": 184 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.007467031478881836, + "tick": 185 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.0138169527053833, + "tick": 187 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.0025260448455810547, + "simulationSeconds": 0.006981968879699707, + "tick": 188 + }, + { + "renderSeconds": 0.0032690763473510742, + "simulationSeconds": 0.007161974906921387, + "tick": 189 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.007523059844970703, + "tick": 190 + }, + { + "renderSeconds": 0.0032689571380615234, + "simulationSeconds": 0.007388949394226074, + "tick": 191 + }, + { + "renderSeconds": 0.004158973693847656, + "simulationSeconds": 0.007511019706726074, + "tick": 192 + }, + { + "renderSeconds": 0.0034869909286499023, + "simulationSeconds": 0.026790976524353027, + "tick": 195 + }, + { + "renderSeconds": 0.0030690431594848633, + "simulationSeconds": 0.01444399356842041, + "tick": 197 + }, + { + "renderSeconds": 0.0031359195709228516, + "simulationSeconds": 0.006556987762451172, + "tick": 198 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.006332039833068848, + "tick": 199 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0.006332993507385254, + "tick": 200 + }, + { + "renderSeconds": 0.002482891082763672, + "simulationSeconds": 0.01214897632598877, + "tick": 202 + }, + { + "renderSeconds": 0.002592921257019043, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.002684950828552246, + "simulationSeconds": 0.007693052291870117, + "tick": 203 + }, + { + "renderSeconds": 0.0025850534439086914, + "simulationSeconds": 0.006070971488952637, + "tick": 204 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.006783962249755859, + "tick": 205 + }, + { + "renderSeconds": 0.003523111343383789, + "simulationSeconds": 0.0072269439697265625, + "tick": 206 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.007868051528930664, + "tick": 207 + }, + { + "renderSeconds": 0.002819061279296875, + "simulationSeconds": 0.013840913772583008, + "tick": 209 + }, + { + "renderSeconds": 0.004054069519042969, + "simulationSeconds": 0.0076749324798583984, + "tick": 210 + }, + { + "renderSeconds": 0.003120899200439453, + "simulationSeconds": 0, + "tick": 210 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.007380008697509766, + "tick": 211 + }, + { + "renderSeconds": 0.0032570362091064453, + "simulationSeconds": 0.007135987281799316, + "tick": 212 + }, + { + "renderSeconds": 0.0031419992446899414, + "simulationSeconds": 0.007501006126403809, + "tick": 213 + }, + { + "renderSeconds": 0.0036829710006713867, + "simulationSeconds": 0.009273052215576172, + "tick": 214 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.022608041763305664, + "tick": 217 + }, + { + "renderSeconds": 0.0034940242767333984, + "simulationSeconds": 0.007729053497314453, + "tick": 218 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.00710904598236084, + "tick": 219 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.006121993064880371, + "tick": 220 + }, + { + "renderSeconds": 0.0026650428771972656, + "simulationSeconds": 0.006490945816040039, + "tick": 221 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.007269024848937988, + "tick": 222 + }, + { + "renderSeconds": 0.003383040428161621, + "simulationSeconds": 0.014158010482788086, + "tick": 224 + }, + { + "renderSeconds": 0.0040700435638427734, + "simulationSeconds": 0.007444024085998535, + "tick": 225 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0, + "tick": 225 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.007066965103149414, + "tick": 226 + }, + { + "renderSeconds": 0.0026938915252685547, + "simulationSeconds": 0.006641030311584473, + "tick": 227 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.0062760114669799805, + "tick": 228 + }, + { + "renderSeconds": 0.0030509233474731445, + "simulationSeconds": 0.0071070194244384766, + "tick": 229 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0.007008910179138184, + "tick": 230 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0.014784932136535645, + "tick": 232 + }, + { + "renderSeconds": 0.008984088897705078, + "simulationSeconds": 9.5367431640625e-07, + "tick": 232 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.020650029182434082, + "tick": 235 + }, + { + "renderSeconds": 0.0025440454483032227, + "simulationSeconds": 0.012946009635925293, + "tick": 237 + }, + { + "renderSeconds": 0.00282895565032959, + "simulationSeconds": 0.012836933135986328, + "tick": 239 + }, + { + "renderSeconds": 0.0032140016555786133, + "simulationSeconds": 0.006455063819885254, + "tick": 240 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 9.5367431640625e-07, + "tick": 240 + }, + { + "renderSeconds": 0.0029680728912353516, + "simulationSeconds": 0.006617903709411621, + "tick": 241 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.0062940120697021484, + "tick": 242 + }, + { + "renderSeconds": 0.002805948257446289, + "simulationSeconds": 0.006289958953857422, + "tick": 243 + }, + { + "renderSeconds": 0.002886056900024414, + "simulationSeconds": 0.007035970687866211, + "tick": 244 + }, + { + "renderSeconds": 0.0033860206604003906, + "simulationSeconds": 0.008649945259094238, + "tick": 245 + }, + { + "renderSeconds": 0.004499077796936035, + "simulationSeconds": 0.01881694793701172, + "tick": 247 + }, + { + "renderSeconds": 0.0038100481033325195, + "simulationSeconds": 0.017664074897766113, + "tick": 249 + }, + { + "renderSeconds": 0.0030640363693237305, + "simulationSeconds": 0.014632940292358398, + "tick": 251 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0.00642704963684082, + "tick": 252 + }, + { + "renderSeconds": 0.0027440786361694336, + "simulationSeconds": 0.013739943504333496, + "tick": 254 + }, + { + "renderSeconds": 0.0024940967559814453, + "simulationSeconds": 0.005794882774353027, + "tick": 255 + }, + { + "renderSeconds": 0.00251007080078125, + "simulationSeconds": 9.5367431640625e-07, + "tick": 255 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.0060329437255859375, + "tick": 256 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.00701904296875, + "tick": 257 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.006168961524963379, + "tick": 258 + }, + { + "renderSeconds": 0.0026159286499023438, + "simulationSeconds": 0.006211042404174805, + "tick": 259 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.006811976432800293, + "tick": 260 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0.01512002944946289, + "tick": 262 + }, + { + "renderSeconds": 0.0031810998916625977, + "simulationSeconds": 0, + "tick": 262 + }, + { + "renderSeconds": 0.003146052360534668, + "simulationSeconds": 0.007850050926208496, + "tick": 263 + }, + { + "renderSeconds": 0.0037499666213989258, + "simulationSeconds": 0.007169961929321289, + "tick": 264 + }, + { + "renderSeconds": 0.003350973129272461, + "simulationSeconds": 0.008906960487365723, + "tick": 265 + }, + { + "renderSeconds": 0.0032129287719726562, + "simulationSeconds": 0.008733987808227539, + "tick": 266 + }, + { + "renderSeconds": 0.003043055534362793, + "simulationSeconds": 0.007393956184387207, + "tick": 267 + }, + { + "renderSeconds": 0.0033119916915893555, + "simulationSeconds": 0.014317989349365234, + "tick": 269 + }, + { + "renderSeconds": 0.0028249025344848633, + "simulationSeconds": 0.01581895351409912, + "tick": 271 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.033273000008193776, + "moveTicks": 240, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 344, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.21839940547943115, + "preparationSeconds": 0.5134140253067017, + "reducedMotion": true, + "renderSeconds": 0.6141296625137329, + "repetition": 21, + "scenePreparationSeconds": 0.17497503757476807, + "simulationSeconds": 1.9118962287902832, + "snapshotBuildCount": 202, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 45.1314166712109, + "callbackMaxMS": 120.83316667121835, + "postActionRecords": 200, + "run": "BP008-stage-4-rep-21-axis-16383-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.22336864471435547, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0013689994812011719, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0014389753341674805, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008980035781860352, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010589361190795898, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0044449567794799805, + "simulationSeconds": 0.006497979164123535, + "tick": 1 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.007080078125, + "tick": 2 + }, + { + "renderSeconds": 0.0035120248794555664, + "simulationSeconds": 0.006615996360778809, + "tick": 3 + }, + { + "renderSeconds": 0.003329038619995117, + "simulationSeconds": 0.006742954254150391, + "tick": 4 + }, + { + "renderSeconds": 0.0035619735717773438, + "simulationSeconds": 0.007695913314819336, + "tick": 5 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.013540983200073242, + "tick": 7 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.013767004013061523, + "tick": 9 + }, + { + "renderSeconds": 0.0027369260787963867, + "simulationSeconds": 0.0067059993743896484, + "tick": 10 + }, + { + "renderSeconds": 0.0034099817276000977, + "simulationSeconds": 0.0065239667892456055, + "tick": 11 + }, + { + "renderSeconds": 0.0025370121002197266, + "simulationSeconds": 0.00625300407409668, + "tick": 12 + }, + { + "renderSeconds": 0.0030820369720458984, + "simulationSeconds": 0.006224989891052246, + "tick": 13 + }, + { + "renderSeconds": 0.003709077835083008, + "simulationSeconds": 0.01441192626953125, + "tick": 15 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.013924002647399902, + "tick": 17 + }, + { + "renderSeconds": 0.002550959587097168, + "simulationSeconds": 0.01270604133605957, + "tick": 19 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.006579995155334473, + "tick": 20 + }, + { + "renderSeconds": 0.0026929378509521484, + "simulationSeconds": 0.012320995330810547, + "tick": 22 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.002729058265686035, + "simulationSeconds": 0.006417989730834961, + "tick": 23 + }, + { + "renderSeconds": 0.0031620264053344727, + "simulationSeconds": 0.006819963455200195, + "tick": 24 + }, + { + "renderSeconds": 0.002563953399658203, + "simulationSeconds": 0.00686800479888916, + "tick": 25 + }, + { + "renderSeconds": 0.0031610727310180664, + "simulationSeconds": 0.006683945655822754, + "tick": 26 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.005903005599975586, + "tick": 27 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.006785988807678223, + "tick": 28 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.01267397403717041, + "tick": 30 + }, + { + "renderSeconds": 0.0027669668197631836, + "simulationSeconds": 0.012515068054199219, + "tick": 32 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.012102961540222168, + "tick": 34 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.006749987602233887, + "tick": 35 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.013823986053466797, + "tick": 37 + }, + { + "renderSeconds": 0.002834916114807129, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 37 + }, + { + "renderSeconds": 0.0026590824127197266, + "simulationSeconds": 0.0065070390701293945, + "tick": 38 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.008249998092651367, + "tick": 39 + }, + { + "renderSeconds": 0.002613067626953125, + "simulationSeconds": 0.006320953369140625, + "tick": 40 + }, + { + "renderSeconds": 0.0025900602340698242, + "simulationSeconds": 0.006301999092102051, + "tick": 41 + }, + { + "renderSeconds": 0.0028340816497802734, + "simulationSeconds": 0.006418943405151367, + "tick": 42 + }, + { + "renderSeconds": 0.0029250383377075195, + "simulationSeconds": 0.006464958190917969, + "tick": 43 + }, + { + "renderSeconds": 0.0021049976348876953, + "simulationSeconds": 0.013130903244018555, + "tick": 45 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.006904006004333496, + "tick": 46 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.006381988525390625, + "tick": 47 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.006698012351989746, + "tick": 48 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.006165981292724609, + "tick": 49 + }, + { + "renderSeconds": 0.0031769275665283203, + "simulationSeconds": 0.006788015365600586, + "tick": 50 + }, + { + "renderSeconds": 0.0028810501098632812, + "simulationSeconds": 0.013195991516113281, + "tick": 52 + }, + { + "renderSeconds": 0.00335693359375, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.006615042686462402, + "tick": 53 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.00645601749420166, + "tick": 54 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.007551074028015137, + "tick": 55 + }, + { + "renderSeconds": 0.002467036247253418, + "simulationSeconds": 0.0074920654296875, + "tick": 56 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.006971955299377441, + "tick": 57 + }, + { + "renderSeconds": 0.0025910139083862305, + "simulationSeconds": 0.006961941719055176, + "tick": 58 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.01267397403717041, + "tick": 60 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006332039833068848, + "tick": 61 + }, + { + "renderSeconds": 0.0027549266815185547, + "simulationSeconds": 0.006549954414367676, + "tick": 62 + }, + { + "renderSeconds": 0.0029119253158569336, + "simulationSeconds": 0.006487011909484863, + "tick": 63 + }, + { + "renderSeconds": 0.0025959014892578125, + "simulationSeconds": 0.007019996643066406, + "tick": 64 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.006147027015686035, + "tick": 65 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.013435959815979004, + "tick": 67 + }, + { + "renderSeconds": 0.003497004508972168, + "simulationSeconds": 0.00699305534362793, + "tick": 68 + }, + { + "renderSeconds": 0.0029859542846679688, + "simulationSeconds": 0.006294965744018555, + "tick": 69 + }, + { + "renderSeconds": 0.0031499862670898438, + "simulationSeconds": 0.006994009017944336, + "tick": 70 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006872057914733887, + "tick": 71 + }, + { + "renderSeconds": 0.0028809309005737305, + "simulationSeconds": 0.00663304328918457, + "tick": 72 + }, + { + "renderSeconds": 0.002431035041809082, + "simulationSeconds": 0.006152987480163574, + "tick": 73 + }, + { + "renderSeconds": 0.002559065818786621, + "simulationSeconds": 0.012907981872558594, + "tick": 75 + }, + { + "renderSeconds": 0.002868056297302246, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.006475925445556641, + "tick": 76 + }, + { + "renderSeconds": 0.003001093864440918, + "simulationSeconds": 0.006659984588623047, + "tick": 77 + }, + { + "renderSeconds": 0.0035920143127441406, + "simulationSeconds": 0.005917072296142578, + "tick": 78 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.006322979927062988, + "tick": 79 + }, + { + "renderSeconds": 0.0031189918518066406, + "simulationSeconds": 0.0065419673919677734, + "tick": 80 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.013252019882202148, + "tick": 82 + }, + { + "renderSeconds": 0.003782033920288086, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.006465911865234375, + "tick": 83 + }, + { + "renderSeconds": 0.002958059310913086, + "simulationSeconds": 0.006528973579406738, + "tick": 84 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.0065490007400512695, + "tick": 85 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.006299018859863281, + "tick": 86 + }, + { + "renderSeconds": 0.00330507755279541, + "simulationSeconds": 0.006626009941101074, + "tick": 87 + }, + { + "renderSeconds": 0.0021740198135375977, + "simulationSeconds": 0.006487011909484863, + "tick": 88 + }, + { + "renderSeconds": 0.0025908946990966797, + "simulationSeconds": 0.012678027153015137, + "tick": 90 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.002649068832397461, + "simulationSeconds": 0.006556034088134766, + "tick": 91 + }, + { + "renderSeconds": 0.0029419660568237305, + "simulationSeconds": 0.006509065628051758, + "tick": 92 + }, + { + "renderSeconds": 0.0033429861068725586, + "simulationSeconds": 0.006552934646606445, + "tick": 93 + }, + { + "renderSeconds": 0.002526998519897461, + "simulationSeconds": 0.006078004837036133, + "tick": 94 + }, + { + "renderSeconds": 0.0033129453659057617, + "simulationSeconds": 0.006158947944641113, + "tick": 95 + }, + { + "renderSeconds": 0.0024529695510864258, + "simulationSeconds": 0.012080907821655273, + "tick": 97 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 97 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.006453037261962891, + "tick": 98 + }, + { + "renderSeconds": 0.002904057502746582, + "simulationSeconds": 0.006500959396362305, + "tick": 99 + }, + { + "renderSeconds": 0.0026439428329467773, + "simulationSeconds": 0.006481051445007324, + "tick": 100 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.0069969892501831055, + "tick": 101 + }, + { + "renderSeconds": 0.0030450820922851562, + "simulationSeconds": 0.007418036460876465, + "tick": 102 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.007156968116760254, + "tick": 103 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.014119982719421387, + "tick": 105 + }, + { + "renderSeconds": 0.0038039684295654297, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.003567934036254883, + "simulationSeconds": 0.007568001747131348, + "tick": 106 + }, + { + "renderSeconds": 0.0036929845809936523, + "simulationSeconds": 0.009549975395202637, + "tick": 107 + }, + { + "renderSeconds": 0.00330197811126709, + "simulationSeconds": 0.007403969764709473, + "tick": 108 + }, + { + "renderSeconds": 0.0032140016555786133, + "simulationSeconds": 0.008365988731384277, + "tick": 109 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.006983041763305664, + "tick": 110 + }, + { + "renderSeconds": 0.003133058547973633, + "simulationSeconds": 0.014763951301574707, + "tick": 112 + }, + { + "renderSeconds": 0.0027889013290405273, + "simulationSeconds": 0.014115095138549805, + "tick": 114 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.014349937438964844, + "tick": 116 + }, + { + "renderSeconds": 0.0032960176467895508, + "simulationSeconds": 0.006926059722900391, + "tick": 117 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006680965423583984, + "tick": 118 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.01435399055480957, + "tick": 120 + }, + { + "renderSeconds": 0.003338932991027832, + "simulationSeconds": 0.006971955299377441, + "tick": 121 + }, + { + "renderSeconds": 0.0024259090423583984, + "simulationSeconds": 0.006489992141723633, + "tick": 122 + }, + { + "renderSeconds": 0.002664923667907715, + "simulationSeconds": 0.0063430070877075195, + "tick": 123 + }, + { + "renderSeconds": 0.0023779869079589844, + "simulationSeconds": 0.00616300106048584, + "tick": 124 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.007480978965759277, + "tick": 125 + }, + { + "renderSeconds": 0.0027060508728027344, + "simulationSeconds": 0.013889908790588379, + "tick": 127 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0036840438842773438, + "simulationSeconds": 0.009410977363586426, + "tick": 128 + }, + { + "renderSeconds": 0.003381013870239258, + "simulationSeconds": 0.009016990661621094, + "tick": 129 + }, + { + "renderSeconds": 0.003571033477783203, + "simulationSeconds": 0.008534073829650879, + "tick": 130 + }, + { + "renderSeconds": 0.003195047378540039, + "simulationSeconds": 0.0076580047607421875, + "tick": 131 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.009112954139709473, + "tick": 132 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.020241975784301758, + "tick": 135 + }, + { + "renderSeconds": 0.003153085708618164, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0.00839996337890625, + "tick": 136 + }, + { + "renderSeconds": 0.004559040069580078, + "simulationSeconds": 0.008459091186523438, + "tick": 137 + }, + { + "renderSeconds": 0.0027779340744018555, + "simulationSeconds": 0.02064800262451172, + "tick": 140 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0, + "tick": 140 + }, + { + "renderSeconds": 0.002440929412841797, + "simulationSeconds": 0.01185905933380127, + "tick": 142 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 142 + }, + { + "renderSeconds": 0.0031300783157348633, + "simulationSeconds": 0.00984501838684082, + "tick": 143 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006555914878845215, + "tick": 144 + }, + { + "renderSeconds": 0.003137946128845215, + "simulationSeconds": 0.006206989288330078, + "tick": 145 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.007212042808532715, + "tick": 146 + }, + { + "renderSeconds": 0.0029429197311401367, + "simulationSeconds": 0.007223010063171387, + "tick": 147 + }, + { + "renderSeconds": 0.0030089616775512695, + "simulationSeconds": 0.007115006446838379, + "tick": 148 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.014914989471435547, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03944500000216067, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 214, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.1379321813583374, + "preparationSeconds": 0.5795549154281616, + "reducedMotion": false, + "renderSeconds": 0.39909303188323975, + "repetition": 21, + "scenePreparationSeconds": 0.22148501873016357, + "simulationSeconds": 1.0246925354003906, + "snapshotBuildCount": 138, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 36.34016666910611, + "callbackMaxMS": 39.02633331017569, + "postActionRecords": 136, + "run": "BP008-stage-4-rep-21-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.22093403339385986, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0009459257125854492, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008579492568969727, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009230375289916992, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010150671005249023, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.00430905818939209, + "simulationSeconds": 0.007776021957397461, + "tick": 1 + }, + { + "renderSeconds": 0.003941059112548828, + "simulationSeconds": 0.00896000862121582, + "tick": 2 + }, + { + "renderSeconds": 0.004046916961669922, + "simulationSeconds": 0.009177923202514648, + "tick": 3 + }, + { + "renderSeconds": 0.00324404239654541, + "simulationSeconds": 0.024448037147521973, + "tick": 6 + }, + { + "renderSeconds": 0.00312197208404541, + "simulationSeconds": 0.013160943984985352, + "tick": 8 + }, + { + "renderSeconds": 0.0029020309448242188, + "simulationSeconds": 0.0067670345306396484, + "tick": 9 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.00636899471282959, + "tick": 10 + }, + { + "renderSeconds": 0.0028859376907348633, + "simulationSeconds": 0.019032001495361328, + "tick": 13 + }, + { + "renderSeconds": 0.002814054489135742, + "simulationSeconds": 0.013108968734741211, + "tick": 15 + }, + { + "renderSeconds": 0.0023900270462036133, + "simulationSeconds": 0.006296038627624512, + "tick": 16 + }, + { + "renderSeconds": 0.0026799440383911133, + "simulationSeconds": 0.00619196891784668, + "tick": 17 + }, + { + "renderSeconds": 0.0025490522384643555, + "simulationSeconds": 0.006417989730834961, + "tick": 18 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0.006206035614013672, + "tick": 19 + }, + { + "renderSeconds": 0.0024880170822143555, + "simulationSeconds": 0.006637930870056152, + "tick": 20 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.00595402717590332, + "tick": 21 + }, + { + "renderSeconds": 0.0028700828552246094, + "simulationSeconds": 0.006279945373535156, + "tick": 22 + }, + { + "renderSeconds": 0.003200054168701172, + "simulationSeconds": 0.0068149566650390625, + "tick": 23 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.0062029361724853516, + "tick": 24 + }, + { + "renderSeconds": 0.0030249357223510742, + "simulationSeconds": 0.0070269107818603516, + "tick": 25 + }, + { + "renderSeconds": 0.0034520626068115234, + "simulationSeconds": 0.007667064666748047, + "tick": 26 + }, + { + "renderSeconds": 0.00456392765045166, + "simulationSeconds": 0.007722020149230957, + "tick": 27 + }, + { + "renderSeconds": 0.0032339096069335938, + "simulationSeconds": 0.007566094398498535, + "tick": 28 + }, + { + "renderSeconds": 0.003078937530517578, + "simulationSeconds": 0.014832019805908203, + "tick": 30 + }, + { + "renderSeconds": 0.0030629634857177734, + "simulationSeconds": 0.015658020973205566, + "tick": 32 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.013036012649536133, + "tick": 34 + }, + { + "renderSeconds": 0.002926945686340332, + "simulationSeconds": 0.006834983825683594, + "tick": 35 + }, + { + "renderSeconds": 0.0029560327529907227, + "simulationSeconds": 0.0069130659103393555, + "tick": 36 + }, + { + "renderSeconds": 0.0034769773483276367, + "simulationSeconds": 0.007156014442443848, + "tick": 37 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.007086992263793945, + "tick": 38 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.00678098201751709, + "tick": 39 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.006442070007324219, + "tick": 40 + }, + { + "renderSeconds": 0.002471923828125, + "simulationSeconds": 0.006554007530212402, + "tick": 41 + }, + { + "renderSeconds": 0.0028519630432128906, + "simulationSeconds": 0.006132006645202637, + "tick": 42 + }, + { + "renderSeconds": 0.002829909324645996, + "simulationSeconds": 0.007673025131225586, + "tick": 43 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.014114975929260254, + "tick": 45 + }, + { + "renderSeconds": 0.0034050941467285156, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.008826971054077148, + "tick": 46 + }, + { + "renderSeconds": 0.003911018371582031, + "simulationSeconds": 0.008882999420166016, + "tick": 47 + }, + { + "renderSeconds": 0.003583073616027832, + "simulationSeconds": 0.009141921997070312, + "tick": 48 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.01516103744506836, + "tick": 50 + }, + { + "renderSeconds": 0.0035780668258666992, + "simulationSeconds": 0.007290005683898926, + "tick": 51 + }, + { + "renderSeconds": 0.0031960010528564453, + "simulationSeconds": 0.0075609683990478516, + "tick": 52 + }, + { + "renderSeconds": 0.003222942352294922, + "simulationSeconds": 0.008206009864807129, + "tick": 53 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 0.01441800594329834, + "tick": 55 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.007336974143981934, + "tick": 56 + }, + { + "renderSeconds": 0.0031069517135620117, + "simulationSeconds": 0.006457090377807617, + "tick": 57 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.006299018859863281, + "tick": 58 + }, + { + "renderSeconds": 0.002601027488708496, + "simulationSeconds": 0.013636946678161621, + "tick": 60 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 60 + }, + { + "renderSeconds": 0.0032960176467895508, + "simulationSeconds": 0.006673932075500488, + "tick": 61 + }, + { + "renderSeconds": 0.002584099769592285, + "simulationSeconds": 0.006407976150512695, + "tick": 62 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.006351947784423828, + "tick": 63 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.00631105899810791, + "tick": 64 + }, + { + "renderSeconds": 0.003484010696411133, + "simulationSeconds": 0.007024049758911133, + "tick": 65 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0.007843971252441406, + "tick": 66 + }, + { + "renderSeconds": 0.004248976707458496, + "simulationSeconds": 0.008350014686584473, + "tick": 67 + }, + { + "renderSeconds": 0.0032509565353393555, + "simulationSeconds": 0.01574397087097168, + "tick": 69 + }, + { + "renderSeconds": 0.0032880306243896484, + "simulationSeconds": 0.007324934005737305, + "tick": 70 + }, + { + "renderSeconds": 0.003139019012451172, + "simulationSeconds": 0.021950960159301758, + "tick": 73 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0.01985800266265869, + "tick": 76 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0, + "tick": 76 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0.009701967239379883, + "tick": 77 + }, + { + "renderSeconds": 0.002462029457092285, + "simulationSeconds": 0.009091019630432129, + "tick": 78 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.013271093368530273, + "tick": 80 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.0065479278564453125, + "tick": 81 + }, + { + "renderSeconds": 0.0028830766677856445, + "simulationSeconds": 0.00639498233795166, + "tick": 82 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.0064629316329956055, + "tick": 83 + }, + { + "renderSeconds": 0.0033420324325561523, + "simulationSeconds": 0.010156989097595215, + "tick": 84 + }, + { + "renderSeconds": 0.003055095672607422, + "simulationSeconds": 0.007786989212036133, + "tick": 85 + }, + { + "renderSeconds": 0.003516077995300293, + "simulationSeconds": 0.008159041404724121, + "tick": 86 + }, + { + "renderSeconds": 0.0031729936599731445, + "simulationSeconds": 0.007448077201843262, + "tick": 87 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.02261805534362793, + "tick": 90 + }, + { + "renderSeconds": 0.003878951072692871, + "simulationSeconds": 0.00784289836883545, + "tick": 91 + }, + { + "renderSeconds": 0.003672003746032715, + "simulationSeconds": 0.009011983871459961, + "tick": 92 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.007413983345031738, + "tick": 93 + }, + { + "renderSeconds": 0.003484964370727539, + "simulationSeconds": 0.0069980621337890625, + "tick": 94 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.0063610076904296875, + "tick": 95 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.006503939628601074, + "tick": 96 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006837964057922363, + "tick": 97 + }, + { + "renderSeconds": 0.003058910369873047, + "simulationSeconds": 0.006426095962524414, + "tick": 98 + }, + { + "renderSeconds": 0.002660989761352539, + "simulationSeconds": 0.0066220760345458984, + "tick": 99 + }, + { + "renderSeconds": 0.003430008888244629, + "simulationSeconds": 0.007696032524108887, + "tick": 100 + }, + { + "renderSeconds": 0.0030469894409179688, + "simulationSeconds": 0.0073670148849487305, + "tick": 101 + }, + { + "renderSeconds": 0.003509044647216797, + "simulationSeconds": 0.007619976997375488, + "tick": 102 + }, + { + "renderSeconds": 0.0034270286560058594, + "simulationSeconds": 0.007413983345031738, + "tick": 103 + }, + { + "renderSeconds": 0.0037391185760498047, + "simulationSeconds": 0.018105030059814453, + "tick": 105 + }, + { + "renderSeconds": 0.0035779476165771484, + "simulationSeconds": 0.007473945617675781, + "tick": 106 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.014129042625427246, + "tick": 108 + }, + { + "renderSeconds": 0.0030291080474853516, + "simulationSeconds": 0.007164955139160156, + "tick": 109 + }, + { + "renderSeconds": 0.0033179521560668945, + "simulationSeconds": 0.00707399845123291, + "tick": 110 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0.007175922393798828, + "tick": 111 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.0072519779205322266, + "tick": 112 + }, + { + "renderSeconds": 0.002931952476501465, + "simulationSeconds": 0.0060149431228637695, + "tick": 113 + }, + { + "renderSeconds": 0.0033169984817504883, + "simulationSeconds": 0.006543993949890137, + "tick": 114 + }, + { + "renderSeconds": 0.0031169652938842773, + "simulationSeconds": 0.0072519779205322266, + "tick": 115 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.007003068923950195, + "tick": 116 + }, + { + "renderSeconds": 0.0029299259185791016, + "simulationSeconds": 0.00707697868347168, + "tick": 117 + }, + { + "renderSeconds": 0.004476070404052734, + "simulationSeconds": 0.010066986083984375, + "tick": 118 + }, + { + "renderSeconds": 0.0033150911331176758, + "simulationSeconds": 0.022995948791503906, + "tick": 121 + }, + { + "renderSeconds": 0.0027080774307250977, + "simulationSeconds": 0.015085935592651367, + "tick": 123 + }, + { + "renderSeconds": 0.0038110017776489258, + "simulationSeconds": 0.006882905960083008, + "tick": 124 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.007130026817321777, + "tick": 125 + }, + { + "renderSeconds": 0.003545045852661133, + "simulationSeconds": 0.007109999656677246, + "tick": 126 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.006393909454345703, + "tick": 127 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0.006736040115356445, + "tick": 128 + }, + { + "renderSeconds": 0.002425074577331543, + "simulationSeconds": 0.006268024444580078, + "tick": 129 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.006219983100891113, + "tick": 130 + }, + { + "renderSeconds": 0.002525925636291504, + "simulationSeconds": 0.006489992141723633, + "tick": 131 + }, + { + "renderSeconds": 0.0028859376907348633, + "simulationSeconds": 0.006260037422180176, + "tick": 132 + }, + { + "renderSeconds": 0.003206968307495117, + "simulationSeconds": 0.007681012153625488, + "tick": 133 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.014522910118103027, + "tick": 135 + }, + { + "renderSeconds": 0.003042936325073242, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.003630995750427246, + "simulationSeconds": 0.009070992469787598, + "tick": 136 + }, + { + "renderSeconds": 0.003345012664794922, + "simulationSeconds": 0.008146047592163086, + "tick": 137 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0.00745701789855957, + "tick": 138 + }, + { + "renderSeconds": 0.003175973892211914, + "simulationSeconds": 0.006860971450805664, + "tick": 139 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.006677031517028809, + "tick": 140 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.006836056709289551, + "tick": 141 + }, + { + "renderSeconds": 0.003383040428161621, + "simulationSeconds": 0.007097005844116211, + "tick": 142 + }, + { + "renderSeconds": 0.0030770301818847656, + "simulationSeconds": 0.007480978965759277, + "tick": 143 + }, + { + "renderSeconds": 0.004145979881286621, + "simulationSeconds": 0.007261991500854492, + "tick": 144 + }, + { + "renderSeconds": 0.002659916877746582, + "simulationSeconds": 0.007516980171203613, + "tick": 145 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.005774974822998047, + "tick": 146 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0.006623029708862305, + "tick": 147 + }, + { + "renderSeconds": 0.0030629634857177734, + "simulationSeconds": 0.005990028381347656, + "tick": 148 + }, + { + "renderSeconds": 0.0028449296951293945, + "simulationSeconds": 0.013712048530578613, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.044855333340819925, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 196, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.13435840606689453, + "preparationSeconds": 0.5429450273513794, + "reducedMotion": true, + "renderSeconds": 0.3952760696411133, + "repetition": 21, + "scenePreparationSeconds": 0.20991802215576172, + "simulationSeconds": 1.0824276208877563, + "snapshotBuildCount": 130, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 36.16754166432656, + "callbackMaxMS": 47.865500004263595, + "postActionRecords": 128, + "run": "BP008-stage-4-rep-21-axis-32767-reduced-true-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.8459482192993164, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0009349584579467773, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009340047836303711, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010269880294799805, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009059906005859375, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0039479732513427734, + "simulationSeconds": 0.005469918251037598, + "tick": 1 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006405949592590332, + "tick": 2 + }, + { + "renderSeconds": 0.002914905548095703, + "simulationSeconds": 0.006939053535461426, + "tick": 3 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.01432192325592041, + "tick": 5 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0.006968021392822266, + "tick": 6 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0.007973074913024902, + "tick": 7 + }, + { + "renderSeconds": 0.00303494930267334, + "simulationSeconds": 9.5367431640625e-07, + "tick": 7 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.008509039878845215, + "tick": 8 + }, + { + "renderSeconds": 0.0036439895629882812, + "simulationSeconds": 0.007735013961791992, + "tick": 9 + }, + { + "renderSeconds": 0.0038028955459594727, + "simulationSeconds": 0.009093999862670898, + "tick": 10 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.021098017692565918, + "tick": 13 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.017056941986083984, + "tick": 15 + }, + { + "renderSeconds": 0.003435969352722168, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.002728104591369629, + "simulationSeconds": 0.006805896759033203, + "tick": 16 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.0071610212326049805, + "tick": 17 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.006114006042480469, + "tick": 18 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.012636065483093262, + "tick": 20 + }, + { + "renderSeconds": 0.0025249719619750977, + "simulationSeconds": 0.013329029083251953, + "tick": 22 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.006631016731262207, + "tick": 23 + }, + { + "renderSeconds": 0.0034220218658447266, + "simulationSeconds": 0.006242036819458008, + "tick": 24 + }, + { + "renderSeconds": 0.002949953079223633, + "simulationSeconds": 0.006026029586791992, + "tick": 25 + }, + { + "renderSeconds": 0.0030690431594848633, + "simulationSeconds": 0.00636601448059082, + "tick": 26 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.014191985130310059, + "tick": 28 + }, + { + "renderSeconds": 0.003477931022644043, + "simulationSeconds": 0.007091045379638672, + "tick": 29 + }, + { + "renderSeconds": 0.0033080577850341797, + "simulationSeconds": 0.007600069046020508, + "tick": 30 + }, + { + "renderSeconds": 0.0034960508346557617, + "simulationSeconds": 0.007250070571899414, + "tick": 31 + }, + { + "renderSeconds": 0.003343939781188965, + "simulationSeconds": 0.007743954658508301, + "tick": 32 + }, + { + "renderSeconds": 0.0031790733337402344, + "simulationSeconds": 0.00780797004699707, + "tick": 33 + }, + { + "renderSeconds": 0.0025659799575805664, + "simulationSeconds": 0.01271200180053711, + "tick": 35 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.006700992584228516, + "tick": 36 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.007209062576293945, + "tick": 37 + }, + { + "renderSeconds": 0.00335693359375, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0031849145889282227, + "simulationSeconds": 0.007501006126403809, + "tick": 38 + }, + { + "renderSeconds": 0.0038270950317382812, + "simulationSeconds": 0.007503986358642578, + "tick": 39 + }, + { + "renderSeconds": 0.003329038619995117, + "simulationSeconds": 0.007030010223388672, + "tick": 40 + }, + { + "renderSeconds": 0.0035179853439331055, + "simulationSeconds": 0.007712006568908691, + "tick": 41 + }, + { + "renderSeconds": 0.0036569833755493164, + "simulationSeconds": 0.014163017272949219, + "tick": 43 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.013807058334350586, + "tick": 45 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.006599068641662598, + "tick": 46 + }, + { + "renderSeconds": 0.0032509565353393555, + "simulationSeconds": 0.0069580078125, + "tick": 47 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.006296992301940918, + "tick": 48 + }, + { + "renderSeconds": 0.0022819042205810547, + "simulationSeconds": 0.014689922332763672, + "tick": 50 + }, + { + "renderSeconds": 0.0032769441604614258, + "simulationSeconds": 0.0065048933029174805, + "tick": 51 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006255030632019043, + "tick": 52 + }, + { + "renderSeconds": 0.003116011619567871, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0032650232315063477, + "simulationSeconds": 0.006814002990722656, + "tick": 53 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.006136059761047363, + "tick": 54 + }, + { + "renderSeconds": 0.003255009651184082, + "simulationSeconds": 0.0063419342041015625, + "tick": 55 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0.006783008575439453, + "tick": 56 + }, + { + "renderSeconds": 0.0025720596313476562, + "simulationSeconds": 0.012552976608276367, + "tick": 58 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.0061130523681640625, + "tick": 59 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.006733059883117676, + "tick": 60 + }, + { + "renderSeconds": 0.004022002220153809, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0027619600296020508, + "simulationSeconds": 0.007360100746154785, + "tick": 61 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.006553053855895996, + "tick": 62 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 0.007223963737487793, + "tick": 63 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.014468073844909668, + "tick": 65 + }, + { + "renderSeconds": 0.003159046173095703, + "simulationSeconds": 0.006906032562255859, + "tick": 66 + }, + { + "renderSeconds": 0.0034580230712890625, + "simulationSeconds": 0.007570981979370117, + "tick": 67 + }, + { + "renderSeconds": 0.00309598445892334, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0033979415893554688, + "simulationSeconds": 0.007819056510925293, + "tick": 68 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.006025075912475586, + "tick": 69 + }, + { + "renderSeconds": 0.0032900571823120117, + "simulationSeconds": 0.00686800479888916, + "tick": 70 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006136059761047363, + "tick": 71 + }, + { + "renderSeconds": 0.0029219388961791992, + "simulationSeconds": 0.013216018676757812, + "tick": 73 + }, + { + "renderSeconds": 0.002461075782775879, + "simulationSeconds": 0.006104946136474609, + "tick": 74 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.006407022476196289, + "tick": 75 + }, + { + "renderSeconds": 0.0030280351638793945, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002716064453125, + "simulationSeconds": 0.006297945976257324, + "tick": 76 + }, + { + "renderSeconds": 0.00359499454498291, + "simulationSeconds": 0.007198929786682129, + "tick": 77 + }, + { + "renderSeconds": 0.003225088119506836, + "simulationSeconds": 0.007127046585083008, + "tick": 78 + }, + { + "renderSeconds": 0.0029679536819458008, + "simulationSeconds": 0.014711976051330566, + "tick": 80 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.007187962532043457, + "tick": 81 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.006064057350158691, + "tick": 82 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.006271004676818848, + "tick": 83 + }, + { + "renderSeconds": 0.0028449296951293945, + "simulationSeconds": 0.007125973701477051, + "tick": 84 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.007164955139160156, + "tick": 85 + }, + { + "renderSeconds": 0.00336301326751709, + "simulationSeconds": 0.007261991500854492, + "tick": 86 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.014774918556213379, + "tick": 88 + }, + { + "renderSeconds": 0.0040090084075927734, + "simulationSeconds": 0.0082319974899292, + "tick": 89 + }, + { + "renderSeconds": 0.002545952796936035, + "simulationSeconds": 0.006455063819885254, + "tick": 90 + }, + { + "renderSeconds": 0.0029430389404296875, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0025539398193359375, + "simulationSeconds": 0.0063010454177856445, + "tick": 91 + }, + { + "renderSeconds": 0.0034170150756835938, + "simulationSeconds": 0.006332039833068848, + "tick": 92 + }, + { + "renderSeconds": 0.0031769275665283203, + "simulationSeconds": 0.007454991340637207, + "tick": 93 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.01371908187866211, + "tick": 95 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.00701296329498291, + "tick": 96 + }, + { + "renderSeconds": 0.003101944923400879, + "simulationSeconds": 0.007336020469665527, + "tick": 97 + }, + { + "renderSeconds": 0.0033730268478393555, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0.007146000862121582, + "tick": 98 + }, + { + "renderSeconds": 0.0032389163970947266, + "simulationSeconds": 0.00725400447845459, + "tick": 99 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.006860017776489258, + "tick": 100 + }, + { + "renderSeconds": 0.0029300451278686523, + "simulationSeconds": 0.007439017295837402, + "tick": 101 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0.014278054237365723, + "tick": 103 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.0069921016693115234, + "tick": 104 + }, + { + "renderSeconds": 0.0036760568618774414, + "simulationSeconds": 0.008166074752807617, + "tick": 105 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 0.006785035133361816, + "tick": 106 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.006487011909484863, + "tick": 107 + }, + { + "renderSeconds": 0.0028989315032958984, + "simulationSeconds": 0.006422996520996094, + "tick": 108 + }, + { + "renderSeconds": 0.002483963966369629, + "simulationSeconds": 0.012746930122375488, + "tick": 110 + }, + { + "renderSeconds": 0.00327908992767334, + "simulationSeconds": 0.006309986114501953, + "tick": 111 + }, + { + "renderSeconds": 0.0025800466537475586, + "simulationSeconds": 0.006353020668029785, + "tick": 112 + }, + { + "renderSeconds": 0.003600001335144043, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.0067479610443115234, + "tick": 113 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.007158041000366211, + "tick": 114 + }, + { + "renderSeconds": 0.0032199621200561523, + "simulationSeconds": 0.007302999496459961, + "tick": 115 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.0069239139556884766, + "tick": 116 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.014147043228149414, + "tick": 118 + }, + { + "renderSeconds": 0.004503011703491211, + "simulationSeconds": 0.010334014892578125, + "tick": 119 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.007132053375244141, + "tick": 120 + }, + { + "renderSeconds": 0.0034639835357666016, + "simulationSeconds": 0.008034944534301758, + "tick": 121 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.007364034652709961, + "tick": 122 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.006935000419616699, + "tick": 123 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.01385200023651123, + "tick": 125 + }, + { + "renderSeconds": 0.0035060644149780273, + "simulationSeconds": 0.006989002227783203, + "tick": 126 + }, + { + "renderSeconds": 0.0034569501876831055, + "simulationSeconds": 0.00766599178314209, + "tick": 127 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.003327012062072754, + "simulationSeconds": 0.007238984107971191, + "tick": 128 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.006837964057922363, + "tick": 129 + }, + { + "renderSeconds": 0.003484964370727539, + "simulationSeconds": 0.00653994083404541, + "tick": 130 + }, + { + "renderSeconds": 0.002601027488708496, + "simulationSeconds": 0.006114006042480469, + "tick": 131 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.013203024864196777, + "tick": 133 + }, + { + "renderSeconds": 0.0026398897171020508, + "simulationSeconds": 0.0063419342041015625, + "tick": 134 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.007184028625488281, + "tick": 135 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.0031899213790893555, + "simulationSeconds": 0.007341980934143066, + "tick": 136 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.007375001907348633, + "tick": 137 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0.006863951683044434, + "tick": 138 + }, + { + "renderSeconds": 0.003489971160888672, + "simulationSeconds": 0.014601945877075195, + "tick": 140 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.015293002128601074, + "tick": 142 + }, + { + "renderSeconds": 0.004099011421203613, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0033550262451171875, + "simulationSeconds": 0.0073659420013427734, + "tick": 143 + }, + { + "renderSeconds": 0.003489971160888672, + "simulationSeconds": 0.006858944892883301, + "tick": 144 + }, + { + "renderSeconds": 0.0031690597534179688, + "simulationSeconds": 0.007609963417053223, + "tick": 145 + }, + { + "renderSeconds": 0.0034210681915283203, + "simulationSeconds": 0.006551027297973633, + "tick": 146 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.012328028678894043, + "tick": 148 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.013231992721557617, + "tick": 150 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0, + "tick": 150 + }, + { + "renderSeconds": 0.003607034683227539, + "simulationSeconds": 0.006761074066162109, + "tick": 151 + }, + { + "renderSeconds": 0.003430008888244629, + "simulationSeconds": 0.006085991859436035, + "tick": 152 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.00610804557800293, + "tick": 153 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0.012151002883911133, + "tick": 155 + }, + { + "renderSeconds": 0.0032570362091064453, + "simulationSeconds": 0.006200909614562988, + "tick": 156 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.006535053253173828, + "tick": 157 + }, + { + "renderSeconds": 0.0026050806045532227, + "simulationSeconds": 0, + "tick": 157 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.006690025329589844, + "tick": 158 + }, + { + "renderSeconds": 0.0047370195388793945, + "simulationSeconds": 0.006096005439758301, + "tick": 159 + }, + { + "renderSeconds": 0.0032640695571899414, + "simulationSeconds": 0.006886005401611328, + "tick": 160 + }, + { + "renderSeconds": 0.0035009384155273438, + "simulationSeconds": 0.007577061653137207, + "tick": 161 + }, + { + "renderSeconds": 0.0030999183654785156, + "simulationSeconds": 0.014074087142944336, + "tick": 163 + }, + { + "renderSeconds": 0.0036330223083496094, + "simulationSeconds": 0.008012056350708008, + "tick": 164 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 0.014531970024108887, + "tick": 166 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.013643980026245117, + "tick": 168 + }, + { + "renderSeconds": 0.0025060176849365234, + "simulationSeconds": 0.013255000114440918, + "tick": 170 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.006972074508666992, + "tick": 171 + }, + { + "renderSeconds": 0.0030580759048461914, + "simulationSeconds": 0.006496906280517578, + "tick": 172 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0, + "tick": 172 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.006711006164550781, + "tick": 173 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.006034970283508301, + "tick": 174 + }, + { + "renderSeconds": 0.0032149553298950195, + "simulationSeconds": 0.006641030311584473, + "tick": 175 + }, + { + "renderSeconds": 0.002472996711730957, + "simulationSeconds": 0.006502985954284668, + "tick": 176 + }, + { + "renderSeconds": 0.0028760433197021484, + "simulationSeconds": 0.012579917907714844, + "tick": 178 + }, + { + "renderSeconds": 0.0035170316696166992, + "simulationSeconds": 0.007920026779174805, + "tick": 179 + }, + { + "renderSeconds": 0.003289937973022461, + "simulationSeconds": 0.007175922393798828, + "tick": 180 + }, + { + "renderSeconds": 0.003901958465576172, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.0032030344009399414, + "simulationSeconds": 0.0075969696044921875, + "tick": 181 + }, + { + "renderSeconds": 0.0032930374145507812, + "simulationSeconds": 0.0075609683990478516, + "tick": 182 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.0069599151611328125, + "tick": 183 + }, + { + "renderSeconds": 0.0029060840606689453, + "simulationSeconds": 0.013031959533691406, + "tick": 185 + }, + { + "renderSeconds": 0.0037260055541992188, + "simulationSeconds": 0.007046937942504883, + "tick": 186 + }, + { + "renderSeconds": 0.0035070180892944336, + "simulationSeconds": 0.008156061172485352, + "tick": 187 + }, + { + "renderSeconds": 0.0032699108123779297, + "simulationSeconds": 0.013240933418273926, + "tick": 189 + }, + { + "renderSeconds": 0.003076910972595215, + "simulationSeconds": 0, + "tick": 189 + }, + { + "renderSeconds": 0.004088044166564941, + "simulationSeconds": 0.007237076759338379, + "tick": 190 + }, + { + "renderSeconds": 0.00333404541015625, + "simulationSeconds": 0.007505059242248535, + "tick": 191 + }, + { + "renderSeconds": 0.0030039548873901367, + "simulationSeconds": 0.014994978904724121, + "tick": 193 + }, + { + "renderSeconds": 0.003225088119506836, + "simulationSeconds": 0.007200002670288086, + "tick": 194 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.007768988609313965, + "tick": 195 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.007421016693115234, + "tick": 196 + }, + { + "renderSeconds": 0.0037599802017211914, + "simulationSeconds": 0.008578062057495117, + "tick": 197 + }, + { + "renderSeconds": 0.003197908401489258, + "simulationSeconds": 0.007732033729553223, + "tick": 198 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.012318968772888184, + "tick": 200 + }, + { + "renderSeconds": 0.0034400224685668945, + "simulationSeconds": 0.00601506233215332, + "tick": 201 + }, + { + "renderSeconds": 0.0032869577407836914, + "simulationSeconds": 0.007082104682922363, + "tick": 202 + }, + { + "renderSeconds": 0.00318300724029541, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.003286004066467285, + "simulationSeconds": 0.0074089765548706055, + "tick": 203 + }, + { + "renderSeconds": 0.004191994667053223, + "simulationSeconds": 0.007353067398071289, + "tick": 204 + }, + { + "renderSeconds": 0.00298309326171875, + "simulationSeconds": 0.0074509382247924805, + "tick": 205 + }, + { + "renderSeconds": 0.0035539865493774414, + "simulationSeconds": 0.007647991180419922, + "tick": 206 + }, + { + "renderSeconds": 0.004183053970336914, + "simulationSeconds": 0.02248096466064453, + "tick": 209 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.015201091766357422, + "tick": 211 + }, + { + "renderSeconds": 0.0027009248733520508, + "simulationSeconds": 0.013172030448913574, + "tick": 213 + }, + { + "renderSeconds": 0.0033169984817504883, + "simulationSeconds": 0.013157010078430176, + "tick": 215 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.006348967552185059, + "tick": 216 + }, + { + "renderSeconds": 0.003182053565979004, + "simulationSeconds": 0.006340980529785156, + "tick": 217 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0, + "tick": 217 + }, + { + "renderSeconds": 0.002577066421508789, + "simulationSeconds": 0.0068359375, + "tick": 218 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.007351040840148926, + "tick": 219 + }, + { + "renderSeconds": 0.0026320219039916992, + "simulationSeconds": 0.006006002426147461, + "tick": 220 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.007851958274841309, + "tick": 221 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.013779997825622559, + "tick": 223 + }, + { + "renderSeconds": 0.0030509233474731445, + "simulationSeconds": 0.007291913032531738, + "tick": 224 + }, + { + "renderSeconds": 0.0035619735717773438, + "simulationSeconds": 0.0076940059661865234, + "tick": 225 + }, + { + "renderSeconds": 0.0034580230712890625, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 225 + }, + { + "renderSeconds": 0.0039539337158203125, + "simulationSeconds": 0.0086439847946167, + "tick": 226 + }, + { + "renderSeconds": 0.0037729740142822266, + "simulationSeconds": 0.009202003479003906, + "tick": 227 + }, + { + "renderSeconds": 0.004140973091125488, + "simulationSeconds": 0.009012937545776367, + "tick": 228 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 0.022265911102294922, + "tick": 231 + }, + { + "renderSeconds": 0.0031180381774902344, + "simulationSeconds": 0.021908998489379883, + "tick": 234 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.015073895454406738, + "tick": 236 + }, + { + "renderSeconds": 0.0031859874725341797, + "simulationSeconds": 0, + "tick": 236 + }, + { + "renderSeconds": 0.003091096878051758, + "simulationSeconds": 0.014227986335754395, + "tick": 238 + }, + { + "renderSeconds": 0.004668116569519043, + "simulationSeconds": 0.007297039031982422, + "tick": 239 + }, + { + "renderSeconds": 0.002521991729736328, + "simulationSeconds": 0.006561994552612305, + "tick": 240 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.006807923316955566, + "tick": 241 + }, + { + "renderSeconds": 0.002514958381652832, + "simulationSeconds": 0.006372928619384766, + "tick": 242 + }, + { + "renderSeconds": 0.0025739669799804688, + "simulationSeconds": 0.006597042083740234, + "tick": 243 + }, + { + "renderSeconds": 0.0025240182876586914, + "simulationSeconds": 0.01246798038482666, + "tick": 245 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.006364107131958008, + "tick": 246 + }, + { + "renderSeconds": 0.0038568973541259766, + "simulationSeconds": 0.006751060485839844, + "tick": 247 + }, + { + "renderSeconds": 0.003175973892211914, + "simulationSeconds": 0, + "tick": 247 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.0065670013427734375, + "tick": 248 + }, + { + "renderSeconds": 0.0031200647354125977, + "simulationSeconds": 0.00774991512298584, + "tick": 249 + }, + { + "renderSeconds": 0.0035719871520996094, + "simulationSeconds": 0.00748598575592041, + "tick": 250 + }, + { + "renderSeconds": 0.0032280683517456055, + "simulationSeconds": 0.007980942726135254, + "tick": 251 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.015244007110595703, + "tick": 253 + }, + { + "renderSeconds": 0.0031430721282958984, + "simulationSeconds": 0.0156480073928833, + "tick": 255 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.013679027557373047, + "tick": 257 + }, + { + "renderSeconds": 0.0033829212188720703, + "simulationSeconds": 0.007611989974975586, + "tick": 258 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.013525009155273438, + "tick": 260 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.012810945510864258, + "tick": 262 + }, + { + "renderSeconds": 0.002720952033996582, + "simulationSeconds": 0, + "tick": 262 + }, + { + "renderSeconds": 0.0031468868255615234, + "simulationSeconds": 0.0067729949951171875, + "tick": 263 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.006083965301513672, + "tick": 264 + }, + { + "renderSeconds": 0.0029048919677734375, + "simulationSeconds": 0.007620096206665039, + "tick": 265 + }, + { + "renderSeconds": 0.004060983657836914, + "simulationSeconds": 0.008760929107666016, + "tick": 266 + }, + { + "renderSeconds": 0.004209995269775391, + "simulationSeconds": 0.01996898651123047, + "tick": 268 + }, + { + "renderSeconds": 0.0036929845809936523, + "simulationSeconds": 0.017709970474243164, + "tick": 270 + }, + { + "renderSeconds": 0.0031850337982177734, + "simulationSeconds": 0.006975889205932617, + "tick": 271 + }, + { + "renderSeconds": 0.002472996711730957, + "simulationSeconds": 0.0135650634765625, + "tick": 273 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.012804031372070312, + "tick": 275 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006775975227355957, + "tick": 276 + }, + { + "renderSeconds": 0.0026390552520751953, + "simulationSeconds": 0.006363987922668457, + "tick": 277 + }, + { + "renderSeconds": 0.002982020378112793, + "simulationSeconds": 0, + "tick": 277 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.006837010383605957, + "tick": 278 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.00627899169921875, + "tick": 279 + }, + { + "renderSeconds": 0.003037095069885254, + "simulationSeconds": 0.006329059600830078, + "tick": 280 + }, + { + "renderSeconds": 0.003134012222290039, + "simulationSeconds": 0.007232069969177246, + "tick": 281 + }, + { + "renderSeconds": 0.0033910274505615234, + "simulationSeconds": 0.01518392562866211, + "tick": 283 + }, + { + "renderSeconds": 0.0042879581451416016, + "simulationSeconds": 0.010416984558105469, + "tick": 284 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 0.01449596881866455, + "tick": 286 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.013300061225891113, + "tick": 288 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.011874079704284668, + "tick": 290 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.006181955337524414, + "tick": 291 + }, + { + "renderSeconds": 0.0027909278869628906, + "simulationSeconds": 0.006356000900268555, + "tick": 292 + }, + { + "renderSeconds": 0.0025669336318969727, + "simulationSeconds": 0, + "tick": 292 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.008185029029846191, + "tick": 293 + }, + { + "renderSeconds": 0.003394007682800293, + "simulationSeconds": 0.006425976753234863, + "tick": 294 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.006569027900695801, + "tick": 295 + }, + { + "renderSeconds": 0.003461003303527832, + "simulationSeconds": 0.007377028465270996, + "tick": 296 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.013898015022277832, + "tick": 298 + }, + { + "renderSeconds": 0.0033789873123168945, + "simulationSeconds": 0.008018016815185547, + "tick": 299 + }, + { + "renderSeconds": 0.0031960010528564453, + "simulationSeconds": 0.006510019302368164, + "tick": 300 + }, + { + "renderSeconds": 0.003695964813232422, + "simulationSeconds": 0.007338047027587891, + "tick": 301 + }, + { + "renderSeconds": 0.00347900390625, + "simulationSeconds": 0.006994962692260742, + "tick": 302 + }, + { + "renderSeconds": 0.0032699108123779297, + "simulationSeconds": 0.006947994232177734, + "tick": 303 + }, + { + "renderSeconds": 0.0025440454483032227, + "simulationSeconds": 0.012137055397033691, + "tick": 305 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.013098001480102539, + "tick": 307 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0, + "tick": 307 + }, + { + "renderSeconds": 0.004107952117919922, + "simulationSeconds": 0.007170915603637695, + "tick": 308 + }, + { + "renderSeconds": 0.00327301025390625, + "simulationSeconds": 0.006991982460021973, + "tick": 309 + }, + { + "renderSeconds": 0.0034159421920776367, + "simulationSeconds": 0.007104039192199707, + "tick": 310 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006466984748840332, + "tick": 311 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.013656973838806152, + "tick": 313 + }, + { + "renderSeconds": 0.003103017807006836, + "simulationSeconds": 0.0068950653076171875, + "tick": 314 + }, + { + "renderSeconds": 0.003968000411987305, + "simulationSeconds": 0.0070760250091552734, + "tick": 315 + }, + { + "renderSeconds": 0.003363966941833496, + "simulationSeconds": 0.006880044937133789, + "tick": 316 + }, + { + "renderSeconds": 0.0033119916915893555, + "simulationSeconds": 0.006855010986328125, + "tick": 317 + }, + { + "renderSeconds": 0.0031720399856567383, + "simulationSeconds": 0.006971955299377441, + "tick": 318 + }, + { + "renderSeconds": 0.0029010772705078125, + "simulationSeconds": 0.013718008995056152, + "tick": 320 + }, + { + "renderSeconds": 0.004255056381225586, + "simulationSeconds": 0.00704801082611084, + "tick": 321 + }, + { + "renderSeconds": 0.0033899545669555664, + "simulationSeconds": 0.007054924964904785, + "tick": 322 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0, + "tick": 322 + }, + { + "renderSeconds": 0.0030798912048339844, + "simulationSeconds": 0.007072091102600098, + "tick": 323 + }, + { + "renderSeconds": 0.0034999847412109375, + "simulationSeconds": 0.0069800615310668945, + "tick": 324 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.006887912750244141, + "tick": 325 + }, + { + "renderSeconds": 0.004222989082336426, + "simulationSeconds": 0.008569002151489258, + "tick": 326 + }, + { + "renderSeconds": 0.003844022750854492, + "simulationSeconds": 0.027287960052490234, + "tick": 329 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.014261960983276367, + "tick": 331 + }, + { + "renderSeconds": 0.004117012023925781, + "simulationSeconds": 0.0074340105056762695, + "tick": 332 + }, + { + "renderSeconds": 0.0031909942626953125, + "simulationSeconds": 0.0070879459381103516, + "tick": 333 + }, + { + "renderSeconds": 0.0029009580612182617, + "simulationSeconds": 0.015208959579467773, + "tick": 335 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.014932990074157715, + "tick": 337 + }, + { + "renderSeconds": 0.0037369728088378906, + "simulationSeconds": 0.007233023643493652, + "tick": 338 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.006415009498596191, + "tick": 339 + }, + { + "renderSeconds": 0.0027159452438354492, + "simulationSeconds": 0.006452083587646484, + "tick": 340 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.006690025329589844, + "tick": 341 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.012714982032775879, + "tick": 343 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006062030792236328, + "tick": 344 + }, + { + "renderSeconds": 0.003079056739807129, + "simulationSeconds": 0.008441925048828125, + "tick": 345 + }, + { + "renderSeconds": 0.0029990673065185547, + "simulationSeconds": 0, + "tick": 345 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.006684064865112305, + "tick": 346 + }, + { + "renderSeconds": 0.0031991004943847656, + "simulationSeconds": 0.006737947463989258, + "tick": 347 + }, + { + "renderSeconds": 0.0029549598693847656, + "simulationSeconds": 0.006147980690002441, + "tick": 348 + }, + { + "renderSeconds": 0.002434968948364258, + "simulationSeconds": 0.012382030487060547, + "tick": 350 + }, + { + "renderSeconds": 0.0030280351638793945, + "simulationSeconds": 0.006399035453796387, + "tick": 351 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.0067670345306396484, + "tick": 352 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0, + "tick": 352 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.006885051727294922, + "tick": 353 + }, + { + "renderSeconds": 0.0024050474166870117, + "simulationSeconds": 0.006024956703186035, + "tick": 354 + }, + { + "renderSeconds": 0.0026129484176635742, + "simulationSeconds": 0.006375908851623535, + "tick": 355 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.007205009460449219, + "tick": 356 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.014652013778686523, + "tick": 358 + }, + { + "renderSeconds": 0.00336301326751709, + "simulationSeconds": 0.007770061492919922, + "tick": 359 + }, + { + "renderSeconds": 0.0032830238342285156, + "simulationSeconds": 0.007042050361633301, + "tick": 360 + }, + { + "renderSeconds": 0.0031249523162841797, + "simulationSeconds": 0, + "tick": 360 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.0074689388275146484, + "tick": 361 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0.007791996002197266, + "tick": 362 + }, + { + "renderSeconds": 0.003159046173095703, + "simulationSeconds": 0.007315993309020996, + "tick": 363 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0.014553070068359375, + "tick": 365 + }, + { + "renderSeconds": 0.0032280683517456055, + "simulationSeconds": 0.007261037826538086, + "tick": 366 + }, + { + "renderSeconds": 0.0030499696731567383, + "simulationSeconds": 0.006914973258972168, + "tick": 367 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.006049990653991699, + "tick": 368 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.006637096405029297, + "tick": 369 + }, + { + "renderSeconds": 0.0024149417877197266, + "simulationSeconds": 0.0065000057220458984, + "tick": 370 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.006716012954711914, + "tick": 371 + }, + { + "renderSeconds": 0.0024459362030029297, + "simulationSeconds": 0.012866973876953125, + "tick": 373 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.006594061851501465, + "tick": 374 + }, + { + "renderSeconds": 0.003047943115234375, + "simulationSeconds": 0.008548974990844727, + "tick": 375 + }, + { + "renderSeconds": 0.003286004066467285, + "simulationSeconds": 0, + "tick": 375 + }, + { + "renderSeconds": 0.0027399063110351562, + "simulationSeconds": 0.006253957748413086, + "tick": 376 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006915092468261719, + "tick": 377 + }, + { + "renderSeconds": 0.003377079963684082, + "simulationSeconds": 0.006849884986877441, + "tick": 378 + }, + { + "renderSeconds": 0.0034949779510498047, + "simulationSeconds": 0.01757502555847168, + "tick": 380 + }, + { + "renderSeconds": 0.003720998764038086, + "simulationSeconds": 0.018129944801330566, + "tick": 382 + }, + { + "renderSeconds": 0.003309965133666992, + "simulationSeconds": 0.00987398624420166, + "tick": 383 + }, + { + "renderSeconds": 0.003304004669189453, + "simulationSeconds": 0.006914019584655762, + "tick": 384 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.008179903030395508, + "tick": 385 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.006982922554016113, + "tick": 386 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.014311075210571289, + "tick": 388 + }, + { + "renderSeconds": 0.003592967987060547, + "simulationSeconds": 0.006215929985046387, + "tick": 389 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.006283998489379883, + "tick": 390 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0, + "tick": 390 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006301999092102051, + "tick": 391 + }, + { + "renderSeconds": 0.0034829378128051758, + "simulationSeconds": 0.007844924926757812, + "tick": 392 + }, + { + "renderSeconds": 0.00330197811126709, + "simulationSeconds": 0.007026076316833496, + "tick": 393 + }, + { + "renderSeconds": 0.0035630464553833008, + "simulationSeconds": 0.015504002571105957, + "tick": 395 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.012930035591125488, + "tick": 397 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.01318204402923584, + "tick": 399 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.006494045257568359, + "tick": 400 + }, + { + "renderSeconds": 0.0028710365295410156, + "simulationSeconds": 0.00662994384765625, + "tick": 401 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.012864947319030762, + "tick": 403 + }, + { + "renderSeconds": 0.0033169984817504883, + "simulationSeconds": 0.00622105598449707, + "tick": 404 + }, + { + "renderSeconds": 0.0031080245971679688, + "simulationSeconds": 0.007202029228210449, + "tick": 405 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 405 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.006373047828674316, + "tick": 406 + }, + { + "renderSeconds": 0.002911090850830078, + "simulationSeconds": 0.006597995758056641, + "tick": 407 + }, + { + "renderSeconds": 0.0034340620040893555, + "simulationSeconds": 0.006487011909484863, + "tick": 408 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.014294981956481934, + "tick": 410 + }, + { + "renderSeconds": 0.003346085548400879, + "simulationSeconds": 0.00728297233581543, + "tick": 411 + }, + { + "renderSeconds": 0.0037589073181152344, + "simulationSeconds": 0.008931994438171387, + "tick": 412 + }, + { + "renderSeconds": 0.003693103790283203, + "simulationSeconds": 0.009187936782836914, + "tick": 413 + }, + { + "renderSeconds": 0.003473997116088867, + "simulationSeconds": 0.007966995239257812, + "tick": 414 + }, + { + "renderSeconds": 0.0034780502319335938, + "simulationSeconds": 0.007436990737915039, + "tick": 415 + }, + { + "renderSeconds": 0.0038210153579711914, + "simulationSeconds": 0.007599949836730957, + "tick": 416 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.013108015060424805, + "tick": 418 + }, + { + "renderSeconds": 0.0024089813232421875, + "simulationSeconds": 0.013283967971801758, + "tick": 420 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.013136029243469238, + "tick": 422 + }, + { + "renderSeconds": 0.003405928611755371, + "simulationSeconds": 0.006675004959106445, + "tick": 423 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.013229966163635254, + "tick": 425 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.013347983360290527, + "tick": 427 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0, + "tick": 427 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.006920933723449707, + "tick": 428 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.0061609745025634766, + "tick": 429 + }, + { + "renderSeconds": 0.003197908401489258, + "simulationSeconds": 0.006371021270751953, + "tick": 430 + }, + { + "renderSeconds": 0.0024840831756591797, + "simulationSeconds": 0.006536006927490234, + "tick": 431 + }, + { + "renderSeconds": 0.0029050111770629883, + "simulationSeconds": 0.015225052833557129, + "tick": 433 + }, + { + "renderSeconds": 0.0036929845809936523, + "simulationSeconds": 0.007220029830932617, + "tick": 434 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0.007284045219421387, + "tick": 435 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0, + "tick": 435 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.007400035858154297, + "tick": 436 + }, + { + "renderSeconds": 0.0031969547271728516, + "simulationSeconds": 0.007290005683898926, + "tick": 437 + }, + { + "renderSeconds": 0.003818988800048828, + "simulationSeconds": 0.007554054260253906, + "tick": 438 + }, + { + "renderSeconds": 0.0035190582275390625, + "simulationSeconds": 0.01814591884613037, + "tick": 440 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.014842987060546875, + "tick": 442 + }, + { + "renderSeconds": 0.0033189058303833008, + "simulationSeconds": 0.007587075233459473, + "tick": 443 + }, + { + "renderSeconds": 0.0026268959045410156, + "simulationSeconds": 0.006996035575866699, + "tick": 444 + }, + { + "renderSeconds": 0.003319978713989258, + "simulationSeconds": 0.0066950321197509766, + "tick": 445 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.006054997444152832, + "tick": 446 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.01303708553314209, + "tick": 448 + }, + { + "renderSeconds": 0.0029300451278686523, + "simulationSeconds": 0.006122946739196777, + "tick": 449 + }, + { + "renderSeconds": 0.0032950639724731445, + "simulationSeconds": 0.007467985153198242, + "tick": 450 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0, + "tick": 450 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.006672978401184082, + "tick": 451 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0.0064820051193237305, + "tick": 452 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.00606989860534668, + "tick": 453 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.013907074928283691, + "tick": 455 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.007465004920959473, + "tick": 456 + }, + { + "renderSeconds": 0.003502964973449707, + "simulationSeconds": 0.00888204574584961, + "tick": 457 + }, + { + "renderSeconds": 0.003531932830810547, + "simulationSeconds": 0.009299993515014648, + "tick": 458 + }, + { + "renderSeconds": 0.004073023796081543, + "simulationSeconds": 0.008885025978088379, + "tick": 459 + }, + { + "renderSeconds": 0.0038089752197265625, + "simulationSeconds": 0.008504033088684082, + "tick": 460 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.01960599422454834, + "tick": 463 + }, + { + "renderSeconds": 0.0029479265213012695, + "simulationSeconds": 0.013579964637756348, + "tick": 465 + }, + { + "renderSeconds": 0.0029839277267456055, + "simulationSeconds": 0.0059549808502197266, + "tick": 466 + }, + { + "renderSeconds": 0.003180980682373047, + "simulationSeconds": 0.006053924560546875, + "tick": 467 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0.005835056304931641, + "tick": 468 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.012261033058166504, + "tick": 470 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.006090044975280762, + "tick": 471 + }, + { + "renderSeconds": 0.0032759904861450195, + "simulationSeconds": 0.006272077560424805, + "tick": 472 + }, + { + "renderSeconds": 0.003636002540588379, + "simulationSeconds": 0, + "tick": 472 + }, + { + "renderSeconds": 0.0031740665435791016, + "simulationSeconds": 0.006142973899841309, + "tick": 473 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.005697965621948242, + "tick": 474 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.005674958229064941, + "tick": 475 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.0062999725341796875, + "tick": 476 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.012547016143798828, + "tick": 478 + }, + { + "renderSeconds": 0.00341796875, + "simulationSeconds": 0.00669097900390625, + "tick": 479 + }, + { + "renderSeconds": 0.0035439729690551758, + "simulationSeconds": 0.007938981056213379, + "tick": 480 + }, + { + "renderSeconds": 0.004664897918701172, + "simulationSeconds": 9.5367431640625e-07, + "tick": 480 + }, + { + "renderSeconds": 0.004171967506408691, + "simulationSeconds": 0.009134054183959961, + "tick": 481 + }, + { + "renderSeconds": 0.003078937530517578, + "simulationSeconds": 0.006821990013122559, + "tick": 482 + }, + { + "renderSeconds": 0.0032590627670288086, + "simulationSeconds": 0.007292985916137695, + "tick": 483 + }, + { + "renderSeconds": 0.0031419992446899414, + "simulationSeconds": 0.01403498649597168, + "tick": 485 + }, + { + "renderSeconds": 0.003256082534790039, + "simulationSeconds": 0.0134810209274292, + "tick": 487 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.013930916786193848, + "tick": 489 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.006837010383605957, + "tick": 490 + }, + { + "renderSeconds": 0.003260970115661621, + "simulationSeconds": 0.00616908073425293, + "tick": 491 + }, + { + "renderSeconds": 0.002382993698120117, + "simulationSeconds": 0.012828946113586426, + "tick": 493 + }, + { + "renderSeconds": 0.0027109384536743164, + "simulationSeconds": 0.006257057189941406, + "tick": 494 + }, + { + "renderSeconds": 0.0025440454483032227, + "simulationSeconds": 0.006158947944641113, + "tick": 495 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0, + "tick": 495 + }, + { + "renderSeconds": 0.0023429393768310547, + "simulationSeconds": 0.0064280033111572266, + "tick": 496 + }, + { + "renderSeconds": 0.002610921859741211, + "simulationSeconds": 0.006363034248352051, + "tick": 497 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.007326960563659668, + "tick": 498 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.014448046684265137, + "tick": 500 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.007078051567077637, + "tick": 501 + }, + { + "renderSeconds": 0.004001975059509277, + "simulationSeconds": 0.00849902629852295, + "tick": 502 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0, + "tick": 502 + }, + { + "renderSeconds": 0.0029768943786621094, + "simulationSeconds": 0.007918953895568848, + "tick": 503 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.007300019264221191, + "tick": 504 + }, + { + "renderSeconds": 0.0028609037399291992, + "simulationSeconds": 0.007316946983337402, + "tick": 505 + }, + { + "renderSeconds": 0.0035060644149780273, + "simulationSeconds": 0.007727980613708496, + "tick": 506 + }, + { + "renderSeconds": 0.0033379793167114258, + "simulationSeconds": 0.017385005950927734, + "tick": 508 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0.018527984619140625, + "tick": 510 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04410683334572241, + "moveTicks": 480, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 844, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.4716618061065674, + "preparationSeconds": 0.534072995185852, + "reducedMotion": false, + "renderSeconds": 1.3935534954071045, + "repetition": 21, + "scenePreparationSeconds": 0.19568896293640137, + "simulationSeconds": 3.5973315238952637, + "snapshotBuildCount": 451, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 34.68258332577534, + "callbackMaxMS": 48.124583321623504, + "postActionRecords": 449, + "run": "BP008-stage-4-rep-21-axis-8191-reduced-false-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.8173273801803589, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0010520219802856445, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009520053863525391, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009750127792358398, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010619163513183594, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0038510560989379883, + "simulationSeconds": 0.006018996238708496, + "tick": 1 + }, + { + "renderSeconds": 0.0028679370880126953, + "simulationSeconds": 0.006487011909484863, + "tick": 2 + }, + { + "renderSeconds": 0.0029660463333129883, + "simulationSeconds": 0.0072040557861328125, + "tick": 3 + }, + { + "renderSeconds": 0.003322005271911621, + "simulationSeconds": 0.006912946701049805, + "tick": 4 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.0071680545806884766, + "tick": 5 + }, + { + "renderSeconds": 0.003422975540161133, + "simulationSeconds": 0.013513922691345215, + "tick": 7 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0033510923385620117, + "simulationSeconds": 0.0066329240798950195, + "tick": 8 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.006289958953857422, + "tick": 9 + }, + { + "renderSeconds": 0.0037440061569213867, + "simulationSeconds": 0.007609009742736816, + "tick": 10 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.007612109184265137, + "tick": 11 + }, + { + "renderSeconds": 0.0035990476608276367, + "simulationSeconds": 0.007543087005615234, + "tick": 12 + }, + { + "renderSeconds": 0.004050016403198242, + "simulationSeconds": 0.022046923637390137, + "tick": 15 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.013602018356323242, + "tick": 17 + }, + { + "renderSeconds": 0.0024400949478149414, + "simulationSeconds": 0.013085007667541504, + "tick": 19 + }, + { + "renderSeconds": 0.0028830766677856445, + "simulationSeconds": 0.006739974021911621, + "tick": 20 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.012881994247436523, + "tick": 22 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.0065860748291015625, + "tick": 23 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0.007444977760314941, + "tick": 24 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.008134007453918457, + "tick": 25 + }, + { + "renderSeconds": 0.0034890174865722656, + "simulationSeconds": 0.006843924522399902, + "tick": 26 + }, + { + "renderSeconds": 0.0035239458084106445, + "simulationSeconds": 0.015061020851135254, + "tick": 28 + }, + { + "renderSeconds": 0.0034760236740112305, + "simulationSeconds": 0.015169024467468262, + "tick": 30 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.01256406307220459, + "tick": 32 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0.006852984428405762, + "tick": 33 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.006887912750244141, + "tick": 34 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.006425023078918457, + "tick": 35 + }, + { + "renderSeconds": 0.002780914306640625, + "simulationSeconds": 0.012858986854553223, + "tick": 37 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 9.5367431640625e-07, + "tick": 37 + }, + { + "renderSeconds": 0.0027348995208740234, + "simulationSeconds": 0.006538987159729004, + "tick": 38 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.006396055221557617, + "tick": 39 + }, + { + "renderSeconds": 0.002640962600708008, + "simulationSeconds": 0.006320953369140625, + "tick": 40 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.006369948387145996, + "tick": 41 + }, + { + "renderSeconds": 0.0028449296951293945, + "simulationSeconds": 0.006168961524963379, + "tick": 42 + }, + { + "renderSeconds": 0.002994060516357422, + "simulationSeconds": 0.007059931755065918, + "tick": 43 + }, + { + "renderSeconds": 0.002562999725341797, + "simulationSeconds": 0.012086033821105957, + "tick": 45 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.002729058265686035, + "simulationSeconds": 0.006989002227783203, + "tick": 46 + }, + { + "renderSeconds": 0.0033299922943115234, + "simulationSeconds": 0.006738066673278809, + "tick": 47 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 0.0066220760345458984, + "tick": 48 + }, + { + "renderSeconds": 0.0035740137100219727, + "simulationSeconds": 0.008020997047424316, + "tick": 49 + }, + { + "renderSeconds": 0.0031250715255737305, + "simulationSeconds": 0.007308006286621094, + "tick": 50 + }, + { + "renderSeconds": 0.0029639005661010742, + "simulationSeconds": 0.014235973358154297, + "tick": 52 + }, + { + "renderSeconds": 0.0034960508346557617, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.0032640695571899414, + "simulationSeconds": 0.007366061210632324, + "tick": 53 + }, + { + "renderSeconds": 0.00406801700592041, + "simulationSeconds": 0.0074759721755981445, + "tick": 54 + }, + { + "renderSeconds": 0.0033849477767944336, + "simulationSeconds": 0.007516980171203613, + "tick": 55 + }, + { + "renderSeconds": 0.00327301025390625, + "simulationSeconds": 0.007423043251037598, + "tick": 56 + }, + { + "renderSeconds": 0.0032590627670288086, + "simulationSeconds": 0.016354918479919434, + "tick": 58 + }, + { + "renderSeconds": 0.003896951675415039, + "simulationSeconds": 0.01573002338409424, + "tick": 60 + }, + { + "renderSeconds": 0.0031510591506958008, + "simulationSeconds": 0.01455700397491455, + "tick": 62 + }, + { + "renderSeconds": 0.0030210018157958984, + "simulationSeconds": 0.007001996040344238, + "tick": 63 + }, + { + "renderSeconds": 0.00309598445892334, + "simulationSeconds": 0.0071250200271606445, + "tick": 64 + }, + { + "renderSeconds": 0.0033349990844726562, + "simulationSeconds": 0.007253050804138184, + "tick": 65 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.012717008590698242, + "tick": 67 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0.012309074401855469, + "tick": 69 + }, + { + "renderSeconds": 0.0025240182876586914, + "simulationSeconds": 0.012664079666137695, + "tick": 71 + }, + { + "renderSeconds": 0.0028210878372192383, + "simulationSeconds": 0.006417989730834961, + "tick": 72 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.006624937057495117, + "tick": 73 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.012371063232421875, + "tick": 75 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.0033990144729614258, + "simulationSeconds": 0.007115006446838379, + "tick": 76 + }, + { + "renderSeconds": 0.0037649869918823242, + "simulationSeconds": 0.006988048553466797, + "tick": 77 + }, + { + "renderSeconds": 0.0028390884399414062, + "simulationSeconds": 0.007691025733947754, + "tick": 78 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.007405996322631836, + "tick": 79 + }, + { + "renderSeconds": 0.003648996353149414, + "simulationSeconds": 0.007277011871337891, + "tick": 80 + }, + { + "renderSeconds": 0.003444075584411621, + "simulationSeconds": 0.01771104335784912, + "tick": 82 + }, + { + "renderSeconds": 0.004122018814086914, + "simulationSeconds": 0.017807960510253906, + "tick": 84 + }, + { + "renderSeconds": 0.0038470029830932617, + "simulationSeconds": 0, + "tick": 84 + }, + { + "renderSeconds": 0.0033539533615112305, + "simulationSeconds": 0.007833003997802734, + "tick": 85 + }, + { + "renderSeconds": 0.0032449960708618164, + "simulationSeconds": 0.007241010665893555, + "tick": 86 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.007145047187805176, + "tick": 87 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.0073860883712768555, + "tick": 88 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 0.015301942825317383, + "tick": 90 + }, + { + "renderSeconds": 0.0027240514755249023, + "simulationSeconds": 0.013020038604736328, + "tick": 92 + }, + { + "renderSeconds": 0.0033839941024780273, + "simulationSeconds": 0.006757974624633789, + "tick": 93 + }, + { + "renderSeconds": 0.0033750534057617188, + "simulationSeconds": 0.006431937217712402, + "tick": 94 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 0.0064699649810791016, + "tick": 95 + }, + { + "renderSeconds": 0.0026029348373413086, + "simulationSeconds": 0.013328075408935547, + "tick": 97 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0041429996490478516, + "simulationSeconds": 0.006618976593017578, + "tick": 98 + }, + { + "renderSeconds": 0.003108978271484375, + "simulationSeconds": 0.007234930992126465, + "tick": 99 + }, + { + "renderSeconds": 0.002904057502746582, + "simulationSeconds": 0.006556987762451172, + "tick": 100 + }, + { + "renderSeconds": 0.00330197811126709, + "simulationSeconds": 0.0063860416412353516, + "tick": 101 + }, + { + "renderSeconds": 0.0026799440383911133, + "simulationSeconds": 0.006489992141723633, + "tick": 102 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.006587028503417969, + "tick": 103 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.01200103759765625, + "tick": 105 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.008810043334960938, + "tick": 106 + }, + { + "renderSeconds": 0.003605961799621582, + "simulationSeconds": 0.008071064949035645, + "tick": 107 + }, + { + "renderSeconds": 0.0039299726486206055, + "simulationSeconds": 0.009414911270141602, + "tick": 108 + }, + { + "renderSeconds": 0.00504302978515625, + "simulationSeconds": 0.010264992713928223, + "tick": 109 + }, + { + "renderSeconds": 0.003813028335571289, + "simulationSeconds": 0.026826024055480957, + "tick": 112 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 0.02087700366973877, + "tick": 115 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0.0060389041900634766, + "tick": 116 + }, + { + "renderSeconds": 0.0028649568557739258, + "simulationSeconds": 0.006765961647033691, + "tick": 117 + }, + { + "renderSeconds": 0.002440929412841797, + "simulationSeconds": 0.0064650774002075195, + "tick": 118 + }, + { + "renderSeconds": 0.0022510290145874023, + "simulationSeconds": 0.01276397705078125, + "tick": 120 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.002886056900024414, + "simulationSeconds": 0.006699085235595703, + "tick": 121 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.0063800811767578125, + "tick": 122 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.0072650909423828125, + "tick": 123 + }, + { + "renderSeconds": 0.003144979476928711, + "simulationSeconds": 0.007809996604919434, + "tick": 124 + }, + { + "renderSeconds": 0.004224061965942383, + "simulationSeconds": 0.009837985038757324, + "tick": 125 + }, + { + "renderSeconds": 0.003246903419494629, + "simulationSeconds": 0.014640092849731445, + "tick": 127 + }, + { + "renderSeconds": 0.0032879114151000977, + "simulationSeconds": 0.014822006225585938, + "tick": 129 + }, + { + "renderSeconds": 0.0025690793991088867, + "simulationSeconds": 0.007008910179138184, + "tick": 130 + }, + { + "renderSeconds": 0.0028030872344970703, + "simulationSeconds": 0.006794929504394531, + "tick": 131 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.006435036659240723, + "tick": 132 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.007025957107543945, + "tick": 133 + }, + { + "renderSeconds": 0.0025870800018310547, + "simulationSeconds": 0.012392997741699219, + "tick": 135 + }, + { + "renderSeconds": 0.0030410289764404297, + "simulationSeconds": 0.007339000701904297, + "tick": 136 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.006204962730407715, + "tick": 137 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.0061609745025634766, + "tick": 138 + }, + { + "renderSeconds": 0.0032739639282226562, + "simulationSeconds": 0.006179928779602051, + "tick": 139 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.006193995475769043, + "tick": 140 + }, + { + "renderSeconds": 0.0026749372482299805, + "simulationSeconds": 0.012510061264038086, + "tick": 142 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0035660266876220703, + "simulationSeconds": 0.0064460039138793945, + "tick": 143 + }, + { + "renderSeconds": 0.002989053726196289, + "simulationSeconds": 0.006850004196166992, + "tick": 144 + }, + { + "renderSeconds": 0.0034030675888061523, + "simulationSeconds": 0.0069370269775390625, + "tick": 145 + }, + { + "renderSeconds": 0.0038650035858154297, + "simulationSeconds": 0.006920933723449707, + "tick": 146 + }, + { + "renderSeconds": 0.004045963287353516, + "simulationSeconds": 0.00755000114440918, + "tick": 147 + }, + { + "renderSeconds": 0.004450082778930664, + "simulationSeconds": 0.009199023246765137, + "tick": 148 + }, + { + "renderSeconds": 0.003972053527832031, + "simulationSeconds": 0.01485300064086914, + "tick": 150 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.013598918914794922, + "tick": 152 + }, + { + "renderSeconds": 0.002870917320251465, + "simulationSeconds": 0.006788969039916992, + "tick": 153 + }, + { + "renderSeconds": 0.003098011016845703, + "simulationSeconds": 0.006498098373413086, + "tick": 154 + }, + { + "renderSeconds": 0.0026450157165527344, + "simulationSeconds": 0.006399989128112793, + "tick": 155 + }, + { + "renderSeconds": 0.002547025680541992, + "simulationSeconds": 0.012305974960327148, + "tick": 157 + }, + { + "renderSeconds": 0.0026750564575195312, + "simulationSeconds": 0, + "tick": 157 + }, + { + "renderSeconds": 0.0063179731369018555, + "simulationSeconds": 0.005926012992858887, + "tick": 158 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.008599042892456055, + "tick": 159 + }, + { + "renderSeconds": 0.0036100149154663086, + "simulationSeconds": 0.0065059661865234375, + "tick": 160 + }, + { + "renderSeconds": 0.0030040740966796875, + "simulationSeconds": 0.006199002265930176, + "tick": 161 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.006677031517028809, + "tick": 162 + }, + { + "renderSeconds": 0.003161907196044922, + "simulationSeconds": 0.0067729949951171875, + "tick": 163 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.015580892562866211, + "tick": 165 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.01496899127960205, + "tick": 167 + }, + { + "renderSeconds": 0.003466010093688965, + "simulationSeconds": 0.006595969200134277, + "tick": 168 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.007877945899963379, + "tick": 169 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.006979942321777344, + "tick": 170 + }, + { + "renderSeconds": 0.0029458999633789062, + "simulationSeconds": 0.012918949127197266, + "tick": 172 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.012186050415039062, + "tick": 174 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.006989955902099609, + "tick": 175 + }, + { + "renderSeconds": 0.00315701961517334, + "simulationSeconds": 0.006301999092102051, + "tick": 176 + }, + { + "renderSeconds": 0.002351045608520508, + "simulationSeconds": 0.006358981132507324, + "tick": 177 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0.006670951843261719, + "tick": 178 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0.01262199878692627, + "tick": 180 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0, + "tick": 180 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 0.006327033042907715, + "tick": 181 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006358027458190918, + "tick": 182 + }, + { + "renderSeconds": 0.0037360191345214844, + "simulationSeconds": 0.0064470767974853516, + "tick": 183 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.006029009819030762, + "tick": 184 + }, + { + "renderSeconds": 0.003484010696411133, + "simulationSeconds": 0.006909012794494629, + "tick": 185 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.014711976051330566, + "tick": 187 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0, + "tick": 187 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.007133007049560547, + "tick": 188 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.007217049598693848, + "tick": 189 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.006305098533630371, + "tick": 190 + }, + { + "renderSeconds": 0.00317990779876709, + "simulationSeconds": 0.007142066955566406, + "tick": 191 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.007152080535888672, + "tick": 192 + }, + { + "renderSeconds": 0.004559040069580078, + "simulationSeconds": 0.007603049278259277, + "tick": 193 + }, + { + "renderSeconds": 0.0026619434356689453, + "simulationSeconds": 0.01236104965209961, + "tick": 195 + }, + { + "renderSeconds": 0.0030670166015625, + "simulationSeconds": 0.012977004051208496, + "tick": 197 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0, + "tick": 197 + }, + { + "renderSeconds": 0.0032349824905395508, + "simulationSeconds": 0.006741046905517578, + "tick": 198 + }, + { + "renderSeconds": 0.003040909767150879, + "simulationSeconds": 0.006150007247924805, + "tick": 199 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.006635069847106934, + "tick": 200 + }, + { + "renderSeconds": 0.0026050806045532227, + "simulationSeconds": 0.012861013412475586, + "tick": 202 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0, + "tick": 202 + }, + { + "renderSeconds": 0.003999948501586914, + "simulationSeconds": 0.007012009620666504, + "tick": 203 + }, + { + "renderSeconds": 0.0037430524826049805, + "simulationSeconds": 0.007241964340209961, + "tick": 204 + }, + { + "renderSeconds": 0.0029680728912353516, + "simulationSeconds": 0.0070639848709106445, + "tick": 205 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006721019744873047, + "tick": 206 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 0.006399989128112793, + "tick": 207 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006484031677246094, + "tick": 208 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.01654791831970215, + "tick": 210 + }, + { + "renderSeconds": 0.0030510425567626953, + "simulationSeconds": 0.007472991943359375, + "tick": 211 + }, + { + "renderSeconds": 0.0035170316696166992, + "simulationSeconds": 0.008306026458740234, + "tick": 212 + }, + { + "renderSeconds": 0.0035550594329833984, + "simulationSeconds": 0.007719993591308594, + "tick": 213 + }, + { + "renderSeconds": 0.003313899040222168, + "simulationSeconds": 0.007398009300231934, + "tick": 214 + }, + { + "renderSeconds": 0.0033359527587890625, + "simulationSeconds": 0.00719904899597168, + "tick": 215 + }, + { + "renderSeconds": 0.0030579566955566406, + "simulationSeconds": 0.012960076332092285, + "tick": 217 + }, + { + "renderSeconds": 0.0032650232315063477, + "simulationSeconds": 0.012938976287841797, + "tick": 219 + }, + { + "renderSeconds": 0.002870917320251465, + "simulationSeconds": 0.013313055038452148, + "tick": 221 + }, + { + "renderSeconds": 0.0029529333114624023, + "simulationSeconds": 0.006626009941101074, + "tick": 222 + }, + { + "renderSeconds": 0.003504037857055664, + "simulationSeconds": 0.006873011589050293, + "tick": 223 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.013957023620605469, + "tick": 225 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.014312028884887695, + "tick": 227 + }, + { + "renderSeconds": 0.0042650699615478516, + "simulationSeconds": 9.5367431640625e-07, + "tick": 227 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.008612990379333496, + "tick": 228 + }, + { + "renderSeconds": 0.0031200647354125977, + "simulationSeconds": 0.009329080581665039, + "tick": 229 + }, + { + "renderSeconds": 0.00618898868560791, + "simulationSeconds": 0.022575974464416504, + "tick": 232 + }, + { + "renderSeconds": 0.0026820898056030273, + "simulationSeconds": 0.013983011245727539, + "tick": 234 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.013265013694763184, + "tick": 236 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.006376981735229492, + "tick": 237 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.0070149898529052734, + "tick": 238 + }, + { + "renderSeconds": 0.003381013870239258, + "simulationSeconds": 0.013739943504333496, + "tick": 240 + }, + { + "renderSeconds": 0.0025609731674194336, + "simulationSeconds": 0.013383030891418457, + "tick": 242 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.012945055961608887, + "tick": 244 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.006338000297546387, + "tick": 245 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.014057040214538574, + "tick": 247 + }, + { + "renderSeconds": 0.0029789209365844727, + "simulationSeconds": 0.006996035575866699, + "tick": 248 + }, + { + "renderSeconds": 0.0032329559326171875, + "simulationSeconds": 0.007801055908203125, + "tick": 249 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.006585955619812012, + "tick": 250 + }, + { + "renderSeconds": 0.0028868913650512695, + "simulationSeconds": 0.0070040225982666016, + "tick": 251 + }, + { + "renderSeconds": 0.003260970115661621, + "simulationSeconds": 0.00636601448059082, + "tick": 252 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006534934043884277, + "tick": 253 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.01335608959197998, + "tick": 255 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0, + "tick": 255 + }, + { + "renderSeconds": 0.0026720762252807617, + "simulationSeconds": 0.006433963775634766, + "tick": 256 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.006450057029724121, + "tick": 257 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.006466984748840332, + "tick": 258 + }, + { + "renderSeconds": 0.0032041072845458984, + "simulationSeconds": 0.007248997688293457, + "tick": 259 + }, + { + "renderSeconds": 0.0030579566955566406, + "simulationSeconds": 0.007736921310424805, + "tick": 260 + }, + { + "renderSeconds": 0.0036569833755493164, + "simulationSeconds": 0.01574099063873291, + "tick": 262 + }, + { + "renderSeconds": 0.003993988037109375, + "simulationSeconds": 0.018754005432128906, + "tick": 264 + }, + { + "renderSeconds": 0.003997087478637695, + "simulationSeconds": 0.01488196849822998, + "tick": 266 + }, + { + "renderSeconds": 0.0030019283294677734, + "simulationSeconds": 0.007841944694519043, + "tick": 267 + }, + { + "renderSeconds": 0.0035409927368164062, + "simulationSeconds": 0.006924986839294434, + "tick": 268 + }, + { + "renderSeconds": 0.00811302661895752, + "simulationSeconds": 0.013192892074584961, + "tick": 270 + }, + { + "renderSeconds": 0.00301206111907959, + "simulationSeconds": 0.006279945373535156, + "tick": 271 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.007239937782287598, + "tick": 272 + }, + { + "renderSeconds": 0.00280606746673584, + "simulationSeconds": 0.0065460205078125, + "tick": 273 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.009518980979919434, + "tick": 274 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.0068711042404174805, + "tick": 275 + }, + { + "renderSeconds": 0.0036820173263549805, + "simulationSeconds": 0.015148043632507324, + "tick": 277 + }, + { + "renderSeconds": 0.003144979476928711, + "simulationSeconds": 0.014361977577209473, + "tick": 279 + }, + { + "renderSeconds": 0.003229975700378418, + "simulationSeconds": 0.007366061210632324, + "tick": 280 + }, + { + "renderSeconds": 0.004426002502441406, + "simulationSeconds": 0.008008956909179688, + "tick": 281 + }, + { + "renderSeconds": 0.0035930871963500977, + "simulationSeconds": 0.023398995399475098, + "tick": 284 + }, + { + "renderSeconds": 0.0031049251556396484, + "simulationSeconds": 0.0133819580078125, + "tick": 286 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.013213038444519043, + "tick": 288 + }, + { + "renderSeconds": 0.0028688907623291016, + "simulationSeconds": 0.0062340497970581055, + "tick": 289 + }, + { + "renderSeconds": 0.0026268959045410156, + "simulationSeconds": 0.0064280033111572266, + "tick": 290 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.013012051582336426, + "tick": 292 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0, + "tick": 292 + }, + { + "renderSeconds": 0.0036520957946777344, + "simulationSeconds": 0.007670998573303223, + "tick": 293 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.006595015525817871, + "tick": 294 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.0064580440521240234, + "tick": 295 + }, + { + "renderSeconds": 0.0024930238723754883, + "simulationSeconds": 0.006448984146118164, + "tick": 296 + }, + { + "renderSeconds": 0.0031270980834960938, + "simulationSeconds": 0.006155967712402344, + "tick": 297 + }, + { + "renderSeconds": 0.0029680728912353516, + "simulationSeconds": 0.006393074989318848, + "tick": 298 + }, + { + "renderSeconds": 0.0029560327529907227, + "simulationSeconds": 0.012796998023986816, + "tick": 300 + }, + { + "renderSeconds": 0.003348112106323242, + "simulationSeconds": 0, + "tick": 300 + }, + { + "renderSeconds": 0.0037059783935546875, + "simulationSeconds": 0.008393049240112305, + "tick": 301 + }, + { + "renderSeconds": 0.0036710500717163086, + "simulationSeconds": 0.008795976638793945, + "tick": 302 + }, + { + "renderSeconds": 0.0037889480590820312, + "simulationSeconds": 0.008428096771240234, + "tick": 303 + }, + { + "renderSeconds": 0.003842949867248535, + "simulationSeconds": 0.02804100513458252, + "tick": 306 + }, + { + "renderSeconds": 0.003735065460205078, + "simulationSeconds": 0.01627492904663086, + "tick": 308 + }, + { + "renderSeconds": 0.0033489465713500977, + "simulationSeconds": 0.006846070289611816, + "tick": 309 + }, + { + "renderSeconds": 0.0034459829330444336, + "simulationSeconds": 0.00692296028137207, + "tick": 310 + }, + { + "renderSeconds": 0.0033239126205444336, + "simulationSeconds": 0.007097959518432617, + "tick": 311 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.013722062110900879, + "tick": 313 + }, + { + "renderSeconds": 0.003592967987060547, + "simulationSeconds": 0.01373600959777832, + "tick": 315 + }, + { + "renderSeconds": 0.003171086311340332, + "simulationSeconds": 0.014119982719421387, + "tick": 317 + }, + { + "renderSeconds": 0.0029860734939575195, + "simulationSeconds": 0.012277007102966309, + "tick": 319 + }, + { + "renderSeconds": 0.0029261112213134766, + "simulationSeconds": 0.006447911262512207, + "tick": 320 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.012971043586730957, + "tick": 322 + }, + { + "renderSeconds": 0.0024989843368530273, + "simulationSeconds": 9.5367431640625e-07, + "tick": 322 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.006151080131530762, + "tick": 323 + }, + { + "renderSeconds": 0.0026960372924804688, + "simulationSeconds": 0.006569981575012207, + "tick": 324 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.005633950233459473, + "tick": 325 + }, + { + "renderSeconds": 0.002618074417114258, + "simulationSeconds": 0.0063550472259521484, + "tick": 326 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.006176948547363281, + "tick": 327 + }, + { + "renderSeconds": 0.003448009490966797, + "simulationSeconds": 0.007684111595153809, + "tick": 328 + }, + { + "renderSeconds": 0.003267049789428711, + "simulationSeconds": 0.01449894905090332, + "tick": 330 + }, + { + "renderSeconds": 0.003381967544555664, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 330 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.008878946304321289, + "tick": 331 + }, + { + "renderSeconds": 0.0030961036682128906, + "simulationSeconds": 0.007995963096618652, + "tick": 332 + }, + { + "renderSeconds": 0.003206014633178711, + "simulationSeconds": 0.007556915283203125, + "tick": 333 + }, + { + "renderSeconds": 0.0035970211029052734, + "simulationSeconds": 0.01702094078063965, + "tick": 335 + }, + { + "renderSeconds": 0.003879070281982422, + "simulationSeconds": 0.017946958541870117, + "tick": 337 + }, + { + "renderSeconds": 0.0037320852279663086, + "simulationSeconds": 0.01855599880218506, + "tick": 339 + }, + { + "renderSeconds": 0.0032079219818115234, + "simulationSeconds": 0.01446390151977539, + "tick": 341 + }, + { + "renderSeconds": 0.0028499364852905273, + "simulationSeconds": 0.006608009338378906, + "tick": 342 + }, + { + "renderSeconds": 0.0034279823303222656, + "simulationSeconds": 0.007043957710266113, + "tick": 343 + }, + { + "renderSeconds": 0.002557039260864258, + "simulationSeconds": 0.013334035873413086, + "tick": 345 + }, + { + "renderSeconds": 0.002981901168823242, + "simulationSeconds": 0.006685018539428711, + "tick": 346 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0.006667971611022949, + "tick": 347 + }, + { + "renderSeconds": 0.0026929378509521484, + "simulationSeconds": 0.006363034248352051, + "tick": 348 + }, + { + "renderSeconds": 0.0023990869522094727, + "simulationSeconds": 0.006318926811218262, + "tick": 349 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.00657200813293457, + "tick": 350 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.014142990112304688, + "tick": 352 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0, + "tick": 352 + }, + { + "renderSeconds": 0.00351107120513916, + "simulationSeconds": 0.009337067604064941, + "tick": 353 + }, + { + "renderSeconds": 0.0036870241165161133, + "simulationSeconds": 0.00890195369720459, + "tick": 354 + }, + { + "renderSeconds": 0.004727959632873535, + "simulationSeconds": 0.011929035186767578, + "tick": 355 + }, + { + "renderSeconds": 0.0037239789962768555, + "simulationSeconds": 0.025790095329284668, + "tick": 358 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.01916801929473877, + "tick": 361 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.012936949729919434, + "tick": 363 + }, + { + "renderSeconds": 0.003320932388305664, + "simulationSeconds": 0.006886005401611328, + "tick": 364 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0.006834983825683594, + "tick": 365 + }, + { + "renderSeconds": 0.002444028854370117, + "simulationSeconds": 0.013409018516540527, + "tick": 367 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0, + "tick": 367 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 0.006197929382324219, + "tick": 368 + }, + { + "renderSeconds": 0.003258943557739258, + "simulationSeconds": 0.007100939750671387, + "tick": 369 + }, + { + "renderSeconds": 0.004055976867675781, + "simulationSeconds": 0.006461024284362793, + "tick": 370 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.007366061210632324, + "tick": 371 + }, + { + "renderSeconds": 0.0030950307846069336, + "simulationSeconds": 0.007420063018798828, + "tick": 372 + }, + { + "renderSeconds": 0.003721952438354492, + "simulationSeconds": 0.009222030639648438, + "tick": 373 + }, + { + "renderSeconds": 0.0035959482192993164, + "simulationSeconds": 0.019237995147705078, + "tick": 375 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.016003966331481934, + "tick": 377 + }, + { + "renderSeconds": 0.0032690763473510742, + "simulationSeconds": 0.0076999664306640625, + "tick": 378 + }, + { + "renderSeconds": 0.0031729936599731445, + "simulationSeconds": 0.013463020324707031, + "tick": 380 + }, + { + "renderSeconds": 0.002880096435546875, + "simulationSeconds": 0.013281941413879395, + "tick": 382 + }, + { + "renderSeconds": 0.0022450685501098633, + "simulationSeconds": 0.013531923294067383, + "tick": 384 + }, + { + "renderSeconds": 0.0029069185256958008, + "simulationSeconds": 0, + "tick": 384 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.006327033042907715, + "tick": 385 + }, + { + "renderSeconds": 0.0030279159545898438, + "simulationSeconds": 0.0065729618072509766, + "tick": 386 + }, + { + "renderSeconds": 0.0028679370880126953, + "simulationSeconds": 0.006018996238708496, + "tick": 387 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0.006981015205383301, + "tick": 388 + }, + { + "renderSeconds": 0.0029349327087402344, + "simulationSeconds": 0.01424098014831543, + "tick": 390 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0, + "tick": 390 + }, + { + "renderSeconds": 0.0037659406661987305, + "simulationSeconds": 0.008183956146240234, + "tick": 391 + }, + { + "renderSeconds": 0.0036818981170654297, + "simulationSeconds": 0.00860607624053955, + "tick": 392 + }, + { + "renderSeconds": 0.003715038299560547, + "simulationSeconds": 0.009072065353393555, + "tick": 393 + }, + { + "renderSeconds": 0.0034869909286499023, + "simulationSeconds": 0.01711595058441162, + "tick": 395 + }, + { + "renderSeconds": 0.0034880638122558594, + "simulationSeconds": 0.014310956001281738, + "tick": 397 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.012565970420837402, + "tick": 399 + }, + { + "renderSeconds": 0.0032989978790283203, + "simulationSeconds": 0.007171988487243652, + "tick": 400 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.006733059883117676, + "tick": 401 + }, + { + "renderSeconds": 0.002601027488708496, + "simulationSeconds": 0.006247997283935547, + "tick": 402 + }, + { + "renderSeconds": 0.003236055374145508, + "simulationSeconds": 0.006307005882263184, + "tick": 403 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0.012516021728515625, + "tick": 405 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 405 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.006739974021911621, + "tick": 406 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.006235957145690918, + "tick": 407 + }, + { + "renderSeconds": 0.0028829574584960938, + "simulationSeconds": 0.006057024002075195, + "tick": 408 + }, + { + "renderSeconds": 0.003314971923828125, + "simulationSeconds": 0.006487011909484863, + "tick": 409 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.006356000900268555, + "tick": 410 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.013875007629394531, + "tick": 412 + }, + { + "renderSeconds": 0.003556966781616211, + "simulationSeconds": 0, + "tick": 412 + }, + { + "renderSeconds": 0.003368973731994629, + "simulationSeconds": 0.007822036743164062, + "tick": 413 + }, + { + "renderSeconds": 0.003607034683227539, + "simulationSeconds": 0.007776021957397461, + "tick": 414 + }, + { + "renderSeconds": 0.003072977066040039, + "simulationSeconds": 0.007059931755065918, + "tick": 415 + }, + { + "renderSeconds": 0.0038290023803710938, + "simulationSeconds": 0.007722973823547363, + "tick": 416 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.0074340105056762695, + "tick": 417 + }, + { + "renderSeconds": 0.0026880502700805664, + "simulationSeconds": 0.020537972450256348, + "tick": 420 + }, + { + "renderSeconds": 0.0036150217056274414, + "simulationSeconds": 0.006794929504394531, + "tick": 421 + }, + { + "renderSeconds": 0.0032569169998168945, + "simulationSeconds": 0.006499052047729492, + "tick": 422 + }, + { + "renderSeconds": 0.0032290220260620117, + "simulationSeconds": 0.0063359737396240234, + "tick": 423 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0.006150007247924805, + "tick": 424 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.006819963455200195, + "tick": 425 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0.012655019760131836, + "tick": 427 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0, + "tick": 427 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0.006883978843688965, + "tick": 428 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.008851051330566406, + "tick": 429 + }, + { + "renderSeconds": 0.0038509368896484375, + "simulationSeconds": 0.007812976837158203, + "tick": 430 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.007084012031555176, + "tick": 431 + }, + { + "renderSeconds": 0.0034079551696777344, + "simulationSeconds": 0.00769805908203125, + "tick": 432 + }, + { + "renderSeconds": 0.003014087677001953, + "simulationSeconds": 0.0069779157638549805, + "tick": 433 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.01408088207244873, + "tick": 435 + }, + { + "renderSeconds": 0.0031789541244506836, + "simulationSeconds": 0.013679027557373047, + "tick": 437 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.012744903564453125, + "tick": 439 + }, + { + "renderSeconds": 0.0032749176025390625, + "simulationSeconds": 0.006306052207946777, + "tick": 440 + }, + { + "renderSeconds": 0.0022330284118652344, + "simulationSeconds": 0.012104034423828125, + "tick": 442 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0, + "tick": 442 + }, + { + "renderSeconds": 0.0029479265213012695, + "simulationSeconds": 0.0059850215911865234, + "tick": 443 + }, + { + "renderSeconds": 0.0030690431594848633, + "simulationSeconds": 0.006300926208496094, + "tick": 444 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.006421089172363281, + "tick": 445 + }, + { + "renderSeconds": 0.0024880170822143555, + "simulationSeconds": 0.005980014801025391, + "tick": 446 + }, + { + "renderSeconds": 0.0029450654983520508, + "simulationSeconds": 0.006303906440734863, + "tick": 447 + }, + { + "renderSeconds": 0.0035610198974609375, + "simulationSeconds": 0.007411003112792969, + "tick": 448 + }, + { + "renderSeconds": 0.00303494930267334, + "simulationSeconds": 0.014608979225158691, + "tick": 450 + }, + { + "renderSeconds": 0.003419041633605957, + "simulationSeconds": 9.5367431640625e-07, + "tick": 450 + }, + { + "renderSeconds": 0.003114938735961914, + "simulationSeconds": 0.008665084838867188, + "tick": 451 + }, + { + "renderSeconds": 0.003775954246520996, + "simulationSeconds": 0.008180022239685059, + "tick": 452 + }, + { + "renderSeconds": 0.003171086311340332, + "simulationSeconds": 0.007255911827087402, + "tick": 453 + }, + { + "renderSeconds": 0.003229975700378418, + "simulationSeconds": 0.0071190595626831055, + "tick": 454 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.007192015647888184, + "tick": 455 + }, + { + "renderSeconds": 0.0029660463333129883, + "simulationSeconds": 0.014364957809448242, + "tick": 457 + }, + { + "renderSeconds": 0.0023419857025146484, + "simulationSeconds": 0.013601064682006836, + "tick": 459 + }, + { + "renderSeconds": 0.00238192081451416, + "simulationSeconds": 0.011482000350952148, + "tick": 461 + }, + { + "renderSeconds": 0.002635955810546875, + "simulationSeconds": 0.005338072776794434, + "tick": 462 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.0056149959564208984, + "tick": 463 + }, + { + "renderSeconds": 0.0026320219039916992, + "simulationSeconds": 0.011192083358764648, + "tick": 465 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0, + "tick": 465 + }, + { + "renderSeconds": 0.0020679235458374023, + "simulationSeconds": 0.006023049354553223, + "tick": 466 + }, + { + "renderSeconds": 0.0025229454040527344, + "simulationSeconds": 0.006031990051269531, + "tick": 467 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.005913972854614258, + "tick": 468 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.005764007568359375, + "tick": 469 + }, + { + "renderSeconds": 0.003473043441772461, + "simulationSeconds": 0.00698399543762207, + "tick": 470 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.012916922569274902, + "tick": 472 + }, + { + "renderSeconds": 0.0035860538482666016, + "simulationSeconds": 0, + "tick": 472 + }, + { + "renderSeconds": 0.004492044448852539, + "simulationSeconds": 0.008573055267333984, + "tick": 473 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.007827997207641602, + "tick": 474 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0.006781101226806641, + "tick": 475 + }, + { + "renderSeconds": 0.0033500194549560547, + "simulationSeconds": 0.0067549943923950195, + "tick": 476 + }, + { + "renderSeconds": 0.0035239458084106445, + "simulationSeconds": 0.007079958915710449, + "tick": 477 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.006739020347595215, + "tick": 478 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0.014574050903320312, + "tick": 480 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0.005818009376525879, + "tick": 481 + }, + { + "renderSeconds": 0.0031280517578125, + "simulationSeconds": 0.006716012954711914, + "tick": 482 + }, + { + "renderSeconds": 0.002599954605102539, + "simulationSeconds": 0.005788922309875488, + "tick": 483 + }, + { + "renderSeconds": 0.0024280548095703125, + "simulationSeconds": 0.005964994430541992, + "tick": 484 + }, + { + "renderSeconds": 0.0023020505905151367, + "simulationSeconds": 0.0057659149169921875, + "tick": 485 + }, + { + "renderSeconds": 0.0023130178451538086, + "simulationSeconds": 0.011327981948852539, + "tick": 487 + }, + { + "renderSeconds": 0.002462029457092285, + "simulationSeconds": 0, + "tick": 487 + }, + { + "renderSeconds": 0.002507925033569336, + "simulationSeconds": 0.00592195987701416, + "tick": 488 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.006358027458190918, + "tick": 489 + }, + { + "renderSeconds": 0.002344965934753418, + "simulationSeconds": 0.006807088851928711, + "tick": 490 + }, + { + "renderSeconds": 0.00268709659576416, + "simulationSeconds": 0.0071059465408325195, + "tick": 491 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.007899045944213867, + "tick": 492 + }, + { + "renderSeconds": 0.0032750368118286133, + "simulationSeconds": 0.007224917411804199, + "tick": 493 + }, + { + "renderSeconds": 0.002982020378112793, + "simulationSeconds": 0.01619410514831543, + "tick": 495 + }, + { + "renderSeconds": 0.003122091293334961, + "simulationSeconds": 0, + "tick": 495 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0.007807016372680664, + "tick": 496 + }, + { + "renderSeconds": 0.0028499364852905273, + "simulationSeconds": 0.007403969764709473, + "tick": 497 + }, + { + "renderSeconds": 0.003155946731567383, + "simulationSeconds": 0.007068037986755371, + "tick": 498 + }, + { + "renderSeconds": 0.0029469728469848633, + "simulationSeconds": 0.007215023040771484, + "tick": 499 + }, + { + "renderSeconds": 0.003195047378540039, + "simulationSeconds": 0.006976008415222168, + "tick": 500 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.01388704776763916, + "tick": 502 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0, + "tick": 502 + }, + { + "renderSeconds": 0.0042220354080200195, + "simulationSeconds": 0.009327054023742676, + "tick": 503 + }, + { + "renderSeconds": 0.003442049026489258, + "simulationSeconds": 0.007174968719482422, + "tick": 504 + }, + { + "renderSeconds": 0.0030040740966796875, + "simulationSeconds": 0.007256984710693359, + "tick": 505 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.006898045539855957, + "tick": 506 + }, + { + "renderSeconds": 0.0029889345169067383, + "simulationSeconds": 0.007128000259399414, + "tick": 507 + }, + { + "renderSeconds": 0.003403902053833008, + "simulationSeconds": 0.00820302963256836, + "tick": 508 + }, + { + "renderSeconds": 0.0031839609146118164, + "simulationSeconds": 0.0167388916015625, + "tick": 510 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.030731791688594967, + "moveTicks": 480, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 788, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.4570683240890503, + "preparationSeconds": 0.5498789548873901, + "reducedMotion": true, + "renderSeconds": 1.324123501777649, + "repetition": 21, + "scenePreparationSeconds": 0.20372307300567627, + "simulationSeconds": 3.5978788137435913, + "snapshotBuildCount": 427, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 37.836166680790484, + "callbackMaxMS": 51.731958345044404, + "postActionRecords": 425, + "run": "BP008-stage-4-rep-21-axis-8191-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.25589537620544434, + "distancePhaseComparison": false, + "frameCosts": [ + { + "renderSeconds": 0.0008749961853027344, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009660720825195312, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008699893951416016, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010700225830078125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0033379793167114258, + "simulationSeconds": 0.006090044975280762, + "tick": 1 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.006036996841430664, + "tick": 2 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.0068579912185668945, + "tick": 3 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.00684201717376709, + "tick": 4 + }, + { + "renderSeconds": 0.004387021064758301, + "simulationSeconds": 0.018056035041809082, + "tick": 6 + }, + { + "renderSeconds": 0.0045490264892578125, + "simulationSeconds": 0.023022055625915527, + "tick": 8 + }, + { + "renderSeconds": 0.003804922103881836, + "simulationSeconds": 0.016576051712036133, + "tick": 10 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.006976962089538574, + "tick": 11 + }, + { + "renderSeconds": 0.002460002899169922, + "simulationSeconds": 0.01867806911468506, + "tick": 14 + }, + { + "renderSeconds": 0.0035490989685058594, + "simulationSeconds": 0.006688952445983887, + "tick": 15 + }, + { + "renderSeconds": 0.0029349327087402344, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.006520986557006836, + "tick": 16 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.0059299468994140625, + "tick": 17 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.006327986717224121, + "tick": 18 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006199002265930176, + "tick": 19 + }, + { + "renderSeconds": 0.0024689435958862305, + "simulationSeconds": 0.01225900650024414, + "tick": 21 + }, + { + "renderSeconds": 0.002557039260864258, + "simulationSeconds": 0.006111025810241699, + "tick": 22 + }, + { + "renderSeconds": 0.0034139156341552734, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0032089948654174805, + "simulationSeconds": 0.007779955863952637, + "tick": 23 + }, + { + "renderSeconds": 0.0033119916915893555, + "simulationSeconds": 0.007617950439453125, + "tick": 24 + }, + { + "renderSeconds": 0.0031899213790893555, + "simulationSeconds": 0.0073070526123046875, + "tick": 25 + }, + { + "renderSeconds": 0.0033010244369506836, + "simulationSeconds": 0.007004976272583008, + "tick": 26 + }, + { + "renderSeconds": 0.0029369592666625977, + "simulationSeconds": 0.007140040397644043, + "tick": 27 + }, + { + "renderSeconds": 0.0032999515533447266, + "simulationSeconds": 0.015516996383666992, + "tick": 29 + }, + { + "renderSeconds": 0.0034990310668945312, + "simulationSeconds": 0.014631986618041992, + "tick": 31 + }, + { + "renderSeconds": 0.003291010856628418, + "simulationSeconds": 0, + "tick": 31 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.0067179203033447266, + "tick": 32 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.006510019302368164, + "tick": 33 + }, + { + "renderSeconds": 0.003319978713989258, + "simulationSeconds": 0.006322026252746582, + "tick": 34 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0.014499902725219727, + "tick": 36 + }, + { + "renderSeconds": 0.003195047378540039, + "simulationSeconds": 0.007256031036376953, + "tick": 37 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 9.5367431640625e-07, + "tick": 37 + }, + { + "renderSeconds": 0.0036230087280273438, + "simulationSeconds": 0.007501006126403809, + "tick": 38 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.0073059797286987305, + "tick": 39 + }, + { + "renderSeconds": 0.003188014030456543, + "simulationSeconds": 0.007124066352844238, + "tick": 40 + }, + { + "renderSeconds": 0.0032459497451782227, + "simulationSeconds": 0.007502913475036621, + "tick": 41 + }, + { + "renderSeconds": 0.003217935562133789, + "simulationSeconds": 0.0072290897369384766, + "tick": 42 + }, + { + "renderSeconds": 0.003491044044494629, + "simulationSeconds": 0.017077922821044922, + "tick": 44 + }, + { + "renderSeconds": 0.0033930540084838867, + "simulationSeconds": 0.011747002601623535, + "tick": 45 + }, + { + "renderSeconds": 0.003412961959838867, + "simulationSeconds": 0.007203936576843262, + "tick": 46 + }, + { + "renderSeconds": 0.0032540559768676758, + "simulationSeconds": 0.007706046104431152, + "tick": 47 + }, + { + "renderSeconds": 0.0037529468536376953, + "simulationSeconds": 0.009250044822692871, + "tick": 48 + }, + { + "renderSeconds": 0.0024930238723754883, + "simulationSeconds": 0.006296992301940918, + "tick": 49 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.01299595832824707, + "tick": 51 + }, + { + "renderSeconds": 0.002834916114807129, + "simulationSeconds": 0.00639498233795166, + "tick": 52 + }, + { + "renderSeconds": 0.0030710697174072266, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.002933025360107422, + "simulationSeconds": 0.007771015167236328, + "tick": 53 + }, + { + "renderSeconds": 0.003146052360534668, + "simulationSeconds": 0.007302999496459961, + "tick": 54 + }, + { + "renderSeconds": 0.0032351016998291016, + "simulationSeconds": 0.007385969161987305, + "tick": 55 + }, + { + "renderSeconds": 0.004106998443603516, + "simulationSeconds": 0.0072460174560546875, + "tick": 56 + }, + { + "renderSeconds": 0.003047943115234375, + "simulationSeconds": 0.007477998733520508, + "tick": 57 + }, + { + "renderSeconds": 0.003243088722229004, + "simulationSeconds": 0.015468001365661621, + "tick": 59 + }, + { + "renderSeconds": 0.003032088279724121, + "simulationSeconds": 0.007496953010559082, + "tick": 60 + }, + { + "renderSeconds": 0.0037010908126831055, + "simulationSeconds": 9.5367431640625e-07, + "tick": 60 + }, + { + "renderSeconds": 0.0030651092529296875, + "simulationSeconds": 0.00837099552154541, + "tick": 61 + }, + { + "renderSeconds": 0.0033429861068725586, + "simulationSeconds": 0.007510066032409668, + "tick": 62 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.006376981735229492, + "tick": 63 + }, + { + "renderSeconds": 0.0031599998474121094, + "simulationSeconds": 0.0063010454177856445, + "tick": 64 + }, + { + "renderSeconds": 0.0026750564575195312, + "simulationSeconds": 0.012133002281188965, + "tick": 66 + }, + { + "renderSeconds": 0.0034630298614501953, + "simulationSeconds": 0.006259918212890625, + "tick": 67 + }, + { + "renderSeconds": 0.0027360916137695312, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.002790093421936035, + "simulationSeconds": 0.007992029190063477, + "tick": 68 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.006863951683044434, + "tick": 69 + }, + { + "renderSeconds": 0.002623915672302246, + "simulationSeconds": 0.005939006805419922, + "tick": 70 + }, + { + "renderSeconds": 0.00251007080078125, + "simulationSeconds": 0.006413936614990234, + "tick": 71 + }, + { + "renderSeconds": 0.0025649070739746094, + "simulationSeconds": 0.0065490007400512695, + "tick": 72 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.01432502269744873, + "tick": 74 + }, + { + "renderSeconds": 0.0034259557723999023, + "simulationSeconds": 0.008494019508361816, + "tick": 75 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.003489971160888672, + "simulationSeconds": 0.006540060043334961, + "tick": 76 + }, + { + "renderSeconds": 0.0030279159545898438, + "simulationSeconds": 0.007409930229187012, + "tick": 77 + }, + { + "renderSeconds": 0.0030249357223510742, + "simulationSeconds": 0.007469892501831055, + "tick": 78 + }, + { + "renderSeconds": 0.0033140182495117188, + "simulationSeconds": 0.007474064826965332, + "tick": 79 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.01400601863861084, + "tick": 81 + }, + { + "renderSeconds": 0.0032989978790283203, + "simulationSeconds": 0.007747054100036621, + "tick": 82 + }, + { + "renderSeconds": 0.00347900390625, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.003545999526977539, + "simulationSeconds": 0.008322954177856445, + "tick": 83 + }, + { + "renderSeconds": 0.0042150020599365234, + "simulationSeconds": 0.007948040962219238, + "tick": 84 + }, + { + "renderSeconds": 0.0025930404663085938, + "simulationSeconds": 0.0066879987716674805, + "tick": 85 + }, + { + "renderSeconds": 0.0032590627670288086, + "simulationSeconds": 0.006659984588623047, + "tick": 86 + }, + { + "renderSeconds": 0.0029450654983520508, + "simulationSeconds": 0.0071909427642822266, + "tick": 87 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.014487981796264648, + "tick": 89 + }, + { + "renderSeconds": 0.0031599998474121094, + "simulationSeconds": 0.015118002891540527, + "tick": 91 + }, + { + "renderSeconds": 0.002662062644958496, + "simulationSeconds": 0.012987971305847168, + "tick": 93 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0.006639003753662109, + "tick": 94 + }, + { + "renderSeconds": 0.0025670528411865234, + "simulationSeconds": 0.013116002082824707, + "tick": 96 + }, + { + "renderSeconds": 0.0026619434356689453, + "simulationSeconds": 0.006644010543823242, + "tick": 97 + }, + { + "renderSeconds": 0.0025899410247802734, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.006736040115356445, + "tick": 98 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.006759047508239746, + "tick": 99 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.007114052772521973, + "tick": 100 + }, + { + "renderSeconds": 0.0033680200576782227, + "simulationSeconds": 0.008489012718200684, + "tick": 101 + }, + { + "renderSeconds": 0.0027570724487304688, + "simulationSeconds": 0.006636977195739746, + "tick": 102 + }, + { + "renderSeconds": 0.002556920051574707, + "simulationSeconds": 0.013555049896240234, + "tick": 104 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.006408095359802246, + "tick": 105 + }, + { + "renderSeconds": 0.0035599470138549805, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.0072820186614990234, + "tick": 106 + }, + { + "renderSeconds": 0.003538966178894043, + "simulationSeconds": 0.007868051528930664, + "tick": 107 + }, + { + "renderSeconds": 0.0033130645751953125, + "simulationSeconds": 0.007750988006591797, + "tick": 108 + }, + { + "renderSeconds": 0.0029380321502685547, + "simulationSeconds": 0.007883071899414062, + "tick": 109 + }, + { + "renderSeconds": 0.0038160085678100586, + "simulationSeconds": 0.015325069427490234, + "tick": 111 + }, + { + "renderSeconds": 0.00371396541595459, + "simulationSeconds": 0.008785009384155273, + "tick": 112 + }, + { + "renderSeconds": 0.0032540559768676758, + "simulationSeconds": 0.009217023849487305, + "tick": 113 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0.007152080535888672, + "tick": 114 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.007696986198425293, + "tick": 115 + }, + { + "renderSeconds": 0.0037039518356323242, + "simulationSeconds": 0.007830023765563965, + "tick": 116 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.0073729753494262695, + "tick": 117 + }, + { + "renderSeconds": 0.0030580759048461914, + "simulationSeconds": 0.017207026481628418, + "tick": 119 + }, + { + "renderSeconds": 0.0031321048736572266, + "simulationSeconds": 0.015197992324829102, + "tick": 121 + }, + { + "renderSeconds": 0.003449082374572754, + "simulationSeconds": 0.00736689567565918, + "tick": 122 + }, + { + "renderSeconds": 0.003392934799194336, + "simulationSeconds": 0.007526040077209473, + "tick": 123 + }, + { + "renderSeconds": 0.003086090087890625, + "simulationSeconds": 0.007419943809509277, + "tick": 124 + }, + { + "renderSeconds": 0.002382993698120117, + "simulationSeconds": 0.01226806640625, + "tick": 126 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.006273031234741211, + "tick": 127 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.0061980485916137695, + "tick": 128 + }, + { + "renderSeconds": 0.0024640560150146484, + "simulationSeconds": 0.006673097610473633, + "tick": 129 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.006875038146972656, + "tick": 130 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.007596015930175781, + "tick": 131 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.006979107856750488, + "tick": 132 + }, + { + "renderSeconds": 0.003909945487976074, + "simulationSeconds": 0.016548991203308105, + "tick": 134 + }, + { + "renderSeconds": 0.003994941711425781, + "simulationSeconds": 0.009171009063720703, + "tick": 135 + }, + { + "renderSeconds": 0.0029959678649902344, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.007164955139160156, + "tick": 136 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.007059931755065918, + "tick": 137 + }, + { + "renderSeconds": 0.0033529996871948242, + "simulationSeconds": 0.008160948753356934, + "tick": 138 + }, + { + "renderSeconds": 0.00285494327545166, + "simulationSeconds": 0.0076760053634643555, + "tick": 139 + }, + { + "renderSeconds": 0.003314971923828125, + "simulationSeconds": 0.0168229341506958, + "tick": 141 + }, + { + "renderSeconds": 0.0028810501098632812, + "simulationSeconds": 0.006685018539428711, + "tick": 142 + }, + { + "renderSeconds": 0.004338979721069336, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.008790969848632812, + "tick": 143 + }, + { + "renderSeconds": 0.0035370588302612305, + "simulationSeconds": 0.008726000785827637, + "tick": 144 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.006914019584655762, + "tick": 145 + }, + { + "renderSeconds": 0.003531932830810547, + "simulationSeconds": 0.008691906929016113, + "tick": 146 + }, + { + "renderSeconds": 0.003202080726623535, + "simulationSeconds": 0.006705045700073242, + "tick": 147 + }, + { + "renderSeconds": 0.0033469200134277344, + "simulationSeconds": 0.013459920883178711, + "tick": 149 + }, + { + "renderSeconds": 0.0029050111770629883, + "simulationSeconds": 0.007557988166809082, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.02975541667547077, + "moveTicks": 120, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 216, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006644129753112793, + "preparationSeconds": 0.5585730075836182, + "reducedMotion": true, + "renderSeconds": 0.43253254890441895, + "repetition": 3, + "scenePreparationSeconds": 0.211387038230896, + "simulationSeconds": 1.1005231142044067, + "snapshotBuildCount": 141, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333335467614, + "callbackMaxMS": 39.55104167107493, + "postActionRecords": 139, + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics" + } +] diff --git a/docs/review/cadence-recorded-review/retiming-verification.json b/docs/review/cadence-recorded-review/retiming-verification.json new file mode 100644 index 00000000..79132bfb --- /dev/null +++ b/docs/review/cadence-recorded-review/retiming-verification.json @@ -0,0 +1,26 @@ +{ + "pairs": [ + { + "input": "full-input", + "capturedFrames": 153, + "maxTimestampScalingErrorSeconds": 1.000000000139778e-06, + "normalLastFrameTime": 1.335, + "quarterLastFrameTime": 5.34 + }, + { + "input": "half-input", + "capturedFrames": 335, + "maxTimestampScalingErrorSeconds": 1.0000000010279564e-06, + "normalLastFrameTime": 3.27, + "quarterLastFrameTime": 13.08 + }, + { + "input": "quarter-input", + "capturedFrames": 761, + "maxTimestampScalingErrorSeconds": 1.0000000010279564e-06, + "normalLastFrameTime": 7.288333, + "quarterLastFrameTime": 29.153333 + } + ], + "note": "Same captured-frame count; timestamps scaled by four. MP4 final-packet hold differs slightly; use interior cycles for seam review." +} diff --git a/docs/review/camera-clips/README.md b/docs/review/camera-clips/README.md new file mode 100644 index 00000000..93a06a03 --- /dev/null +++ b/docs/review/camera-clips/README.md @@ -0,0 +1,13 @@ +# BP-004 six camera clip source candidates + +Status: source preview; not runtime admission. Spec proposal ea35222 follows active BP-004 at 521aec3. Source comes from shared municipal camera structure e8193bd. + +All six existing clip IDs and 16 frame slots are exported with exact v1 frame order and duration fractions in clips.json. Operational:4/6s; hit:2/16s; critical-entry:3/12s; destruction:4/12s; field-off:1/12s; destroyed-idle:2/4s. No timing or production metadata changed. + +Source controls are in parameters.json; build.py regenerates PNGs and checks. All pixels outside the authored head mask remain identical to intact. Every non-operational clip terminates at the exact corresponding settled state. Destruction frames contain no cyan indicator pixels by the documented RGB predicate; this narrow pixel check is not an accessibility certification. Two destroyed-idle holds are deliberately identical. Operational repeats its intermediate indicator level to close the loop; unique hashes are not a quality criterion. + +index.html provides normal/quarter-speed playback, pause, frame advance, Reduced Motion settled preview and grayscale. Browser interaction verified clip selection, replay, reduced preview and grayscale. Contact sheet visually inspected: mount is stable, stage damage is readable in the large source, effects are restrained. Destruction fragments are subtle at native size and still require runtime judgment. These previews do not prove real SpriteKit timing, interruption, latest-integrity arbitration, field removal, encounter readability or performance. + +Research and authored choices are separated in design.md. Six clip source candidates are now available for the real-renderer review fixture. The game and its test-bundle assets remain unchanged. Full character, environment, benchmark composition and device gates remain open. No new app/core test run is claimed for this offline source change. + +Reproduce with Python 3 + Pillow: python3 build.py. Serve this directory or open index.html. Source/delivery hashes are in sha256.json. Original metadata and source images are retained under source/. diff --git a/docs/review/camera-clips/browser-review.png b/docs/review/camera-clips/browser-review.png new file mode 100644 index 00000000..296e839a Binary files /dev/null and b/docs/review/camera-clips/browser-review.png differ diff --git a/docs/review/camera-clips/build.py b/docs/review/camera-clips/build.py new file mode 100644 index 00000000..a05cc1fa --- /dev/null +++ b/docs/review/camera-clips/build.py @@ -0,0 +1,56 @@ +from pathlib import Path +from PIL import Image, ImageDraw, ImageChops +import json,hashlib +P=Path(__file__).resolve().parent +(P/'frames').mkdir(exist_ok=True) +source={s:Image.open(P/f'source/{s}.png').convert('RGBA') for s in ['intact','damaged','critical','destroyed']} +mask=Image.open(P/'source/head-mask.png').convert('L') +clips=[c for c in json.loads((P/'source/clip-metadata-001.json').read_text())['clips'] if c['clipId'].startswith('camera_')] +params=json.loads((P/'parameters.json').read_text()) +def material(im,factor,indicatorOnly=False): + out=im.copy();px=out.load();m=mask.load() + for y in range(384): + for x in range(256): + r,g,b,a=px[x,y] + if not m[x,y] or not a:continue + if indicatorOnly and not (g>r*1.5 and b>r*1.5 and g>70):continue + px[x,y]=(min(255,round(r*factor)),min(255,round(g*factor)),min(255,round(b*factor)),a) + return out +made={ + 'camera_operational_idle':[material(source['intact'],v,True) for v in params['idleIndicatorMultipliers']], + 'camera_hit':[material(source['damaged'],v) for v in params['hitHeadMultipliers']], + 'camera_critical_enter':[material(source['critical'],v) for v in params['criticalHeadMultipliers']], + 'camera_destroy':[], + 'camera_field_off':[source['destroyed'].copy()], + 'camera_destroyed_idle':[source['destroyed'].copy(),source['destroyed'].copy()]} +for off in params['destroyFragmentOffsets']: + im=source['destroyed'].copy() + if off is not None: + overlay=Image.new('RGBA',im.size);d=ImageDraw.Draw(overlay) + for x,y,r in params['fragments']:d.polygon([(x,y+off),(x+r,y+off+1),(x,y+off+r+2)],fill=tuple(params['fragmentRGB'])+(255,)) + overlay.putalpha(ImageChops.multiply(overlay.getchannel('A'),mask));im=Image.alpha_composite(im,overlay) + made['camera_destroy'].append(im) +rows=[];report=[];outside=ImageChops.invert(mask) +for c in clips: + frames=made[c['clipId']];assert len(frames)==len(c['frameIds']) + row=Image.new('RGB',(1024,424),'#30383b');d=ImageDraw.Draw(row);d.text((8,5),f"{c['clipId']} | {len(frames)}/{c['framesPerSecond']} s | {'loop' if c['loop'] else 'settles'}",fill='white') + names=[] + for n,(fid,im) in enumerate(zip(c['frameIds'],frames)): + difference=ImageChops.difference(im,source['intact']) + assert all(not any(p) or m==0 for p,m in zip(difference.getdata(),outside.getdata())) + name=f'frames/{fid}@4x.png';im.save(P/name);names.append(name) + row.paste(im,(n*256,25),im) + d.text((n*256+8,405),str(n+1),fill='white') + # Verify truthful settled art exactly, no residue or indicator revival. + terminal={'camera_hit':'damaged','camera_critical_enter':'critical','camera_destroy':'destroyed','camera_field_off':'destroyed','camera_destroyed_idle':'destroyed'}.get(c['clipId']) + if terminal:assert frames[-1].tobytes()==source[terminal].tobytes() + if c['clipId'].startswith('camera_destroy') or c['clipId']=='camera_field_off': + for im in frames: + assert not any(a and g>r*1.5 and b>r*1.5 and g>70 for r,g,b,a in im.getdata()) + report.append({'clipId':c['clipId'],'fps':c['framesPerSecond'],'durationNumerator':len(frames),'durationDenominator':c['framesPerSecond'],'loop':c['loop'],'frames':names,'reducedMotionFrame':names[-1] if terminal else names[0],'uniqueDecodedFrames':len({hashlib.sha256(im.tobytes()).hexdigest() for im in frames})}) + rows.append(row) +sheet=Image.new('RGB',(1024,424*len(rows))) +for i,row in enumerate(rows):sheet.paste(row,(0,i*424)) +sheet.save(P/'contact-sheet.png') +(P/'clips.json').write_text(json.dumps({'status':'SOURCE_PREVIEW_NOT_RUNTIME_ADMISSION','canvasPixels':[256,384],'logicalCanvas':[64,96],'anchor':[32,88],'frameCount':sum(len(c['frames']) for c in report),'clips':report},indent=2)+'\n') +print('Verified 16 slots, fixed shared structure, exact terminal states, no cyan indicator in destruction.') diff --git a/docs/review/camera-clips/clips.json b/docs/review/camera-clips/clips.json new file mode 100644 index 00000000..6c137d13 --- /dev/null +++ b/docs/review/camera-clips/clips.json @@ -0,0 +1,100 @@ +{ + "status": "SOURCE_PREVIEW_NOT_RUNTIME_ADMISSION", + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "anchor": [ + 32, + 88 + ], + "frameCount": 16, + "clips": [ + { + "clipId": "camera_operational_idle", + "fps": 6, + "durationNumerator": 4, + "durationDenominator": 6, + "loop": true, + "frames": [ + "frames/actor_camera_operationalIdle_none_01@4x.png", + "frames/actor_camera_operationalIdle_none_02@4x.png", + "frames/actor_camera_operationalIdle_none_03@4x.png", + "frames/actor_camera_operationalIdle_none_04@4x.png" + ], + "reducedMotionFrame": "frames/actor_camera_operationalIdle_none_01@4x.png", + "uniqueDecodedFrames": 3 + }, + { + "clipId": "camera_hit", + "fps": 16, + "durationNumerator": 2, + "durationDenominator": 16, + "loop": false, + "frames": [ + "frames/actor_camera_hit_none_01@4x.png", + "frames/actor_camera_hit_none_02@4x.png" + ], + "reducedMotionFrame": "frames/actor_camera_hit_none_02@4x.png", + "uniqueDecodedFrames": 2 + }, + { + "clipId": "camera_critical_enter", + "fps": 12, + "durationNumerator": 3, + "durationDenominator": 12, + "loop": false, + "frames": [ + "frames/actor_camera_criticalEnter_none_01@4x.png", + "frames/actor_camera_criticalEnter_none_02@4x.png", + "frames/actor_camera_criticalEnter_none_03@4x.png" + ], + "reducedMotionFrame": "frames/actor_camera_criticalEnter_none_03@4x.png", + "uniqueDecodedFrames": 3 + }, + { + "clipId": "camera_destroy", + "fps": 12, + "durationNumerator": 4, + "durationDenominator": 12, + "loop": false, + "frames": [ + "frames/actor_camera_destroy_none_01@4x.png", + "frames/actor_camera_destroy_none_02@4x.png", + "frames/actor_camera_destroy_none_03@4x.png", + "frames/actor_camera_destroy_none_04@4x.png" + ], + "reducedMotionFrame": "frames/actor_camera_destroy_none_04@4x.png", + "uniqueDecodedFrames": 4 + }, + { + "clipId": "camera_field_off", + "fps": 12, + "durationNumerator": 1, + "durationDenominator": 12, + "loop": false, + "frames": [ + "frames/actor_camera_fieldOff_none_01@4x.png" + ], + "reducedMotionFrame": "frames/actor_camera_fieldOff_none_01@4x.png", + "uniqueDecodedFrames": 1 + }, + { + "clipId": "camera_destroyed_idle", + "fps": 4, + "durationNumerator": 2, + "durationDenominator": 4, + "loop": true, + "frames": [ + "frames/actor_camera_destroyedIdle_none_01@4x.png", + "frames/actor_camera_destroyedIdle_none_02@4x.png" + ], + "reducedMotionFrame": "frames/actor_camera_destroyedIdle_none_02@4x.png", + "uniqueDecodedFrames": 1 + } + ] +} diff --git a/docs/review/camera-clips/contact-sheet-review.png b/docs/review/camera-clips/contact-sheet-review.png new file mode 100644 index 00000000..60f47ff3 Binary files /dev/null and b/docs/review/camera-clips/contact-sheet-review.png differ diff --git a/docs/review/camera-clips/contact-sheet.png b/docs/review/camera-clips/contact-sheet.png new file mode 100644 index 00000000..8f651917 Binary files /dev/null and b/docs/review/camera-clips/contact-sheet.png differ diff --git a/docs/review/camera-clips/design.md b/docs/review/camera-clips/design.md new file mode 100644 index 00000000..5436713e --- /dev/null +++ b/docs/review/camera-clips/design.md @@ -0,0 +1,11 @@ +# BP-004 camera clip source proposal + +Status: authored source candidate, not art admission. Implements the existing BP-004 six-clip/fixed-mount requirements. No timing, gameplay, collision, damage or Reduced Motion contract changes. + +Research checked 2026-10-14: +- Apple, https://developer.apple.com/documentation/spritekit/skaction/animate%28with%3Atimeperframe%3A%29 : texture actions traverse supplied textures at a specified time per frame. Existing v1 metadata supplies the candidate frame order and cadence. +- Game Accessibility Guidelines, https://gameaccessibilityguidelines.com/avoid-flickering-images-and-repetitive-patterns/ : avoid flickering/repetitive visual effects where possible. This supports restrained effects, not a claim that specific amplitudes are tested or safe. + +Authored comparison proposal: retain a single permanent pole/mount/base; small indicator-only modulation in the four operational holds; a compact local material response over already-damaged geometry for hit/critical entry; immediately dark broken geometry with a brief matte fragment fall contained near the dome for destruction. The field-off and destroyed-idle deliveries hold the same settled dark image. Identical destroyed-idle holds are intentional persistence, not falsely claimed distinct movement. Keep frame slots and durations exactly as metadata; do not invent a sweep or heading change. + +The candidate's effect amplitudes, fragment coordinates and colors are authored source parameters, not research-derived constants. Reduced Motion preview selects the settled terminal state immediately. Runtime must still arbitrate newest authoritative integrity, destruction and field removal; an HTML source preview cannot prove that behavior. Runtime notch overlays stay separate. Compare native size, grayscale, normal and slowed playback before runtime capture/admission. Existing Captain distinction and legal/dense encounter requirements remain open. diff --git a/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_01@4x.png b/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_01@4x.png new file mode 100644 index 00000000..4d256014 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_01@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_02@4x.png b/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_02@4x.png new file mode 100644 index 00000000..4e607493 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_02@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_03@4x.png b/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_03@4x.png new file mode 100644 index 00000000..a1495fd4 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_criticalEnter_none_03@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_destroy_none_01@4x.png b/docs/review/camera-clips/frames/actor_camera_destroy_none_01@4x.png new file mode 100644 index 00000000..91e63cef Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_destroy_none_01@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_destroy_none_02@4x.png b/docs/review/camera-clips/frames/actor_camera_destroy_none_02@4x.png new file mode 100644 index 00000000..f82c2636 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_destroy_none_02@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_destroy_none_03@4x.png b/docs/review/camera-clips/frames/actor_camera_destroy_none_03@4x.png new file mode 100644 index 00000000..7e622d4f Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_destroy_none_03@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_destroy_none_04@4x.png b/docs/review/camera-clips/frames/actor_camera_destroy_none_04@4x.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_destroy_none_04@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_destroyedIdle_none_01@4x.png b/docs/review/camera-clips/frames/actor_camera_destroyedIdle_none_01@4x.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_destroyedIdle_none_01@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_destroyedIdle_none_02@4x.png b/docs/review/camera-clips/frames/actor_camera_destroyedIdle_none_02@4x.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_destroyedIdle_none_02@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_fieldOff_none_01@4x.png b/docs/review/camera-clips/frames/actor_camera_fieldOff_none_01@4x.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_fieldOff_none_01@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_hit_none_01@4x.png b/docs/review/camera-clips/frames/actor_camera_hit_none_01@4x.png new file mode 100644 index 00000000..81e16541 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_hit_none_01@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_hit_none_02@4x.png b/docs/review/camera-clips/frames/actor_camera_hit_none_02@4x.png new file mode 100644 index 00000000..3255642f Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_hit_none_02@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_01@4x.png b/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_01@4x.png new file mode 100644 index 00000000..5f240f02 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_01@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_02@4x.png b/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_02@4x.png new file mode 100644 index 00000000..51164166 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_02@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_03@4x.png b/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_03@4x.png new file mode 100644 index 00000000..7634b184 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_03@4x.png differ diff --git a/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_04@4x.png b/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_04@4x.png new file mode 100644 index 00000000..51164166 Binary files /dev/null and b/docs/review/camera-clips/frames/actor_camera_operationalIdle_none_04@4x.png differ diff --git a/docs/review/camera-clips/index.html b/docs/review/camera-clips/index.html new file mode 100644 index 00000000..6ab54364 --- /dev/null +++ b/docs/review/camera-clips/index.html @@ -0,0 +1,116 @@ +SS municipal camera — clip source review + +

Municipal camera: six clip candidates

One shared mount. Existing frame counts and timing. Source review only; runtime interruption and encounter checks remain open.

+ +

4× source

64×96 logical size

Destroyed idle intentionally holds identical dark frames. Damage notches belong to runtime and are not baked into the art. No sweep, housing translation or added head node. + + diff --git a/docs/review/camera-clips/parameters.json b/docs/review/camera-clips/parameters.json new file mode 100644 index 00000000..ab1d64f9 --- /dev/null +++ b/docs/review/camera-clips/parameters.json @@ -0,0 +1,46 @@ +{ + "status": "AUTHORED_REVIEW_PARAMETERS_NOT_ADMITTED", + "idleIndicatorMultipliers": [ + 1, + 0.96, + 0.92, + 0.96 + ], + "hitHeadMultipliers": [ + 1.08, + 1 + ], + "criticalHeadMultipliers": [ + 1.08, + 1.04, + 1 + ], + "destroyFragmentOffsets": [ + 0, + 4, + 8, + null + ], + "fragments": [ + [ + 192, + 174, + 2 + ], + [ + 224, + 181, + 2 + ], + [ + 204, + 194, + 1 + ] + ], + "fragmentRGB": [ + 72, + 68, + 61 + ] +} diff --git a/docs/review/camera-clips/sha256.json b/docs/review/camera-clips/sha256.json new file mode 100644 index 00000000..f51c8d90 --- /dev/null +++ b/docs/review/camera-clips/sha256.json @@ -0,0 +1,33 @@ +{ + "README.md": "126923dce01fa81dfbfdb6b83da849945704a56f3b39a440dec1bb1a574e98fc", + "browser-review.png": "aa1e931f2a9ee1c4070edc8648ef298c46ba82045267e84ad81d50d09551620e", + "build.py": "689117931600691e5159112676bc87e4cf77fa8726d11e3ca0a1a42cd6b6ee56", + "clips.json": "293afb2dba1a4ebbed036457e7cd5fc3ebd0c1adc72feec579a927f19b243c75", + "contact-sheet-review.png": "1ebe301d836ad7f96f81f20c29b59586d85d5a2a232e344afbc287b471555d0b", + "contact-sheet.png": "6d0a08dca64ce27c61f8547624c4b382dec4448f32c1b700362ad3ae20406e09", + "design.md": "cb7714ff97a99afa4ab216f547b768ea5bb8cc4f2de283d7434578e700aef2c8", + "frames/actor_camera_criticalEnter_none_01@4x.png": "fdae389bbfc639e5e5f22fb9b950683ca269118cb993777b016c360f896319e7", + "frames/actor_camera_criticalEnter_none_02@4x.png": "e7a6dd29de03fae460dad6bbaa2a856edfe625590090cfa2b10e228301edd877", + "frames/actor_camera_criticalEnter_none_03@4x.png": "baae195d331ffb11e1e62193339834d9e8e6229a47c5d565944cc89c8abdd438", + "frames/actor_camera_destroy_none_01@4x.png": "7745b0a911abac3c14f68bd02548ba94c5248b00ecafacbf5fdc7d9db4e798e0", + "frames/actor_camera_destroy_none_02@4x.png": "4185bf155d8e558b00cff8f7641edb967fc15dd79ed8e4d495090d397eca6444", + "frames/actor_camera_destroy_none_03@4x.png": "8c19ad0a019adb3e6a5a4585f4e17c522e1226832a06452c307c602717836f56", + "frames/actor_camera_destroy_none_04@4x.png": "7847e977926526762f968fc72e76083c646f553e7c1b2a5a8a30ddafd48bb3b6", + "frames/actor_camera_destroyedIdle_none_01@4x.png": "7847e977926526762f968fc72e76083c646f553e7c1b2a5a8a30ddafd48bb3b6", + "frames/actor_camera_destroyedIdle_none_02@4x.png": "7847e977926526762f968fc72e76083c646f553e7c1b2a5a8a30ddafd48bb3b6", + "frames/actor_camera_fieldOff_none_01@4x.png": "7847e977926526762f968fc72e76083c646f553e7c1b2a5a8a30ddafd48bb3b6", + "frames/actor_camera_hit_none_01@4x.png": "2198283aedf0e8ed39b6d6c38707f08d524ac60ed5d48bf058a2a4e42064f41d", + "frames/actor_camera_hit_none_02@4x.png": "0d6b70f2f1ed172c6e726d8a8f0f4b69f7e3e68a5f2c08d41d8fc782dcb14fc9", + "frames/actor_camera_operationalIdle_none_01@4x.png": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "frames/actor_camera_operationalIdle_none_02@4x.png": "279fb302734551f739b82d7b83d24f549de8f6ced60c47ee1de134db184d9edb", + "frames/actor_camera_operationalIdle_none_03@4x.png": "daa32f1d180895595dff4834bfb3a81395805ed9dddf8449b93130eb5e158dc6", + "frames/actor_camera_operationalIdle_none_04@4x.png": "279fb302734551f739b82d7b83d24f549de8f6ced60c47ee1de134db184d9edb", + "index.html": "6120742a5b8e3d5f50aeb807ff4714a294a366732723c6f4f72d3254d2750152", + "parameters.json": "51bfde9c1b8240382f819344c58a6e947193f1c95f6b6119ee134cb896d1a52b", + "source/clip-metadata-001.json": "21f734ddaf228e99c3624b8c0d1cbc9a2af252cba1bf15f67986ec649f2daf26", + "source/critical.png": "baae195d331ffb11e1e62193339834d9e8e6229a47c5d565944cc89c8abdd438", + "source/damaged.png": "0d6b70f2f1ed172c6e726d8a8f0f4b69f7e3e68a5f2c08d41d8fc782dcb14fc9", + "source/destroyed.png": "7847e977926526762f968fc72e76083c646f553e7c1b2a5a8a30ddafd48bb3b6", + "source/head-mask.png": "3ce40939f3b3374c8316fca0cdb447d93db4bbe4bd4748d7a1ca248262379f36", + "source/intact.png": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f" +} diff --git a/docs/review/camera-clips/source/clip-metadata-001.json b/docs/review/camera-clips/source/clip-metadata-001.json new file mode 100644 index 00000000..4d2c7228 --- /dev/null +++ b/docs/review/camera-clips/source/clip-metadata-001.json @@ -0,0 +1,2534 @@ +{ + "schemaVersion": "clip-metadata-001", + "animationVersion": "animation-civic-seam-001", + "clips": [ + { + "clipId": "player_idle", + "actorRole": "player", + "state": "idle", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_player_idle_n_01", + "actor_player_idle_n_02", + "actor_player_idle_n_03", + "actor_player_idle_n_04", + "actor_player_idle_e_01", + "actor_player_idle_e_02", + "actor_player_idle_e_03", + "actor_player_idle_e_04", + "actor_player_idle_s_01", + "actor_player_idle_s_02", + "actor_player_idle_s_03", + "actor_player_idle_s_04", + "actor_player_idle_w_01", + "actor_player_idle_w_02", + "actor_player_idle_w_03", + "actor_player_idle_w_04" + ], + "framesPerSecond": 6, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat", + "dodge" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "player_idle", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "player_move", + "actorRole": "player", + "state": "move", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_player_move_n_01", + "actor_player_move_n_02", + "actor_player_move_n_03", + "actor_player_move_n_04", + "actor_player_move_n_05", + "actor_player_move_n_06", + "actor_player_move_e_01", + "actor_player_move_e_02", + "actor_player_move_e_03", + "actor_player_move_e_04", + "actor_player_move_e_05", + "actor_player_move_e_06", + "actor_player_move_s_01", + "actor_player_move_s_02", + "actor_player_move_s_03", + "actor_player_move_s_04", + "actor_player_move_s_05", + "actor_player_move_s_06", + "actor_player_move_w_01", + "actor_player_move_w_02", + "actor_player_move_w_03", + "actor_player_move_w_04", + "actor_player_move_w_05", + "actor_player_move_w_06" + ], + "framesPerSecond": 12, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat", + "dodge" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "player_move", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "player_dodge", + "actorRole": "player", + "state": "dodge", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_player_dodge_n_01", + "actor_player_dodge_n_02", + "actor_player_dodge_n_03", + "actor_player_dodge_n_04", + "actor_player_dodge_e_01", + "actor_player_dodge_e_02", + "actor_player_dodge_e_03", + "actor_player_dodge_e_04", + "actor_player_dodge_s_01", + "actor_player_dodge_s_02", + "actor_player_dodge_s_03", + "actor_player_dodge_s_04", + "actor_player_dodge_w_01", + "actor_player_dodge_w_02", + "actor_player_dodge_w_03", + "actor_player_dodge_w_04" + ], + "framesPerSecond": 16, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "dodgeStarted", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "player_dodge", + "audioCue": "player_dodge", + "vfxCue": "none" + }, + { + "clipId": "player_recover", + "actorRole": "player", + "state": "recover", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_player_recover_n_01", + "actor_player_recover_n_02", + "actor_player_recover_e_01", + "actor_player_recover_e_02", + "actor_player_recover_s_01", + "actor_player_recover_s_02", + "actor_player_recover_w_01", + "actor_player_recover_w_02" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "returnToLocomotion", + "reducedMotionClip": "player_recover", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "player_hurt", + "actorRole": "player", + "state": "hurt", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_player_hurt_n_01", + "actor_player_hurt_n_02", + "actor_player_hurt_n_03", + "actor_player_hurt_e_01", + "actor_player_hurt_e_02", + "actor_player_hurt_e_03", + "actor_player_hurt_s_01", + "actor_player_hurt_s_02", + "actor_player_hurt_s_03", + "actor_player_hurt_w_01", + "actor_player_hurt_w_02", + "actor_player_hurt_w_03" + ], + "framesPerSecond": 20, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "playerDamaged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "player_hurt", + "audioCue": "player_damage", + "vfxCue": "none" + }, + { + "clipId": "player_defeat", + "actorRole": "player", + "state": "defeat", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_player_defeat_n_01", + "actor_player_defeat_n_02", + "actor_player_defeat_n_03", + "actor_player_defeat_n_04", + "actor_player_defeat_n_05", + "actor_player_defeat_e_01", + "actor_player_defeat_e_02", + "actor_player_defeat_e_03", + "actor_player_defeat_e_04", + "actor_player_defeat_e_05", + "actor_player_defeat_s_01", + "actor_player_defeat_s_02", + "actor_player_defeat_s_03", + "actor_player_defeat_s_04", + "actor_player_defeat_s_05", + "actor_player_defeat_w_01", + "actor_player_defeat_w_02", + "actor_player_defeat_w_03", + "actor_player_defeat_w_04", + "actor_player_defeat_w_05" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "runFailed", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "player_defeat", + "audioCue": "player_death", + "vfxCue": "none" + }, + { + "clipId": "player_extraction", + "actorRole": "player", + "state": "extraction", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_player_extraction_n_01", + "actor_player_extraction_n_02", + "actor_player_extraction_n_03", + "actor_player_extraction_n_04", + "actor_player_extraction_n_05", + "actor_player_extraction_n_06", + "actor_player_extraction_n_07", + "actor_player_extraction_n_08", + "actor_player_extraction_e_01", + "actor_player_extraction_e_02", + "actor_player_extraction_e_03", + "actor_player_extraction_e_04", + "actor_player_extraction_e_05", + "actor_player_extraction_e_06", + "actor_player_extraction_e_07", + "actor_player_extraction_e_08", + "actor_player_extraction_s_01", + "actor_player_extraction_s_02", + "actor_player_extraction_s_03", + "actor_player_extraction_s_04", + "actor_player_extraction_s_05", + "actor_player_extraction_s_06", + "actor_player_extraction_s_07", + "actor_player_extraction_s_08", + "actor_player_extraction_w_01", + "actor_player_extraction_w_02", + "actor_player_extraction_w_03", + "actor_player_extraction_w_04", + "actor_player_extraction_w_05", + "actor_player_extraction_w_06", + "actor_player_extraction_w_07", + "actor_player_extraction_w_08" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "extractionCountdownChanged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "countdownAligned", + "reducedMotionClip": "player_extraction", + "audioCue": "extraction_tick", + "vfxCue": "none" + }, + { + "clipId": "player_complete", + "actorRole": "player", + "state": "complete", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_player_complete_n_01", + "actor_player_complete_n_02", + "actor_player_complete_n_03", + "actor_player_complete_n_04", + "actor_player_complete_e_01", + "actor_player_complete_e_02", + "actor_player_complete_e_03", + "actor_player_complete_e_04", + "actor_player_complete_s_01", + "actor_player_complete_s_02", + "actor_player_complete_s_03", + "actor_player_complete_s_04", + "actor_player_complete_w_01", + "actor_player_complete_w_02", + "actor_player_complete_w_03", + "actor_player_complete_w_04" + ], + "framesPerSecond": 8, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "runSucceeded", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "player_complete", + "audioCue": "run_success", + "vfxCue": "none" + }, + { + "clipId": "fogAnalyticsCloud_anticipate", + "actorRole": "fogAnalyticsCloud", + "state": "pulse", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_fogAnalyticsCloud_pulse_n_01", + "actor_fogAnalyticsCloud_pulse_n_02", + "actor_fogAnalyticsCloud_pulse_n_03", + "actor_fogAnalyticsCloud_pulse_e_01", + "actor_fogAnalyticsCloud_pulse_e_02", + "actor_fogAnalyticsCloud_pulse_e_03", + "actor_fogAnalyticsCloud_pulse_s_01", + "actor_fogAnalyticsCloud_pulse_s_02", + "actor_fogAnalyticsCloud_pulse_s_03", + "actor_fogAnalyticsCloud_pulse_w_01", + "actor_fogAnalyticsCloud_pulse_w_02", + "actor_fogAnalyticsCloud_pulse_w_03" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "fogAnalyticsCloud_anticipate", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "fogAnalyticsCloud_commit", + "actorRole": "fogAnalyticsCloud", + "state": "pulseCommit", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_fogAnalyticsCloud_pulseCommit_n_01", + "actor_fogAnalyticsCloud_pulseCommit_n_02", + "actor_fogAnalyticsCloud_pulseCommit_e_01", + "actor_fogAnalyticsCloud_pulseCommit_e_02", + "actor_fogAnalyticsCloud_pulseCommit_s_01", + "actor_fogAnalyticsCloud_pulseCommit_s_02", + "actor_fogAnalyticsCloud_pulseCommit_w_01", + "actor_fogAnalyticsCloud_pulseCommit_w_02" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "fogAnalyticsCloud_commit", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "fogAnalyticsCloud_idle", + "actorRole": "fogAnalyticsCloud", + "state": "idle", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_fogAnalyticsCloud_idle_n_01", + "actor_fogAnalyticsCloud_idle_n_02", + "actor_fogAnalyticsCloud_idle_n_03", + "actor_fogAnalyticsCloud_idle_n_04", + "actor_fogAnalyticsCloud_idle_e_01", + "actor_fogAnalyticsCloud_idle_e_02", + "actor_fogAnalyticsCloud_idle_e_03", + "actor_fogAnalyticsCloud_idle_e_04", + "actor_fogAnalyticsCloud_idle_s_01", + "actor_fogAnalyticsCloud_idle_s_02", + "actor_fogAnalyticsCloud_idle_s_03", + "actor_fogAnalyticsCloud_idle_s_04", + "actor_fogAnalyticsCloud_idle_w_01", + "actor_fogAnalyticsCloud_idle_w_02", + "actor_fogAnalyticsCloud_idle_w_03", + "actor_fogAnalyticsCloud_idle_w_04" + ], + "framesPerSecond": 6, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "fogAnalyticsCloud_idle", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "fogAnalyticsCloud_move", + "actorRole": "fogAnalyticsCloud", + "state": "move", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_fogAnalyticsCloud_move_n_01", + "actor_fogAnalyticsCloud_move_n_02", + "actor_fogAnalyticsCloud_move_n_03", + "actor_fogAnalyticsCloud_move_n_04", + "actor_fogAnalyticsCloud_move_n_05", + "actor_fogAnalyticsCloud_move_n_06", + "actor_fogAnalyticsCloud_move_e_01", + "actor_fogAnalyticsCloud_move_e_02", + "actor_fogAnalyticsCloud_move_e_03", + "actor_fogAnalyticsCloud_move_e_04", + "actor_fogAnalyticsCloud_move_e_05", + "actor_fogAnalyticsCloud_move_e_06", + "actor_fogAnalyticsCloud_move_s_01", + "actor_fogAnalyticsCloud_move_s_02", + "actor_fogAnalyticsCloud_move_s_03", + "actor_fogAnalyticsCloud_move_s_04", + "actor_fogAnalyticsCloud_move_s_05", + "actor_fogAnalyticsCloud_move_s_06", + "actor_fogAnalyticsCloud_move_w_01", + "actor_fogAnalyticsCloud_move_w_02", + "actor_fogAnalyticsCloud_move_w_03", + "actor_fogAnalyticsCloud_move_w_04", + "actor_fogAnalyticsCloud_move_w_05", + "actor_fogAnalyticsCloud_move_w_06" + ], + "framesPerSecond": 12, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "fogAnalyticsCloud_move", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "fogAnalyticsCloud_hurt", + "actorRole": "fogAnalyticsCloud", + "state": "hurt", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_fogAnalyticsCloud_hurt_n_01", + "actor_fogAnalyticsCloud_hurt_n_02", + "actor_fogAnalyticsCloud_hurt_n_03", + "actor_fogAnalyticsCloud_hurt_e_01", + "actor_fogAnalyticsCloud_hurt_e_02", + "actor_fogAnalyticsCloud_hurt_e_03", + "actor_fogAnalyticsCloud_hurt_s_01", + "actor_fogAnalyticsCloud_hurt_s_02", + "actor_fogAnalyticsCloud_hurt_s_03", + "actor_fogAnalyticsCloud_hurt_w_01", + "actor_fogAnalyticsCloud_hurt_w_02", + "actor_fogAnalyticsCloud_hurt_w_03" + ], + "framesPerSecond": 20, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDamaged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "fogAnalyticsCloud_hurt", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "fogAnalyticsCloud_defeat", + "actorRole": "fogAnalyticsCloud", + "state": "defeat", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_fogAnalyticsCloud_defeat_n_01", + "actor_fogAnalyticsCloud_defeat_n_02", + "actor_fogAnalyticsCloud_defeat_n_03", + "actor_fogAnalyticsCloud_defeat_n_04", + "actor_fogAnalyticsCloud_defeat_n_05", + "actor_fogAnalyticsCloud_defeat_n_06", + "actor_fogAnalyticsCloud_defeat_e_01", + "actor_fogAnalyticsCloud_defeat_e_02", + "actor_fogAnalyticsCloud_defeat_e_03", + "actor_fogAnalyticsCloud_defeat_e_04", + "actor_fogAnalyticsCloud_defeat_e_05", + "actor_fogAnalyticsCloud_defeat_e_06", + "actor_fogAnalyticsCloud_defeat_s_01", + "actor_fogAnalyticsCloud_defeat_s_02", + "actor_fogAnalyticsCloud_defeat_s_03", + "actor_fogAnalyticsCloud_defeat_s_04", + "actor_fogAnalyticsCloud_defeat_s_05", + "actor_fogAnalyticsCloud_defeat_s_06", + "actor_fogAnalyticsCloud_defeat_w_01", + "actor_fogAnalyticsCloud_defeat_w_02", + "actor_fogAnalyticsCloud_defeat_w_03", + "actor_fogAnalyticsCloud_defeat_w_04", + "actor_fogAnalyticsCloud_defeat_w_05", + "actor_fogAnalyticsCloud_defeat_w_06" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDied", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "fogAnalyticsCloud_defeat", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "cableCarCorrelator_anticipate", + "actorRole": "cableCarCorrelator", + "state": "charge", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_cableCarCorrelator_charge_n_01", + "actor_cableCarCorrelator_charge_n_02", + "actor_cableCarCorrelator_charge_n_03", + "actor_cableCarCorrelator_charge_e_01", + "actor_cableCarCorrelator_charge_e_02", + "actor_cableCarCorrelator_charge_e_03", + "actor_cableCarCorrelator_charge_s_01", + "actor_cableCarCorrelator_charge_s_02", + "actor_cableCarCorrelator_charge_s_03", + "actor_cableCarCorrelator_charge_w_01", + "actor_cableCarCorrelator_charge_w_02", + "actor_cableCarCorrelator_charge_w_03" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "cableCarCorrelator_anticipate", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "cableCarCorrelator_commit", + "actorRole": "cableCarCorrelator", + "state": "chargeCommit", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_cableCarCorrelator_chargeCommit_n_01", + "actor_cableCarCorrelator_chargeCommit_n_02", + "actor_cableCarCorrelator_chargeCommit_e_01", + "actor_cableCarCorrelator_chargeCommit_e_02", + "actor_cableCarCorrelator_chargeCommit_s_01", + "actor_cableCarCorrelator_chargeCommit_s_02", + "actor_cableCarCorrelator_chargeCommit_w_01", + "actor_cableCarCorrelator_chargeCommit_w_02" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "cableCarCorrelator_commit", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "cableCarCorrelator_idle", + "actorRole": "cableCarCorrelator", + "state": "idle", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_cableCarCorrelator_idle_n_01", + "actor_cableCarCorrelator_idle_n_02", + "actor_cableCarCorrelator_idle_n_03", + "actor_cableCarCorrelator_idle_n_04", + "actor_cableCarCorrelator_idle_e_01", + "actor_cableCarCorrelator_idle_e_02", + "actor_cableCarCorrelator_idle_e_03", + "actor_cableCarCorrelator_idle_e_04", + "actor_cableCarCorrelator_idle_s_01", + "actor_cableCarCorrelator_idle_s_02", + "actor_cableCarCorrelator_idle_s_03", + "actor_cableCarCorrelator_idle_s_04", + "actor_cableCarCorrelator_idle_w_01", + "actor_cableCarCorrelator_idle_w_02", + "actor_cableCarCorrelator_idle_w_03", + "actor_cableCarCorrelator_idle_w_04" + ], + "framesPerSecond": 6, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "cableCarCorrelator_idle", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "cableCarCorrelator_move", + "actorRole": "cableCarCorrelator", + "state": "move", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_cableCarCorrelator_move_n_01", + "actor_cableCarCorrelator_move_n_02", + "actor_cableCarCorrelator_move_n_03", + "actor_cableCarCorrelator_move_n_04", + "actor_cableCarCorrelator_move_n_05", + "actor_cableCarCorrelator_move_n_06", + "actor_cableCarCorrelator_move_e_01", + "actor_cableCarCorrelator_move_e_02", + "actor_cableCarCorrelator_move_e_03", + "actor_cableCarCorrelator_move_e_04", + "actor_cableCarCorrelator_move_e_05", + "actor_cableCarCorrelator_move_e_06", + "actor_cableCarCorrelator_move_s_01", + "actor_cableCarCorrelator_move_s_02", + "actor_cableCarCorrelator_move_s_03", + "actor_cableCarCorrelator_move_s_04", + "actor_cableCarCorrelator_move_s_05", + "actor_cableCarCorrelator_move_s_06", + "actor_cableCarCorrelator_move_w_01", + "actor_cableCarCorrelator_move_w_02", + "actor_cableCarCorrelator_move_w_03", + "actor_cableCarCorrelator_move_w_04", + "actor_cableCarCorrelator_move_w_05", + "actor_cableCarCorrelator_move_w_06" + ], + "framesPerSecond": 12, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "cableCarCorrelator_move", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "cableCarCorrelator_recover", + "actorRole": "cableCarCorrelator", + "state": "recover", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_cableCarCorrelator_recover_n_01", + "actor_cableCarCorrelator_recover_n_02", + "actor_cableCarCorrelator_recover_n_03", + "actor_cableCarCorrelator_recover_e_01", + "actor_cableCarCorrelator_recover_e_02", + "actor_cableCarCorrelator_recover_e_03", + "actor_cableCarCorrelator_recover_s_01", + "actor_cableCarCorrelator_recover_s_02", + "actor_cableCarCorrelator_recover_s_03", + "actor_cableCarCorrelator_recover_w_01", + "actor_cableCarCorrelator_recover_w_02", + "actor_cableCarCorrelator_recover_w_03" + ], + "framesPerSecond": 4, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "returnToLocomotion", + "reducedMotionClip": "cableCarCorrelator_recover", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "cableCarCorrelator_hurt", + "actorRole": "cableCarCorrelator", + "state": "hurt", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_cableCarCorrelator_hurt_n_01", + "actor_cableCarCorrelator_hurt_n_02", + "actor_cableCarCorrelator_hurt_n_03", + "actor_cableCarCorrelator_hurt_e_01", + "actor_cableCarCorrelator_hurt_e_02", + "actor_cableCarCorrelator_hurt_e_03", + "actor_cableCarCorrelator_hurt_s_01", + "actor_cableCarCorrelator_hurt_s_02", + "actor_cableCarCorrelator_hurt_s_03", + "actor_cableCarCorrelator_hurt_w_01", + "actor_cableCarCorrelator_hurt_w_02", + "actor_cableCarCorrelator_hurt_w_03" + ], + "framesPerSecond": 20, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDamaged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "cableCarCorrelator_hurt", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "cableCarCorrelator_defeat", + "actorRole": "cableCarCorrelator", + "state": "defeat", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_cableCarCorrelator_defeat_n_01", + "actor_cableCarCorrelator_defeat_n_02", + "actor_cableCarCorrelator_defeat_n_03", + "actor_cableCarCorrelator_defeat_n_04", + "actor_cableCarCorrelator_defeat_n_05", + "actor_cableCarCorrelator_defeat_n_06", + "actor_cableCarCorrelator_defeat_e_01", + "actor_cableCarCorrelator_defeat_e_02", + "actor_cableCarCorrelator_defeat_e_03", + "actor_cableCarCorrelator_defeat_e_04", + "actor_cableCarCorrelator_defeat_e_05", + "actor_cableCarCorrelator_defeat_e_06", + "actor_cableCarCorrelator_defeat_s_01", + "actor_cableCarCorrelator_defeat_s_02", + "actor_cableCarCorrelator_defeat_s_03", + "actor_cableCarCorrelator_defeat_s_04", + "actor_cableCarCorrelator_defeat_s_05", + "actor_cableCarCorrelator_defeat_s_06", + "actor_cableCarCorrelator_defeat_w_01", + "actor_cableCarCorrelator_defeat_w_02", + "actor_cableCarCorrelator_defeat_w_03", + "actor_cableCarCorrelator_defeat_w_04", + "actor_cableCarCorrelator_defeat_w_05", + "actor_cableCarCorrelator_defeat_w_06" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDied", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "cableCarCorrelator_defeat", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "sutroSignalWitch_anticipate", + "actorRole": "sutroSignalWitch", + "state": "cast", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_sutroSignalWitch_cast_n_01", + "actor_sutroSignalWitch_cast_n_02", + "actor_sutroSignalWitch_cast_n_03", + "actor_sutroSignalWitch_cast_e_01", + "actor_sutroSignalWitch_cast_e_02", + "actor_sutroSignalWitch_cast_e_03", + "actor_sutroSignalWitch_cast_s_01", + "actor_sutroSignalWitch_cast_s_02", + "actor_sutroSignalWitch_cast_s_03", + "actor_sutroSignalWitch_cast_w_01", + "actor_sutroSignalWitch_cast_w_02", + "actor_sutroSignalWitch_cast_w_03" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "sutroSignalWitch_anticipate", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "sutroSignalWitch_commit", + "actorRole": "sutroSignalWitch", + "state": "castCommit", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_sutroSignalWitch_castCommit_n_01", + "actor_sutroSignalWitch_castCommit_n_02", + "actor_sutroSignalWitch_castCommit_e_01", + "actor_sutroSignalWitch_castCommit_e_02", + "actor_sutroSignalWitch_castCommit_s_01", + "actor_sutroSignalWitch_castCommit_s_02", + "actor_sutroSignalWitch_castCommit_w_01", + "actor_sutroSignalWitch_castCommit_w_02" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "sutroSignalWitch_commit", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "sutroSignalWitch_idle", + "actorRole": "sutroSignalWitch", + "state": "idle", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_sutroSignalWitch_idle_n_01", + "actor_sutroSignalWitch_idle_n_02", + "actor_sutroSignalWitch_idle_n_03", + "actor_sutroSignalWitch_idle_n_04", + "actor_sutroSignalWitch_idle_e_01", + "actor_sutroSignalWitch_idle_e_02", + "actor_sutroSignalWitch_idle_e_03", + "actor_sutroSignalWitch_idle_e_04", + "actor_sutroSignalWitch_idle_s_01", + "actor_sutroSignalWitch_idle_s_02", + "actor_sutroSignalWitch_idle_s_03", + "actor_sutroSignalWitch_idle_s_04", + "actor_sutroSignalWitch_idle_w_01", + "actor_sutroSignalWitch_idle_w_02", + "actor_sutroSignalWitch_idle_w_03", + "actor_sutroSignalWitch_idle_w_04" + ], + "framesPerSecond": 6, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "sutroSignalWitch_idle", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "sutroSignalWitch_move", + "actorRole": "sutroSignalWitch", + "state": "move", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_sutroSignalWitch_move_n_01", + "actor_sutroSignalWitch_move_n_02", + "actor_sutroSignalWitch_move_n_03", + "actor_sutroSignalWitch_move_n_04", + "actor_sutroSignalWitch_move_n_05", + "actor_sutroSignalWitch_move_n_06", + "actor_sutroSignalWitch_move_e_01", + "actor_sutroSignalWitch_move_e_02", + "actor_sutroSignalWitch_move_e_03", + "actor_sutroSignalWitch_move_e_04", + "actor_sutroSignalWitch_move_e_05", + "actor_sutroSignalWitch_move_e_06", + "actor_sutroSignalWitch_move_s_01", + "actor_sutroSignalWitch_move_s_02", + "actor_sutroSignalWitch_move_s_03", + "actor_sutroSignalWitch_move_s_04", + "actor_sutroSignalWitch_move_s_05", + "actor_sutroSignalWitch_move_s_06", + "actor_sutroSignalWitch_move_w_01", + "actor_sutroSignalWitch_move_w_02", + "actor_sutroSignalWitch_move_w_03", + "actor_sutroSignalWitch_move_w_04", + "actor_sutroSignalWitch_move_w_05", + "actor_sutroSignalWitch_move_w_06" + ], + "framesPerSecond": 12, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "sutroSignalWitch_move", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "sutroSignalWitch_hurt", + "actorRole": "sutroSignalWitch", + "state": "hurt", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_sutroSignalWitch_hurt_n_01", + "actor_sutroSignalWitch_hurt_n_02", + "actor_sutroSignalWitch_hurt_n_03", + "actor_sutroSignalWitch_hurt_e_01", + "actor_sutroSignalWitch_hurt_e_02", + "actor_sutroSignalWitch_hurt_e_03", + "actor_sutroSignalWitch_hurt_s_01", + "actor_sutroSignalWitch_hurt_s_02", + "actor_sutroSignalWitch_hurt_s_03", + "actor_sutroSignalWitch_hurt_w_01", + "actor_sutroSignalWitch_hurt_w_02", + "actor_sutroSignalWitch_hurt_w_03" + ], + "framesPerSecond": 20, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDamaged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "sutroSignalWitch_hurt", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "sutroSignalWitch_defeat", + "actorRole": "sutroSignalWitch", + "state": "defeat", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_sutroSignalWitch_defeat_n_01", + "actor_sutroSignalWitch_defeat_n_02", + "actor_sutroSignalWitch_defeat_n_03", + "actor_sutroSignalWitch_defeat_n_04", + "actor_sutroSignalWitch_defeat_n_05", + "actor_sutroSignalWitch_defeat_n_06", + "actor_sutroSignalWitch_defeat_e_01", + "actor_sutroSignalWitch_defeat_e_02", + "actor_sutroSignalWitch_defeat_e_03", + "actor_sutroSignalWitch_defeat_e_04", + "actor_sutroSignalWitch_defeat_e_05", + "actor_sutroSignalWitch_defeat_e_06", + "actor_sutroSignalWitch_defeat_s_01", + "actor_sutroSignalWitch_defeat_s_02", + "actor_sutroSignalWitch_defeat_s_03", + "actor_sutroSignalWitch_defeat_s_04", + "actor_sutroSignalWitch_defeat_s_05", + "actor_sutroSignalWitch_defeat_s_06", + "actor_sutroSignalWitch_defeat_w_01", + "actor_sutroSignalWitch_defeat_w_02", + "actor_sutroSignalWitch_defeat_w_03", + "actor_sutroSignalWitch_defeat_w_04", + "actor_sutroSignalWitch_defeat_w_05", + "actor_sutroSignalWitch_defeat_w_06" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDied", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "sutroSignalWitch_defeat", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "autonomousInformant_anticipate", + "actorRole": "autonomousInformant", + "state": "pursuit", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_autonomousInformant_pursuit_n_01", + "actor_autonomousInformant_pursuit_n_02", + "actor_autonomousInformant_pursuit_n_03", + "actor_autonomousInformant_pursuit_e_01", + "actor_autonomousInformant_pursuit_e_02", + "actor_autonomousInformant_pursuit_e_03", + "actor_autonomousInformant_pursuit_s_01", + "actor_autonomousInformant_pursuit_s_02", + "actor_autonomousInformant_pursuit_s_03", + "actor_autonomousInformant_pursuit_w_01", + "actor_autonomousInformant_pursuit_w_02", + "actor_autonomousInformant_pursuit_w_03" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "autonomousInformant_anticipate", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "autonomousInformant_commit", + "actorRole": "autonomousInformant", + "state": "pursuitCommit", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_autonomousInformant_pursuitCommit_n_01", + "actor_autonomousInformant_pursuitCommit_n_02", + "actor_autonomousInformant_pursuitCommit_e_01", + "actor_autonomousInformant_pursuitCommit_e_02", + "actor_autonomousInformant_pursuitCommit_s_01", + "actor_autonomousInformant_pursuitCommit_s_02", + "actor_autonomousInformant_pursuitCommit_w_01", + "actor_autonomousInformant_pursuitCommit_w_02" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "playerDamaged", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "autonomousInformant_commit", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "autonomousInformant_idle", + "actorRole": "autonomousInformant", + "state": "idle", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_autonomousInformant_idle_n_01", + "actor_autonomousInformant_idle_n_02", + "actor_autonomousInformant_idle_n_03", + "actor_autonomousInformant_idle_n_04", + "actor_autonomousInformant_idle_e_01", + "actor_autonomousInformant_idle_e_02", + "actor_autonomousInformant_idle_e_03", + "actor_autonomousInformant_idle_e_04", + "actor_autonomousInformant_idle_s_01", + "actor_autonomousInformant_idle_s_02", + "actor_autonomousInformant_idle_s_03", + "actor_autonomousInformant_idle_s_04", + "actor_autonomousInformant_idle_w_01", + "actor_autonomousInformant_idle_w_02", + "actor_autonomousInformant_idle_w_03", + "actor_autonomousInformant_idle_w_04" + ], + "framesPerSecond": 6, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "autonomousInformant_idle", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "autonomousInformant_hurt", + "actorRole": "autonomousInformant", + "state": "hurt", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_autonomousInformant_hurt_n_01", + "actor_autonomousInformant_hurt_n_02", + "actor_autonomousInformant_hurt_n_03", + "actor_autonomousInformant_hurt_e_01", + "actor_autonomousInformant_hurt_e_02", + "actor_autonomousInformant_hurt_e_03", + "actor_autonomousInformant_hurt_s_01", + "actor_autonomousInformant_hurt_s_02", + "actor_autonomousInformant_hurt_s_03", + "actor_autonomousInformant_hurt_w_01", + "actor_autonomousInformant_hurt_w_02", + "actor_autonomousInformant_hurt_w_03" + ], + "framesPerSecond": 20, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDamaged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "autonomousInformant_hurt", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "autonomousInformant_defeat", + "actorRole": "autonomousInformant", + "state": "defeat", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_autonomousInformant_defeat_n_01", + "actor_autonomousInformant_defeat_n_02", + "actor_autonomousInformant_defeat_n_03", + "actor_autonomousInformant_defeat_n_04", + "actor_autonomousInformant_defeat_n_05", + "actor_autonomousInformant_defeat_n_06", + "actor_autonomousInformant_defeat_e_01", + "actor_autonomousInformant_defeat_e_02", + "actor_autonomousInformant_defeat_e_03", + "actor_autonomousInformant_defeat_e_04", + "actor_autonomousInformant_defeat_e_05", + "actor_autonomousInformant_defeat_e_06", + "actor_autonomousInformant_defeat_s_01", + "actor_autonomousInformant_defeat_s_02", + "actor_autonomousInformant_defeat_s_03", + "actor_autonomousInformant_defeat_s_04", + "actor_autonomousInformant_defeat_s_05", + "actor_autonomousInformant_defeat_s_06", + "actor_autonomousInformant_defeat_w_01", + "actor_autonomousInformant_defeat_w_02", + "actor_autonomousInformant_defeat_w_03", + "actor_autonomousInformant_defeat_w_04", + "actor_autonomousInformant_defeat_w_05", + "actor_autonomousInformant_defeat_w_06" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDied", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "autonomousInformant_defeat", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "victorianVendor_anticipate", + "actorRole": "victorianVendor", + "state": "throw", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_victorianVendor_throw_n_01", + "actor_victorianVendor_throw_n_02", + "actor_victorianVendor_throw_n_03", + "actor_victorianVendor_throw_e_01", + "actor_victorianVendor_throw_e_02", + "actor_victorianVendor_throw_e_03", + "actor_victorianVendor_throw_s_01", + "actor_victorianVendor_throw_s_02", + "actor_victorianVendor_throw_s_03", + "actor_victorianVendor_throw_w_01", + "actor_victorianVendor_throw_w_02", + "actor_victorianVendor_throw_w_03" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "victorianVendor_anticipate", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "victorianVendor_commit", + "actorRole": "victorianVendor", + "state": "throwCommit", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_victorianVendor_throwCommit_n_01", + "actor_victorianVendor_throwCommit_n_02", + "actor_victorianVendor_throwCommit_e_01", + "actor_victorianVendor_throwCommit_e_02", + "actor_victorianVendor_throwCommit_s_01", + "actor_victorianVendor_throwCommit_s_02", + "actor_victorianVendor_throwCommit_w_01", + "actor_victorianVendor_throwCommit_w_02" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "victorianVendor_commit", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "victorianVendor_idle", + "actorRole": "victorianVendor", + "state": "idle", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_victorianVendor_idle_n_01", + "actor_victorianVendor_idle_n_02", + "actor_victorianVendor_idle_n_03", + "actor_victorianVendor_idle_n_04", + "actor_victorianVendor_idle_e_01", + "actor_victorianVendor_idle_e_02", + "actor_victorianVendor_idle_e_03", + "actor_victorianVendor_idle_e_04", + "actor_victorianVendor_idle_s_01", + "actor_victorianVendor_idle_s_02", + "actor_victorianVendor_idle_s_03", + "actor_victorianVendor_idle_s_04", + "actor_victorianVendor_idle_w_01", + "actor_victorianVendor_idle_w_02", + "actor_victorianVendor_idle_w_03", + "actor_victorianVendor_idle_w_04" + ], + "framesPerSecond": 6, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "victorianVendor_idle", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "victorianVendor_move", + "actorRole": "victorianVendor", + "state": "move", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_victorianVendor_move_n_01", + "actor_victorianVendor_move_n_02", + "actor_victorianVendor_move_n_03", + "actor_victorianVendor_move_n_04", + "actor_victorianVendor_move_n_05", + "actor_victorianVendor_move_n_06", + "actor_victorianVendor_move_e_01", + "actor_victorianVendor_move_e_02", + "actor_victorianVendor_move_e_03", + "actor_victorianVendor_move_e_04", + "actor_victorianVendor_move_e_05", + "actor_victorianVendor_move_e_06", + "actor_victorianVendor_move_s_01", + "actor_victorianVendor_move_s_02", + "actor_victorianVendor_move_s_03", + "actor_victorianVendor_move_s_04", + "actor_victorianVendor_move_s_05", + "actor_victorianVendor_move_s_06", + "actor_victorianVendor_move_w_01", + "actor_victorianVendor_move_w_02", + "actor_victorianVendor_move_w_03", + "actor_victorianVendor_move_w_04", + "actor_victorianVendor_move_w_05", + "actor_victorianVendor_move_w_06" + ], + "framesPerSecond": 12, + "loop": true, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "victorianVendor_move", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "victorianVendor_hurt", + "actorRole": "victorianVendor", + "state": "hurt", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_victorianVendor_hurt_n_01", + "actor_victorianVendor_hurt_n_02", + "actor_victorianVendor_hurt_n_03", + "actor_victorianVendor_hurt_e_01", + "actor_victorianVendor_hurt_e_02", + "actor_victorianVendor_hurt_e_03", + "actor_victorianVendor_hurt_s_01", + "actor_victorianVendor_hurt_s_02", + "actor_victorianVendor_hurt_s_03", + "actor_victorianVendor_hurt_w_01", + "actor_victorianVendor_hurt_w_02", + "actor_victorianVendor_hurt_w_03" + ], + "framesPerSecond": 20, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDamaged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "victorianVendor_hurt", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "victorianVendor_defeat", + "actorRole": "victorianVendor", + "state": "defeat", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_victorianVendor_defeat_n_01", + "actor_victorianVendor_defeat_n_02", + "actor_victorianVendor_defeat_n_03", + "actor_victorianVendor_defeat_n_04", + "actor_victorianVendor_defeat_n_05", + "actor_victorianVendor_defeat_n_06", + "actor_victorianVendor_defeat_e_01", + "actor_victorianVendor_defeat_e_02", + "actor_victorianVendor_defeat_e_03", + "actor_victorianVendor_defeat_e_04", + "actor_victorianVendor_defeat_e_05", + "actor_victorianVendor_defeat_e_06", + "actor_victorianVendor_defeat_s_01", + "actor_victorianVendor_defeat_s_02", + "actor_victorianVendor_defeat_s_03", + "actor_victorianVendor_defeat_s_04", + "actor_victorianVendor_defeat_s_05", + "actor_victorianVendor_defeat_s_06", + "actor_victorianVendor_defeat_w_01", + "actor_victorianVendor_defeat_w_02", + "actor_victorianVendor_defeat_w_03", + "actor_victorianVendor_defeat_w_04", + "actor_victorianVendor_defeat_w_05", + "actor_victorianVendor_defeat_w_06" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 56 + }, + "authoritativeEventMarker": "entityDied", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "victorianVendor_defeat", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "improperSearchDaemon_pursuit", + "actorRole": "improperSearchDaemon", + "state": "pursuit", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_improperSearchDaemon_pursuit_n_01", + "actor_improperSearchDaemon_pursuit_n_02", + "actor_improperSearchDaemon_pursuit_n_03", + "actor_improperSearchDaemon_pursuit_n_04", + "actor_improperSearchDaemon_pursuit_n_05", + "actor_improperSearchDaemon_pursuit_n_06", + "actor_improperSearchDaemon_pursuit_e_01", + "actor_improperSearchDaemon_pursuit_e_02", + "actor_improperSearchDaemon_pursuit_e_03", + "actor_improperSearchDaemon_pursuit_e_04", + "actor_improperSearchDaemon_pursuit_e_05", + "actor_improperSearchDaemon_pursuit_e_06", + "actor_improperSearchDaemon_pursuit_s_01", + "actor_improperSearchDaemon_pursuit_s_02", + "actor_improperSearchDaemon_pursuit_s_03", + "actor_improperSearchDaemon_pursuit_s_04", + "actor_improperSearchDaemon_pursuit_s_05", + "actor_improperSearchDaemon_pursuit_s_06", + "actor_improperSearchDaemon_pursuit_w_01", + "actor_improperSearchDaemon_pursuit_w_02", + "actor_improperSearchDaemon_pursuit_w_03", + "actor_improperSearchDaemon_pursuit_w_04", + "actor_improperSearchDaemon_pursuit_w_05", + "actor_improperSearchDaemon_pursuit_w_06" + ], + "framesPerSecond": 14, + "loop": true, + "anchor": { + "x": 40, + "y": 70 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "loop", + "reducedMotionClip": "improperSearchDaemon_pursuit", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "improperSearchDaemon_queryTelegraph", + "actorRole": "improperSearchDaemon", + "state": "queryTelegraph", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_improperSearchDaemon_queryTelegraph_n_01", + "actor_improperSearchDaemon_queryTelegraph_n_02", + "actor_improperSearchDaemon_queryTelegraph_n_03", + "actor_improperSearchDaemon_queryTelegraph_n_04", + "actor_improperSearchDaemon_queryTelegraph_n_05", + "actor_improperSearchDaemon_queryTelegraph_n_06", + "actor_improperSearchDaemon_queryTelegraph_e_01", + "actor_improperSearchDaemon_queryTelegraph_e_02", + "actor_improperSearchDaemon_queryTelegraph_e_03", + "actor_improperSearchDaemon_queryTelegraph_e_04", + "actor_improperSearchDaemon_queryTelegraph_e_05", + "actor_improperSearchDaemon_queryTelegraph_e_06", + "actor_improperSearchDaemon_queryTelegraph_s_01", + "actor_improperSearchDaemon_queryTelegraph_s_02", + "actor_improperSearchDaemon_queryTelegraph_s_03", + "actor_improperSearchDaemon_queryTelegraph_s_04", + "actor_improperSearchDaemon_queryTelegraph_s_05", + "actor_improperSearchDaemon_queryTelegraph_s_06", + "actor_improperSearchDaemon_queryTelegraph_w_01", + "actor_improperSearchDaemon_queryTelegraph_w_02", + "actor_improperSearchDaemon_queryTelegraph_w_03", + "actor_improperSearchDaemon_queryTelegraph_w_04", + "actor_improperSearchDaemon_queryTelegraph_w_05", + "actor_improperSearchDaemon_queryTelegraph_w_06" + ], + "framesPerSecond": 8, + "loop": false, + "anchor": { + "x": 40, + "y": 70 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "improperSearchDaemon_queryTelegraph", + "audioCue": "daemon_query", + "vfxCue": "none" + }, + { + "clipId": "improperSearchDaemon_queryResolve", + "actorRole": "improperSearchDaemon", + "state": "queryResolve", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_improperSearchDaemon_queryResolve_n_01", + "actor_improperSearchDaemon_queryResolve_n_02", + "actor_improperSearchDaemon_queryResolve_e_01", + "actor_improperSearchDaemon_queryResolve_e_02", + "actor_improperSearchDaemon_queryResolve_s_01", + "actor_improperSearchDaemon_queryResolve_s_02", + "actor_improperSearchDaemon_queryResolve_w_01", + "actor_improperSearchDaemon_queryResolve_w_02" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 40, + "y": 70 + }, + "authoritativeEventMarker": "playerDamaged", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "improperSearchDaemon_queryResolve", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "improperSearchDaemon_dashTelegraph", + "actorRole": "improperSearchDaemon", + "state": "dashTelegraph", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_improperSearchDaemon_dashTelegraph_n_01", + "actor_improperSearchDaemon_dashTelegraph_n_02", + "actor_improperSearchDaemon_dashTelegraph_n_03", + "actor_improperSearchDaemon_dashTelegraph_n_04", + "actor_improperSearchDaemon_dashTelegraph_n_05", + "actor_improperSearchDaemon_dashTelegraph_n_06", + "actor_improperSearchDaemon_dashTelegraph_e_01", + "actor_improperSearchDaemon_dashTelegraph_e_02", + "actor_improperSearchDaemon_dashTelegraph_e_03", + "actor_improperSearchDaemon_dashTelegraph_e_04", + "actor_improperSearchDaemon_dashTelegraph_e_05", + "actor_improperSearchDaemon_dashTelegraph_e_06", + "actor_improperSearchDaemon_dashTelegraph_s_01", + "actor_improperSearchDaemon_dashTelegraph_s_02", + "actor_improperSearchDaemon_dashTelegraph_s_03", + "actor_improperSearchDaemon_dashTelegraph_s_04", + "actor_improperSearchDaemon_dashTelegraph_s_05", + "actor_improperSearchDaemon_dashTelegraph_s_06", + "actor_improperSearchDaemon_dashTelegraph_w_01", + "actor_improperSearchDaemon_dashTelegraph_w_02", + "actor_improperSearchDaemon_dashTelegraph_w_03", + "actor_improperSearchDaemon_dashTelegraph_w_04", + "actor_improperSearchDaemon_dashTelegraph_w_05", + "actor_improperSearchDaemon_dashTelegraph_w_06" + ], + "framesPerSecond": 10, + "loop": false, + "anchor": { + "x": 40, + "y": 70 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "improperSearchDaemon_dashTelegraph", + "audioCue": "daemon_dash", + "vfxCue": "none" + }, + { + "clipId": "improperSearchDaemon_dash", + "actorRole": "improperSearchDaemon", + "state": "dash", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_improperSearchDaemon_dash_n_01", + "actor_improperSearchDaemon_dash_n_02", + "actor_improperSearchDaemon_dash_n_03", + "actor_improperSearchDaemon_dash_n_04", + "actor_improperSearchDaemon_dash_n_05", + "actor_improperSearchDaemon_dash_n_06", + "actor_improperSearchDaemon_dash_e_01", + "actor_improperSearchDaemon_dash_e_02", + "actor_improperSearchDaemon_dash_e_03", + "actor_improperSearchDaemon_dash_e_04", + "actor_improperSearchDaemon_dash_e_05", + "actor_improperSearchDaemon_dash_e_06", + "actor_improperSearchDaemon_dash_s_01", + "actor_improperSearchDaemon_dash_s_02", + "actor_improperSearchDaemon_dash_s_03", + "actor_improperSearchDaemon_dash_s_04", + "actor_improperSearchDaemon_dash_s_05", + "actor_improperSearchDaemon_dash_s_06", + "actor_improperSearchDaemon_dash_w_01", + "actor_improperSearchDaemon_dash_w_02", + "actor_improperSearchDaemon_dash_w_03", + "actor_improperSearchDaemon_dash_w_04", + "actor_improperSearchDaemon_dash_w_05", + "actor_improperSearchDaemon_dash_w_06" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 40, + "y": 70 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "improperSearchDaemon_dash", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "improperSearchDaemon_recover", + "actorRole": "improperSearchDaemon", + "state": "recover", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_improperSearchDaemon_recover_n_01", + "actor_improperSearchDaemon_recover_n_02", + "actor_improperSearchDaemon_recover_n_03", + "actor_improperSearchDaemon_recover_n_04", + "actor_improperSearchDaemon_recover_e_01", + "actor_improperSearchDaemon_recover_e_02", + "actor_improperSearchDaemon_recover_e_03", + "actor_improperSearchDaemon_recover_e_04", + "actor_improperSearchDaemon_recover_s_01", + "actor_improperSearchDaemon_recover_s_02", + "actor_improperSearchDaemon_recover_s_03", + "actor_improperSearchDaemon_recover_s_04", + "actor_improperSearchDaemon_recover_w_01", + "actor_improperSearchDaemon_recover_w_02", + "actor_improperSearchDaemon_recover_w_03", + "actor_improperSearchDaemon_recover_w_04" + ], + "framesPerSecond": 4, + "loop": false, + "anchor": { + "x": 40, + "y": 70 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "hurt", + "defeat" + ], + "blendOrTransition": "returnToLocomotion", + "reducedMotionClip": "improperSearchDaemon_recover", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "improperSearchDaemon_hurt", + "actorRole": "improperSearchDaemon", + "state": "hurt", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_improperSearchDaemon_hurt_n_01", + "actor_improperSearchDaemon_hurt_n_02", + "actor_improperSearchDaemon_hurt_n_03", + "actor_improperSearchDaemon_hurt_e_01", + "actor_improperSearchDaemon_hurt_e_02", + "actor_improperSearchDaemon_hurt_e_03", + "actor_improperSearchDaemon_hurt_s_01", + "actor_improperSearchDaemon_hurt_s_02", + "actor_improperSearchDaemon_hurt_s_03", + "actor_improperSearchDaemon_hurt_w_01", + "actor_improperSearchDaemon_hurt_w_02", + "actor_improperSearchDaemon_hurt_w_03" + ], + "framesPerSecond": 20, + "loop": false, + "anchor": { + "x": 40, + "y": 70 + }, + "authoritativeEventMarker": "entityDamaged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "improperSearchDaemon_hurt", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "improperSearchDaemon_defeat", + "actorRole": "improperSearchDaemon", + "state": "defeat", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_improperSearchDaemon_defeat_n_01", + "actor_improperSearchDaemon_defeat_n_02", + "actor_improperSearchDaemon_defeat_n_03", + "actor_improperSearchDaemon_defeat_n_04", + "actor_improperSearchDaemon_defeat_n_05", + "actor_improperSearchDaemon_defeat_n_06", + "actor_improperSearchDaemon_defeat_e_01", + "actor_improperSearchDaemon_defeat_e_02", + "actor_improperSearchDaemon_defeat_e_03", + "actor_improperSearchDaemon_defeat_e_04", + "actor_improperSearchDaemon_defeat_e_05", + "actor_improperSearchDaemon_defeat_e_06", + "actor_improperSearchDaemon_defeat_s_01", + "actor_improperSearchDaemon_defeat_s_02", + "actor_improperSearchDaemon_defeat_s_03", + "actor_improperSearchDaemon_defeat_s_04", + "actor_improperSearchDaemon_defeat_s_05", + "actor_improperSearchDaemon_defeat_s_06", + "actor_improperSearchDaemon_defeat_w_01", + "actor_improperSearchDaemon_defeat_w_02", + "actor_improperSearchDaemon_defeat_w_03", + "actor_improperSearchDaemon_defeat_w_04", + "actor_improperSearchDaemon_defeat_w_05", + "actor_improperSearchDaemon_defeat_w_06" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 40, + "y": 70 + }, + "authoritativeEventMarker": "eliteDefeated", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "improperSearchDaemon_defeat", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "algorithmicModerate_safetyRationale", + "actorRole": "algorithmicModerate", + "state": "safetyRationale", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_algorithmicModerate_safetyRationale_n_01", + "actor_algorithmicModerate_safetyRationale_n_02", + "actor_algorithmicModerate_safetyRationale_n_03", + "actor_algorithmicModerate_safetyRationale_n_04", + "actor_algorithmicModerate_safetyRationale_n_05", + "actor_algorithmicModerate_safetyRationale_n_06", + "actor_algorithmicModerate_safetyRationale_e_01", + "actor_algorithmicModerate_safetyRationale_e_02", + "actor_algorithmicModerate_safetyRationale_e_03", + "actor_algorithmicModerate_safetyRationale_e_04", + "actor_algorithmicModerate_safetyRationale_e_05", + "actor_algorithmicModerate_safetyRationale_e_06", + "actor_algorithmicModerate_safetyRationale_s_01", + "actor_algorithmicModerate_safetyRationale_s_02", + "actor_algorithmicModerate_safetyRationale_s_03", + "actor_algorithmicModerate_safetyRationale_s_04", + "actor_algorithmicModerate_safetyRationale_s_05", + "actor_algorithmicModerate_safetyRationale_s_06", + "actor_algorithmicModerate_safetyRationale_w_01", + "actor_algorithmicModerate_safetyRationale_w_02", + "actor_algorithmicModerate_safetyRationale_w_03", + "actor_algorithmicModerate_safetyRationale_w_04", + "actor_algorithmicModerate_safetyRationale_w_05", + "actor_algorithmicModerate_safetyRationale_w_06" + ], + "framesPerSecond": 8, + "loop": false, + "anchor": { + "x": 48, + "y": 84 + }, + "authoritativeEventMarker": "bossAttackStarted", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "algorithmicModerate_safetyRationale", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "algorithmicModerate_narrowTailoring", + "actorRole": "algorithmicModerate", + "state": "narrowTailoring", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_algorithmicModerate_narrowTailoring_n_01", + "actor_algorithmicModerate_narrowTailoring_n_02", + "actor_algorithmicModerate_narrowTailoring_n_03", + "actor_algorithmicModerate_narrowTailoring_n_04", + "actor_algorithmicModerate_narrowTailoring_n_05", + "actor_algorithmicModerate_narrowTailoring_n_06", + "actor_algorithmicModerate_narrowTailoring_e_01", + "actor_algorithmicModerate_narrowTailoring_e_02", + "actor_algorithmicModerate_narrowTailoring_e_03", + "actor_algorithmicModerate_narrowTailoring_e_04", + "actor_algorithmicModerate_narrowTailoring_e_05", + "actor_algorithmicModerate_narrowTailoring_e_06", + "actor_algorithmicModerate_narrowTailoring_s_01", + "actor_algorithmicModerate_narrowTailoring_s_02", + "actor_algorithmicModerate_narrowTailoring_s_03", + "actor_algorithmicModerate_narrowTailoring_s_04", + "actor_algorithmicModerate_narrowTailoring_s_05", + "actor_algorithmicModerate_narrowTailoring_s_06", + "actor_algorithmicModerate_narrowTailoring_w_01", + "actor_algorithmicModerate_narrowTailoring_w_02", + "actor_algorithmicModerate_narrowTailoring_w_03", + "actor_algorithmicModerate_narrowTailoring_w_04", + "actor_algorithmicModerate_narrowTailoring_w_05", + "actor_algorithmicModerate_narrowTailoring_w_06" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 48, + "y": 84 + }, + "authoritativeEventMarker": "bossAttackStarted", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "algorithmicModerate_narrowTailoring", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "algorithmicModerate_temporaryOrder", + "actorRole": "algorithmicModerate", + "state": "temporaryOrder", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_algorithmicModerate_temporaryOrder_n_01", + "actor_algorithmicModerate_temporaryOrder_n_02", + "actor_algorithmicModerate_temporaryOrder_n_03", + "actor_algorithmicModerate_temporaryOrder_n_04", + "actor_algorithmicModerate_temporaryOrder_n_05", + "actor_algorithmicModerate_temporaryOrder_n_06", + "actor_algorithmicModerate_temporaryOrder_n_07", + "actor_algorithmicModerate_temporaryOrder_n_08", + "actor_algorithmicModerate_temporaryOrder_e_01", + "actor_algorithmicModerate_temporaryOrder_e_02", + "actor_algorithmicModerate_temporaryOrder_e_03", + "actor_algorithmicModerate_temporaryOrder_e_04", + "actor_algorithmicModerate_temporaryOrder_e_05", + "actor_algorithmicModerate_temporaryOrder_e_06", + "actor_algorithmicModerate_temporaryOrder_e_07", + "actor_algorithmicModerate_temporaryOrder_e_08", + "actor_algorithmicModerate_temporaryOrder_s_01", + "actor_algorithmicModerate_temporaryOrder_s_02", + "actor_algorithmicModerate_temporaryOrder_s_03", + "actor_algorithmicModerate_temporaryOrder_s_04", + "actor_algorithmicModerate_temporaryOrder_s_05", + "actor_algorithmicModerate_temporaryOrder_s_06", + "actor_algorithmicModerate_temporaryOrder_s_07", + "actor_algorithmicModerate_temporaryOrder_s_08", + "actor_algorithmicModerate_temporaryOrder_w_01", + "actor_algorithmicModerate_temporaryOrder_w_02", + "actor_algorithmicModerate_temporaryOrder_w_03", + "actor_algorithmicModerate_temporaryOrder_w_04", + "actor_algorithmicModerate_temporaryOrder_w_05", + "actor_algorithmicModerate_temporaryOrder_w_06", + "actor_algorithmicModerate_temporaryOrder_w_07", + "actor_algorithmicModerate_temporaryOrder_w_08" + ], + "framesPerSecond": 10, + "loop": false, + "anchor": { + "x": 48, + "y": 84 + }, + "authoritativeEventMarker": "bossAttackStarted", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "algorithmicModerate_temporaryOrder", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "algorithmicModerate_independentReview", + "actorRole": "algorithmicModerate", + "state": "independentReview", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_algorithmicModerate_independentReview_n_01", + "actor_algorithmicModerate_independentReview_n_02", + "actor_algorithmicModerate_independentReview_n_03", + "actor_algorithmicModerate_independentReview_n_04", + "actor_algorithmicModerate_independentReview_n_05", + "actor_algorithmicModerate_independentReview_n_06", + "actor_algorithmicModerate_independentReview_n_07", + "actor_algorithmicModerate_independentReview_n_08", + "actor_algorithmicModerate_independentReview_e_01", + "actor_algorithmicModerate_independentReview_e_02", + "actor_algorithmicModerate_independentReview_e_03", + "actor_algorithmicModerate_independentReview_e_04", + "actor_algorithmicModerate_independentReview_e_05", + "actor_algorithmicModerate_independentReview_e_06", + "actor_algorithmicModerate_independentReview_e_07", + "actor_algorithmicModerate_independentReview_e_08", + "actor_algorithmicModerate_independentReview_s_01", + "actor_algorithmicModerate_independentReview_s_02", + "actor_algorithmicModerate_independentReview_s_03", + "actor_algorithmicModerate_independentReview_s_04", + "actor_algorithmicModerate_independentReview_s_05", + "actor_algorithmicModerate_independentReview_s_06", + "actor_algorithmicModerate_independentReview_s_07", + "actor_algorithmicModerate_independentReview_s_08", + "actor_algorithmicModerate_independentReview_w_01", + "actor_algorithmicModerate_independentReview_w_02", + "actor_algorithmicModerate_independentReview_w_03", + "actor_algorithmicModerate_independentReview_w_04", + "actor_algorithmicModerate_independentReview_w_05", + "actor_algorithmicModerate_independentReview_w_06", + "actor_algorithmicModerate_independentReview_w_07", + "actor_algorithmicModerate_independentReview_w_08" + ], + "framesPerSecond": 8, + "loop": false, + "anchor": { + "x": 48, + "y": 84 + }, + "authoritativeEventMarker": "bossAttackStarted", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "telegraph", + "reducedMotionClip": "algorithmicModerate_independentReview", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "algorithmicModerate_phaseTransition", + "actorRole": "algorithmicModerate", + "state": "phaseTransition", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_algorithmicModerate_phaseTransition_n_01", + "actor_algorithmicModerate_phaseTransition_n_02", + "actor_algorithmicModerate_phaseTransition_n_03", + "actor_algorithmicModerate_phaseTransition_n_04", + "actor_algorithmicModerate_phaseTransition_n_05", + "actor_algorithmicModerate_phaseTransition_n_06", + "actor_algorithmicModerate_phaseTransition_e_01", + "actor_algorithmicModerate_phaseTransition_e_02", + "actor_algorithmicModerate_phaseTransition_e_03", + "actor_algorithmicModerate_phaseTransition_e_04", + "actor_algorithmicModerate_phaseTransition_e_05", + "actor_algorithmicModerate_phaseTransition_e_06", + "actor_algorithmicModerate_phaseTransition_s_01", + "actor_algorithmicModerate_phaseTransition_s_02", + "actor_algorithmicModerate_phaseTransition_s_03", + "actor_algorithmicModerate_phaseTransition_s_04", + "actor_algorithmicModerate_phaseTransition_s_05", + "actor_algorithmicModerate_phaseTransition_s_06", + "actor_algorithmicModerate_phaseTransition_w_01", + "actor_algorithmicModerate_phaseTransition_w_02", + "actor_algorithmicModerate_phaseTransition_w_03", + "actor_algorithmicModerate_phaseTransition_w_04", + "actor_algorithmicModerate_phaseTransition_w_05", + "actor_algorithmicModerate_phaseTransition_w_06" + ], + "framesPerSecond": 8, + "loop": false, + "anchor": { + "x": 48, + "y": 84 + }, + "authoritativeEventMarker": "bossPhaseChanged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "algorithmicModerate_phaseTransition", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "algorithmicModerate_stagger", + "actorRole": "algorithmicModerate", + "state": "stagger", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_algorithmicModerate_stagger_n_01", + "actor_algorithmicModerate_stagger_n_02", + "actor_algorithmicModerate_stagger_n_03", + "actor_algorithmicModerate_stagger_e_01", + "actor_algorithmicModerate_stagger_e_02", + "actor_algorithmicModerate_stagger_e_03", + "actor_algorithmicModerate_stagger_s_01", + "actor_algorithmicModerate_stagger_s_02", + "actor_algorithmicModerate_stagger_s_03", + "actor_algorithmicModerate_stagger_w_01", + "actor_algorithmicModerate_stagger_w_02", + "actor_algorithmicModerate_stagger_w_03" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 48, + "y": 84 + }, + "authoritativeEventMarker": "entityDamaged", + "cancelWindows": [ + "defeat" + ], + "blendOrTransition": "cutOnEvent", + "reducedMotionClip": "algorithmicModerate_stagger", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "algorithmicModerate_defeat", + "actorRole": "algorithmicModerate", + "state": "defeat", + "directions": [ + "n", + "e", + "s", + "w" + ], + "frameIds": [ + "actor_algorithmicModerate_defeat_n_01", + "actor_algorithmicModerate_defeat_n_02", + "actor_algorithmicModerate_defeat_n_03", + "actor_algorithmicModerate_defeat_n_04", + "actor_algorithmicModerate_defeat_n_05", + "actor_algorithmicModerate_defeat_n_06", + "actor_algorithmicModerate_defeat_e_01", + "actor_algorithmicModerate_defeat_e_02", + "actor_algorithmicModerate_defeat_e_03", + "actor_algorithmicModerate_defeat_e_04", + "actor_algorithmicModerate_defeat_e_05", + "actor_algorithmicModerate_defeat_e_06", + "actor_algorithmicModerate_defeat_s_01", + "actor_algorithmicModerate_defeat_s_02", + "actor_algorithmicModerate_defeat_s_03", + "actor_algorithmicModerate_defeat_s_04", + "actor_algorithmicModerate_defeat_s_05", + "actor_algorithmicModerate_defeat_s_06", + "actor_algorithmicModerate_defeat_w_01", + "actor_algorithmicModerate_defeat_w_02", + "actor_algorithmicModerate_defeat_w_03", + "actor_algorithmicModerate_defeat_w_04", + "actor_algorithmicModerate_defeat_w_05", + "actor_algorithmicModerate_defeat_w_06" + ], + "framesPerSecond": 10, + "loop": false, + "anchor": { + "x": 48, + "y": 84 + }, + "authoritativeEventMarker": "bossDefeated", + "cancelWindows": [], + "blendOrTransition": "terminal", + "reducedMotionClip": "algorithmicModerate_defeat", + "audioCue": "boss_defeated", + "vfxCue": "none" + }, + { + "clipId": "camera_operational_idle", + "actorRole": "camera", + "state": "operationalIdle", + "directions": [], + "frameIds": [ + "actor_camera_operationalIdle_none_01", + "actor_camera_operationalIdle_none_02", + "actor_camera_operationalIdle_none_03", + "actor_camera_operationalIdle_none_04" + ], + "framesPerSecond": 6, + "loop": true, + "anchor": { + "x": 32, + "y": 88 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [ + "camera_hit", + "camera_critical_enter", + "camera_destroy" + ], + "blendOrTransition": "textureEmissiveOnly", + "reducedMotionClip": "camera_operational_idle", + "audioCue": "none", + "vfxCue": "none" + }, + { + "clipId": "camera_hit", + "actorRole": "camera", + "state": "hit", + "directions": [], + "frameIds": [ + "actor_camera_hit_none_01", + "actor_camera_hit_none_02" + ], + "framesPerSecond": 16, + "loop": false, + "anchor": { + "x": 32, + "y": 88 + }, + "authoritativeEventMarker": "cameraIntegrityChanged", + "cancelWindows": [ + "camera_destroy" + ], + "blendOrTransition": "textureEmissiveOnly", + "reducedMotionClip": "camera_hit", + "audioCue": "camera_hit_01", + "vfxCue": "none" + }, + { + "clipId": "camera_critical_enter", + "actorRole": "camera", + "state": "criticalEnter", + "directions": [], + "frameIds": [ + "actor_camera_criticalEnter_none_01", + "actor_camera_criticalEnter_none_02", + "actor_camera_criticalEnter_none_03" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 88 + }, + "authoritativeEventMarker": "cameraIntegrityChanged", + "cancelWindows": [ + "camera_destroy" + ], + "blendOrTransition": "textureEmissiveOnly", + "reducedMotionClip": "camera_critical_enter", + "audioCue": "camera_critical", + "vfxCue": "none" + }, + { + "clipId": "camera_destroy", + "actorRole": "camera", + "state": "destroy", + "directions": [], + "frameIds": [ + "actor_camera_destroy_none_01", + "actor_camera_destroy_none_02", + "actor_camera_destroy_none_03", + "actor_camera_destroy_none_04" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 88 + }, + "authoritativeEventMarker": "cameraDestroyed", + "cancelWindows": [], + "blendOrTransition": "textureEmissiveOnly", + "reducedMotionClip": "camera_destroy", + "audioCue": "camera_destroy", + "vfxCue": "none" + }, + { + "clipId": "camera_field_off", + "actorRole": "camera", + "state": "fieldOff", + "directions": [], + "frameIds": [ + "actor_camera_fieldOff_none_01" + ], + "framesPerSecond": 12, + "loop": false, + "anchor": { + "x": 32, + "y": 88 + }, + "authoritativeEventMarker": "cameraDestroyed", + "cancelWindows": [], + "blendOrTransition": "immediateOnEvent", + "reducedMotionClip": "camera_field_off", + "audioCue": "camera_field_off", + "vfxCue": "none" + }, + { + "clipId": "camera_destroyed_idle", + "actorRole": "camera", + "state": "destroyedIdle", + "directions": [], + "frameIds": [ + "actor_camera_destroyedIdle_none_01", + "actor_camera_destroyedIdle_none_02" + ], + "framesPerSecond": 4, + "loop": true, + "anchor": { + "x": 32, + "y": 88 + }, + "authoritativeEventMarker": "none", + "cancelWindows": [], + "blendOrTransition": "textureEmissiveOnly", + "reducedMotionClip": "camera_destroyed_idle", + "audioCue": "none", + "vfxCue": "none" + } + ] +} diff --git a/docs/review/camera-clips/source/critical.png b/docs/review/camera-clips/source/critical.png new file mode 100644 index 00000000..a1495fd4 Binary files /dev/null and b/docs/review/camera-clips/source/critical.png differ diff --git a/docs/review/camera-clips/source/damaged.png b/docs/review/camera-clips/source/damaged.png new file mode 100644 index 00000000..3255642f Binary files /dev/null and b/docs/review/camera-clips/source/damaged.png differ diff --git a/docs/review/camera-clips/source/destroyed.png b/docs/review/camera-clips/source/destroyed.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/docs/review/camera-clips/source/destroyed.png differ diff --git a/docs/review/camera-clips/source/head-mask.png b/docs/review/camera-clips/source/head-mask.png new file mode 100644 index 00000000..79232f37 Binary files /dev/null and b/docs/review/camera-clips/source/head-mask.png differ diff --git a/docs/review/camera-clips/source/intact.png b/docs/review/camera-clips/source/intact.png new file mode 100644 index 00000000..5f240f02 Binary files /dev/null and b/docs/review/camera-clips/source/intact.png differ diff --git a/docs/review/camera-damage-markers/comparison-grayscale.png b/docs/review/camera-damage-markers/comparison-grayscale.png new file mode 100644 index 00000000..85d0407b Binary files /dev/null and b/docs/review/camera-damage-markers/comparison-grayscale.png differ diff --git a/docs/review/camera-damage-markers/comparison.png b/docs/review/camera-damage-markers/comparison.png new file mode 100644 index 00000000..3ec5cd73 Binary files /dev/null and b/docs/review/camera-damage-markers/comparison.png differ diff --git a/docs/review/camera-damage-markers/review.md b/docs/review/camera-damage-markers/review.md new file mode 100644 index 00000000..ccbd396c --- /dev/null +++ b/docs/review/camera-damage-markers/review.md @@ -0,0 +1,15 @@ +# Camera damage-stage markers — BP-004 + +Specification: SS-specs d640197ffc13b051882df5178d18035a4e0898e4. + +The shipping WorldRenderer now shows one ivory notch on a dark backing at camera integrity 2, two at integrity 1, and none at integrity 3 or 0. This is damage-stage information, distinct from the targeted HUD remaining-integrity slots. Markers follow the camera ground anchor, do not animate under Reduced Motion, reuse their node across damage states, and clear when the camera is removed or destroyed. Captain emitters use a separate rendering path. + +## Evidence + +Xcode result Test-SSRuntime-2026.10.14_10-57-31--0700.xcresult: Passed, 87 tests, zero failures or skips; 89 executions including dynamic parameters. iPhone 17 Pro simulator, iOS 26.5. Includes cameraDamageNotchesPersistAndClearWithIntegrity and benchmark captures. Four targeted ContractVersionsTests / AssetCatalogTests also passed. Local exact pinned parity passed for all 21 contract/fixture JSON files, with only the documented catalog specificationCommit exception. No physical-device testing performed. + +comparison.png contains four actual renderer captures reduced from 2112x978 to 704x326 logical size. comparison-grayscale.png uses the same captures. Visual inspection confirms the one/two notches remain distinguishable in grayscale at this review size. This is an initial sizing candidate, not accessibility acceptance or a dense-combat visibility result. + +## Remaining benchmark gaps + +Camera art is still four state candidates, not the six required animation clips. Pole pixels are not identical across source states. Damage art alone remains subtle. Character directional anatomy and full gait loops remain unaccepted. Building ground registration, environmental scale, repeated paving, contact shadows and legal/dense encounter evidence remain open. Increasing texture resolution cannot correct those composition or motion problems. Review candidates remain test-bundle assets; no production art admission is claimed. diff --git a/docs/review/camera-damage-markers/test-summary.json b/docs/review/camera-damage-markers/test-summary.json new file mode 100644 index 00000000..add3a585 --- /dev/null +++ b/docs/review/camera-damage-markers/test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 89, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792000720.931, + "passedTests" : 87, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792000651.103, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "22% of duration", + "text" : "1 longest test run with outlier durations exceeding 3.87s (three standard deviations)" + } + ], + "totalTestCount" : 87 +} diff --git a/docs/review/camera-registration/BP010-field-encounter-record.txt b/docs/review/camera-registration/BP010-field-encounter-record.txt new file mode 100644 index 00000000..c24eef19 --- /dev/null +++ b/docs/review/camera-registration/BP010-field-encounter-record.txt @@ -0,0 +1,7 @@ +Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. +tick=461, player=264,592, facing=s +enemies=2, projectiles=1, telegraphs=0 +Production GameScene/HUD/fog/ground/projection; painted neutral Player and complete Camera candidate family. +Same unedited snapshot across control/dark/paired and normal/Reduced Motion. +digest=3ef4396ad640181e63f716d717d117d262fd60d88480aa2f19e24f83d31d3a13; candidate source: docs/review/camera-clips. +Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. \ No newline at end of file diff --git a/docs/review/camera-registration/BP010-field-encounter-registration-coordinates.json b/docs/review/camera-registration/BP010-field-encounter-registration-coordinates.json new file mode 100644 index 00000000..4a674488 --- /dev/null +++ b/docs/review/camera-registration/BP010-field-encounter-registration-coordinates.json @@ -0,0 +1,19 @@ +[ + { + "fieldQ8" : [ + 128552, + 167702 + ], + "headingMilliDegrees" : 70000, + "mount" : [ + 496, + 672 + ], + "q8Scale" : 256, + "socket" : "cam-z02-d", + "targetQ8" : [ + 128377, + 168183 + ] + } +] \ No newline at end of file diff --git a/docs/review/camera-registration/BP010-field-encounter-registration.png b/docs/review/camera-registration/BP010-field-encounter-registration.png new file mode 100644 index 00000000..c91d64ba Binary files /dev/null and b/docs/review/camera-registration/BP010-field-encounter-registration.png differ diff --git a/docs/review/camera-registration/README.md b/docs/review/camera-registration/README.md new file mode 100644 index 00000000..28d28c14 --- /dev/null +++ b/docs/review/camera-registration/README.md @@ -0,0 +1,25 @@ +# Camera registration evidence — BP-004/BP-007/BP-010 + +## Observed + +The seed-1 encounter at tick 461 now records mount (M, cyan), target (T, magenta), and field emitter (F, yellow) independently in the actual GameScene. The plain captures remain separate; the diagnostic overlay is test-only. The pole base visibly meets M. The field apex meets F. T and F are close but distinct. + +The visible socket cam-z02-d has heading 70000 millidegrees. Exact coordinates: + +| Landmark | World coordinates | Raw Q8 | +|---|---|---| +| Mount | (496, 672) | integer socket position | +| Target | (501.47265625, 656.96484375) | (128377, 168183) | +| Field | (502.15625, 655.0859375) | (128552, 167702) | + +These values follow civic-seam-arena-004's local forward offsets: target 16 units and field 18 units, transformed by CameraPlacement.offsetPoint using the socket heading and fixed-point rounding. The presentation snapshot preserves fieldOrigin; CameraFieldGeometry uses its fractional coordinates. Assertions compare the rendered geometry key against the authoritative field point. Capture and overlay leave the simulation digest unchanged; serialized commands replay to the same digest. + +## Disposition + +The observed mount-to-apex gap is explained by the existing contract, not a misplaced simulation emitter. Do not translate the Camera or detection geometry merely to remove this gap. This evidence does not establish optical-head registration: an elevated optical head is not itself a ground-plane point, and no authored projection of that head has been supplied. A production solution still needs the shared projection/source landmarks and visual review required by BP-007. No new beam connector, housing rotation, or target behavior is selected here. + +The scene still contains legacy opaque building backdrops, inconsistent environment scale, and the conspicuous Player border. This diagnostic is not the approved benchmark scene and does not admit the candidate artwork. Full animation, environment replacement, field readability in motion and device acceptance remain open. + +## Verification + +Xcode Test-SSRuntime-2026.10.14_22-55-32--0700.xcresult: 106 test executions, no failures; existing EnvironmentLibrary nonthrowing-try warning. `swift test --disable-sandbox --filter CameraPresentationTests`: 3 passed, exit 0. No core implementation or specification contract changed. The earlier full-core result is not represented as a fresh full-suite run. diff --git a/docs/review/camera-registration/core-tests.log b/docs/review/camera-registration/core-tests.log new file mode 100644 index 00000000..d3fe19c5 --- /dev/null +++ b/docs/review/camera-registration/core-tests.log @@ -0,0 +1,25 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.78s) +Test Suite 'Selected tests' started at 2026-10-14 22:55:48.280. +Test Suite 'SSRuntimePackageTests.xctest' started at 2026-10-14 22:55:48.284. +Test Suite 'SSRuntimePackageTests.xctest' passed at 2026-10-14 22:55:48.284. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds +Test Suite 'Selected tests' passed at 2026-10-14 22:55:48.284. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.004) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite CameraPresentationTests started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 0.002 seconds. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 0.001 seconds. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 0.001 seconds. +✔ Suite CameraPresentationTests passed after 0.003 seconds. +✔ Test run with 3 tests in 1 suite passed after 0.004 seconds. diff --git a/docs/review/camera-resolution/comparison.png b/docs/review/camera-resolution/comparison.png new file mode 100644 index 00000000..c10e7625 Binary files /dev/null and b/docs/review/camera-resolution/comparison.png differ diff --git a/docs/review/camera-resolution/critical.png b/docs/review/camera-resolution/critical.png new file mode 100644 index 00000000..9609647c Binary files /dev/null and b/docs/review/camera-resolution/critical.png differ diff --git a/docs/review/camera-resolution/damaged.png b/docs/review/camera-resolution/damaged.png new file mode 100644 index 00000000..1d30687b Binary files /dev/null and b/docs/review/camera-resolution/damaged.png differ diff --git a/docs/review/camera-resolution/destroyed.png b/docs/review/camera-resolution/destroyed.png new file mode 100644 index 00000000..395fa468 Binary files /dev/null and b/docs/review/camera-resolution/destroyed.png differ diff --git a/docs/review/camera-resolution/export.py b/docs/review/camera-resolution/export.py new file mode 100644 index 00000000..14f3d785 --- /dev/null +++ b/docs/review/camera-resolution/export.py @@ -0,0 +1,26 @@ +from pathlib import Path +from PIL import Image,ImageDraw,ImageChops +import json,hashlib,sys +source=Path(sys.argv[1]); output=Path(sys.argv[2]); previous=Path(sys.argv[3]);output.mkdir(parents=True,exist_ok=True) +sheet=Image.open(source).convert('RGBA'); records=[];frames=[] +scale=468/658 +for i,name in enumerate(['intact','damaged','critical','destroyed']): + cell=sheet.crop((i*512,0,(i+1)*512,768)) + alpha=cell.getchannel('A').point(lambda a:0 if a<=32 else 255 if a>=240 else round((a-32)*255/208));cell.putalpha(alpha) + base=alpha.point(lambda a:255 if a>=128 else 0).crop((0,500,350,768)).getbbox();assert base + anchor=((base[0]+base[2])/2,500+base[3]);dx=192-scale*anchor[0];dy=528-scale*anchor[1] + frame=cell.transform((384,576),Image.Transform.AFFINE,(1/scale,0,-dx/scale,0,1/scale,-dy/scale),Image.Resampling.BICUBIC) + path=output/(name+'.png');frame.save(path);frames.append(frame) + records.append({'state':name,'sourceCell':[i*512,0,(i+1)*512,768],'sourceAnchor':anchor,'sourceScale':scale,'canvas':[384,576],'logicalCanvas':[64,96],'anchor':[192,528],'logicalAnchor':[32,88],'sha256':hashlib.sha256(path.read_bytes()).hexdigest()}) +plate=Image.new('RGB',(1088,870),'#343a3c');d=ImageDraw.Draw(plate) +for i,(frame,record) in enumerate(zip(frames,records)): + # Both exports sampled to the same rounded closer-view backing size. + old=Image.open(previous/(record['state']+'.png')).convert('RGBA') + for row,im in enumerate([old,frame]): + sample=im.resize((272,408),Image.Resampling.BILINEAR);plate.paste(sample,(i*272,row*435+25),sample) + d.text((i*272+8,row*435+8),record['state']+(' / current' if row==0 else ' / source re-export'),fill='white') +plate.save(output/'comparison.png') +(output/'registration.json').write_text(json.dumps({'sourceSha256':hashlib.sha256(source.read_bytes()).hexdigest(),'alphaRemap':'<=32 zero; >=240 opaque; linear between','status':'REVIEW_ONLY','states':records},indent=2)) +assert all(im.size==(384,576) for im in frames) +assert scale<1 # source is downsampled, never interpolated upward +print('Exported four source-derived 384x576 states; common scale',scale) diff --git a/docs/review/camera-resolution/intact.png b/docs/review/camera-resolution/intact.png new file mode 100644 index 00000000..b42f107c Binary files /dev/null and b/docs/review/camera-resolution/intact.png differ diff --git a/docs/review/camera-resolution/registration.json b/docs/review/camera-resolution/registration.json new file mode 100644 index 00000000..05f90833 --- /dev/null +++ b/docs/review/camera-resolution/registration.json @@ -0,0 +1,131 @@ +{ + "sourceSha256": "1177d7a6f75d7913016f94f6c3b99662a551ae2660b31584e70b9eea52815854", + "alphaRemap": "<=32 zero; >=240 opaque; linear between", + "status": "REVIEW_ONLY", + "states": [ + { + "state": "intact", + "sourceCell": [ + 0, + 0, + 512, + 768 + ], + "sourceAnchor": [ + 235.5, + 692 + ], + "sourceScale": 0.7112462006079028, + "canvas": [ + 384, + 576 + ], + "logicalCanvas": [ + 64, + 96 + ], + "anchor": [ + 192, + 528 + ], + "logicalAnchor": [ + 32, + 88 + ], + "sha256": "62bf8f36b74af8272b2ca446300f8d4d598a83618e4fd90724e736001ac46dd0" + }, + { + "state": "damaged", + "sourceCell": [ + 512, + 0, + 1024, + 768 + ], + "sourceAnchor": [ + 214.5, + 692 + ], + "sourceScale": 0.7112462006079028, + "canvas": [ + 384, + 576 + ], + "logicalCanvas": [ + 64, + 96 + ], + "anchor": [ + 192, + 528 + ], + "logicalAnchor": [ + 32, + 88 + ], + "sha256": "db82af993e76852f251cbca173a723d0a4c28cdfb2c95655074bf5f3d344d256" + }, + { + "state": "critical", + "sourceCell": [ + 1024, + 0, + 1536, + 768 + ], + "sourceAnchor": [ + 193.0, + 692 + ], + "sourceScale": 0.7112462006079028, + "canvas": [ + 384, + 576 + ], + "logicalCanvas": [ + 64, + 96 + ], + "anchor": [ + 192, + 528 + ], + "logicalAnchor": [ + 32, + 88 + ], + "sha256": "cc907513c233dce87c2c5074fc5b5ecfa8b4672c92fe0308ab21708c8e853f22" + }, + { + "state": "destroyed", + "sourceCell": [ + 1536, + 0, + 2048, + 768 + ], + "sourceAnchor": [ + 172.0, + 692 + ], + "sourceScale": 0.7112462006079028, + "canvas": [ + 384, + 576 + ], + "logicalCanvas": [ + 64, + 96 + ], + "anchor": [ + 192, + 528 + ], + "logicalAnchor": [ + 32, + 88 + ], + "sha256": "05d22ca2e09d52142ccc3c392f689b690c23cd49615b6878bcbcdf075cd052f9" + } + ] +} \ No newline at end of file diff --git a/docs/review/camera-resolution/review.md b/docs/review/camera-resolution/review.md new file mode 100644 index 00000000..a30d145a --- /dev/null +++ b/docs/review/camera-resolution/review.md @@ -0,0 +1,13 @@ +# BP-004/BP-007 camera source re-export + +Runtime base: 385a06f. Spec pin: 00ce027209e6c233bcdd35295f35f0b9bfb9bbe5. REVIEW ONLY; no shipping asset or clip migration. + +Four 384×576 RGBA exports come directly from the existing 2048×768 municipal state source, using uniform scale 468/658 (0.7112462). These are downsampled source cells, not enlarged 256×384 exports. The same alpha cleanup and source base registration are retained. Ground anchor becomes (192,528), equivalent to the existing logical (32,88) on a 64×96 canvas. No housing, material, damage design or pose was regenerated. + +The comparison shows old (top) and source re-export (bottom) at identical 272×408 output size, approximating the closer √2 framing at the current 3× backing scale. It is an offline sampling comparison, not a SpriteKit capture. Viewed at this size, the improvement is modest: edges and damage detail retain slightly more definition. The existing design remains intact. + +New exports provide about 1.41 source pixels per output pixel at that closer framing. Four RGBA8 canvases represent 3,538,944 raw bytes versus 1,572,864 for the previous four: 2.25× texels. These figures exclude atlas packing, mipmaps, compression and other GPU allocations, and are not measured residency. + +Remaining blockers: the permanent pole/base is not pixel-identical across the generated states; the six required clips and their distinct frames are incomplete; transition/interruption/Reduced Motion and actual-renderer visual acceptance are not established by this comparison. No physical-device testing occurred. Keep the new exports as candidates until a real-renderer comparison and complete camera delivery satisfy BP-004/BP-006. + +Reproduce: `python3 export.py source.png export-directory previous-directory`, where previous-directory contains intact.png, damaged.png, critical.png and destroyed.png from the original state study. Source SHA-256 and export hashes are in registration.json. Existing source prompt is copied to source-prompt.txt; generation used the built-in image tool in the earlier state study. This revision uses only the user's authorized deterministic cleanup/registration/export, with no new image-generation call. diff --git a/docs/review/camera-resolution/source-prompt.txt b/docs/review/camera-resolution/source-prompt.txt new file mode 100644 index 00000000..81aa3d52 --- /dev/null +++ b/docs/review/camera-resolution/source-prompt.txt @@ -0,0 +1,7 @@ +Use case: precise-object-edit. Input is the exact complete municipal surveillance camera approved for the current benchmark study: dark cast metal pole and round base, ivory cantilever arm with pendant ivory dome camera and dark lens underside, cyan tiny indicator. Produce a horizontal state sheet of EXACTLY FOUR copies in equal cells, aligned at identical pole ground anchors, identical scale, elevated three-quarter top-down viewpoint, lighting, materials and silhouette. Transparent background. No captions/text/grid/floor/shadows. +Change only the CAMERA HEAD damage condition between the four cells. The pole, sphere finial, mount arm, electrical box and base must remain visually identical and motionless in all four. Never add another housing or camera. Keep the head attached at the same mount location. +Cell1 intact: exact reference. +Cell2 damaged: one clear dark dent/crack in the ivory head shell with a small chipped edge; still mounted and functional; tiny indicator remains cyan. +Cell3 critical: two conspicuous separated breaks in the head shell, exposed dark inner assembly, damaged lens, remains attached. Readable even at small scale. No bloom, fire or smoke. +Cell4 destroyed: head dark, broken glass/lens and crushed shell, no illuminated indicator or cyan pixels, head stays attached to unchanged arm; no debris outside head, pole and base intact. +Damage must alter material silhouette/details, not merely change color. Preserve the same permanent structure pixel-for-pixel as closely as possible. This is a coherent damage progression of one object, not four alternate municipal housings. Restrained painterly finish exactly matching reference; crisp intentional details. diff --git a/docs/review/camera-runtime-candidates/BP004-candidate-integrity-0.png b/docs/review/camera-runtime-candidates/BP004-candidate-integrity-0.png new file mode 100644 index 00000000..900fd5a0 Binary files /dev/null and b/docs/review/camera-runtime-candidates/BP004-candidate-integrity-0.png differ diff --git a/docs/review/camera-runtime-candidates/BP004-candidate-integrity-1.png b/docs/review/camera-runtime-candidates/BP004-candidate-integrity-1.png new file mode 100644 index 00000000..e557cb64 Binary files /dev/null and b/docs/review/camera-runtime-candidates/BP004-candidate-integrity-1.png differ diff --git a/docs/review/camera-runtime-candidates/BP004-candidate-integrity-2.png b/docs/review/camera-runtime-candidates/BP004-candidate-integrity-2.png new file mode 100644 index 00000000..9a406771 Binary files /dev/null and b/docs/review/camera-runtime-candidates/BP004-candidate-integrity-2.png differ diff --git a/docs/review/camera-runtime-candidates/BP004-candidate-integrity-3.png b/docs/review/camera-runtime-candidates/BP004-candidate-integrity-3.png new file mode 100644 index 00000000..231edb35 Binary files /dev/null and b/docs/review/camera-runtime-candidates/BP004-candidate-integrity-3.png differ diff --git a/docs/review/camera-runtime-candidates/BP004-candidate-post-action-records.json b/docs/review/camera-runtime-candidates/BP004-candidate-post-action-records.json new file mode 100644 index 00000000..390c5f5f --- /dev/null +++ b/docs/review/camera-runtime-candidates/BP004-candidate-post-action-records.json @@ -0,0 +1,322 @@ +[ + { + "actualFrame" : "camera_operational_idle#1", + "displayTime" : 167299.93113933338, + "fieldPresent" : true, + "integrity" : 3, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_operational_idle#3", + "displayTime" : 167301.08894495838, + "fieldPresent" : true, + "integrity" : 3, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#1", + "displayTime" : 167301.24238937502, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#2", + "displayTime" : 167301.35788420838, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#2", + "displayTime" : 167301.43378558336, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 167301.50123037503, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 167301.56659983337, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 167301.58333333337, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 167301.60000000003, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 167301.6166666667, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 167301.63333333336, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 167301.65000000002, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 167301.66666666672, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 167301.68333333338, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 167301.70000000004, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 167301.7166666667, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 167301.73333333337, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 167301.75000000003, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 167301.76666666669, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 167301.84161354171, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 167301.8666666667, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 167301.88333333336, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 167301.90000000002, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 167301.91666666672, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 167301.93333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 167301.95000000004, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 167301.9666666667, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 167301.98333333337, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 167302.00000000003, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 167302.01666666669, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 167302.03333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 167302.05000000005, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 167302.06666666671, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 167302.08333333337, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 167302.10000000003, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 167302.1166666667, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 167302.13333333336, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 167302.15000000002, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 167302.16666666672, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroyed_idle#2", + "displayTime" : 167302.18333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + } +] \ No newline at end of file diff --git a/docs/review/camera-runtime-candidates/README.md b/docs/review/camera-runtime-candidates/README.md new file mode 100644 index 00000000..7f30c473 --- /dev/null +++ b/docs/review/camera-runtime-candidates/README.md @@ -0,0 +1,23 @@ +# BP-004 camera candidates through real SpriteKit + +The complete candidate family is now injectable through the real SpriteLibrary/WorldRenderer review path. Six clips must all have the admitted frame counts before any texture cache is modified. Timing, anchors, integrity priority, repeat suppression and Reduced Motion use the same code as shipping art. The candidate path suppresses the legacy housing and renders one complete-device sprite. Production admission/catalogs remain unchanged; images belong to the test target. + +## Verified app evidence + +Xcode result Test-SSRuntime-2026.10.14_21-42-26--0700.xcresult: 103 executions, zero failures. Existing nonthrowing-try warning remains. Tests include incomplete-family rejection without partial mutation; same node across integrity changes; response interruption and repeat suppression; immediate field removal; terminal texture identity and cancellation under Reduced Motion. + +A presented SKScene uses ordinary SpriteKit callbacks. Its 40 post-action observations identify actual candidate texture objects. Hit exposes both frames, critical-entry all three, destruction all four and then destroyed-idle's terminal frame. Idle observes frames 1 and 3 only, so this capture does not demonstrate every idle hold or a full loop seam. Camera position stays (640,256). Field is absent in every integrity-zero observation. Four actual node captures are 192×288 pixels for a 64×96 logical canvas at 3×. They visibly retain one stable mount and progressively damaged head. + +This is a scripted presentation-snapshot fixture, not an authoritative combat encounter. Node captures exclude HUD and runtime damage-notch siblings. Native-size full composition, actual combat damage/interruption, all idle holds, Reduced Motion images, Captain distinction, dense-scene performance and production admission remain open. No physical-device testing occurred. + +## Core verification status + +The first `swift test` reported all 773 tests across 109 suites passing after 631.544 seconds, but exited 1 because manifest evaluation also emitted `sandbox-exec: sandbox_apply: Operation not permitted`. Preserve that mixed result; it is not a clean command pass. core-initial.log contains the evidence. + +A new `swift test --disable-sandbox` run is in progress at this checkpoint (exec session 56814; /private/tmp/ss-camera-core-retry.log). Compilation completed without the manifest sandbox error; final status must be checked before claiming a clean core result. Do not restart while this handle is live. + +The earlier app attempt stopped at compilation due to a missing direction:nil argument in the new loader. It was corrected before the passing app run; no test assertions were weakened. + +## Core retry completed + +The same retry session completed with exit code 0: 773 tests in 109 suites passed after 688.996 seconds. core-retry.log preserves the result. Cache availability warnings remain, but the nested manifest-sandbox error is absent. diff --git a/docs/review/camera-runtime-candidates/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json b/docs/review/camera-runtime-candidates/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json new file mode 100644 index 00000000..6452afab --- /dev/null +++ b/docs/review/camera-runtime-candidates/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.8482589721679688" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-runtime-candidates/core-initial.log b/docs/review/camera-runtime-candidates/core-initial.log new file mode 100644 index 00000000..db6f547c --- /dev/null +++ b/docs/review/camera-runtime-candidates/core-initial.log @@ -0,0 +1,1845 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +error: 'ss-runtime': Invalid manifest (compiled with: ["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc", "-vfsoverlay", "/var/folders/5v/pc971cjj2g11dntwbdyhrg180000gn/T/TemporaryDirectory.IRNnTq/vfs.yaml", "-L", "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/pm/ManifestAPI", "-lPackageDescription", "-Xlinker", "-rpath", "-Xlinker", "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/pm/ManifestAPI", "-target", "arm64-apple-macosx14.0", "-plugin-path", "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins/testing", "-sdk", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk", "-F", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks", "-I", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib", "-L", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib", "-swift-version", "6", "-I", "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/pm/ManifestAPI", "-sdk", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk", "-package-description-version", "6.0.0", "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Package.swift", "-o", "/var/folders/5v/pc971cjj2g11dntwbdyhrg180000gn/T/TemporaryDirectory.pfl14H/ss-runtime-manifest"]) +sandbox-exec: sandbox_apply: Operation not permitted +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.60s) +Test Suite 'All tests' started at 2026-10-14 21:37:59.620. +Test Suite 'All tests' passed at 2026-10-14 21:37:59.624. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.004) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite AmbientMotionTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite ContractVersionsTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite KernelVectorTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite HeatReinforcementTests started. +◇ Suite ReplayTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite GhostRunTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite CameraPresentationTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite DailyFlavourTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite CameraFollowTests started. +◇ Suite ClipMetadataTests started. +◇ Suite GameFeelTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite PacingProbeTests started. +◇ Suite DamageOrderingTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite OriginalArtTests started. +◇ Suite AudioProjectorTests started. +◇ Suite EventCatalogTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite DaemonClipTests started. +◇ Suite CaptainClipTests started. +◇ Suite CameraFairnessTests started. +◇ Suite TransitPatrolTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite CameraPlacementTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite ClipTimingTests started. +◇ Suite MedalTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite GhostSettingTests started. +◇ Suite RunTelemetryTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite AwarenessTests started. +◇ Suite VisualLanguageTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite AssetCatalogTests started. +◇ Suite CombatCausalityTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite CameraHUDTests started. +◇ Suite DeterminismTests started. +◇ Suite HUDMappingTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite QuietApproachTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite D021CeilingsTests started. +◇ Suite CourtClimaxTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite CommitClipTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite GateVerificationTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite DefectRegistryTests started. +◇ Suite TamperFloorTests started. +◇ Suite CaptainCameraTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite ContractVectorTests started. +◇ Suite ConeOrientationTests started. +◇ Suite ProceduralVFXTests started. +◇ Suite OpeningTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite RunCardTests started. +◇ Suite SimulationClockTests started. +◇ Suite ApproximateCueTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite HUDPresentationTests started. +◇ Suite StealthTextureTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite SilhouetteTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite EnemyBehaviourTests started. +◇ Test currentIdentityIsCompatible() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test exactMigrationVectors() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test originalsAreAdmitted() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test daemonHasClips() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test ghostIsOnByDefault() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test sha256KnownVector() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test currentIdentityIsCompatible() passed after 13.622 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 13.660 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 13.661 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 15.156 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 15.156 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 15.156 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 15.156 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 15.156 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 15.156 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 15.156 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 15.156 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 15.162 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 15.163 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 15.162 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 15.162 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 15.162 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 15.162 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 15.162 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 15.162 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 15.162 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 15.162 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 15.162 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 15.163 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 15.162 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 15.163 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 15.162 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 15.162 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 15.163 seconds. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 15.162 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 15.163 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 15.163 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 15.163 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 15.162 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 15.163 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 15.163 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 15.163 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 15.162 seconds. +✔ Test attackStatesAreUnchanged() passed after 15.163 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 15.163 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 15.163 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 15.163 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 15.163 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 15.163 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 15.163 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 15.163 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 15.163 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 15.164 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 16.101 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 16.101 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 16.109 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 16.109 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 16.109 seconds. +✔ Test exactMigrationVectors() passed after 16.109 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 16.110 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 16.137 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 16.137 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 16.137 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 16.138 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 16.137 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 16.138 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 16.137 seconds. +✔ Test originalsAreAdmitted() passed after 16.137 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 16.137 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 16.137 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 16.137 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 16.137 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 16.137 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 16.137 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 16.137 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 16.137 seconds. +✔ Test ghostIsOnByDefault() passed after 16.137 seconds. +✔ Test daemonHasClips() passed after 16.137 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 16.137 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 16.137 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 16.143 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 16.143 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 16.143 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 16.144 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 16.144 seconds. +✔ Test aFreshRunStartsQuiet() passed after 16.144 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 16.144 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 16.144 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 16.144 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 16.144 seconds. +✔ Test sha256KnownVector() passed after 16.144 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 16.146 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 16.145 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 16.144 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 16.144 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 16.145 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 16.144 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 16.144 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 16.144 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 16.144 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 16.145 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 16.144 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 16.144 seconds. +✔ Test mappedElementsScaleProportionally() passed after 16.144 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 16.144 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 16.144 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 16.144 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 16.144 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 16.144 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 16.144 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 16.145 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 16.145 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 16.145 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 16.145 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 16.145 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 16.145 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 16.145 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 16.145 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 16.145 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 16.145 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 16.145 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 16.148 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 16.145 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 16.145 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 16.145 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 16.145 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 16.145 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 16.145 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 16.145 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 16.146 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 16.145 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 16.146 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 16.145 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 16.146 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 16.145 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 16.145 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 16.145 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 16.147 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 16.146 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 16.145 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 16.145 seconds. +✔ Test anUnawareKillIsATakedown() passed after 16.145 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 16.145 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 16.146 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 16.146 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 16.146 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 15.222 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 15.222 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 15.230 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 13.070 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite CanonicalArenaZonesTests passed after 16.160 seconds. +✔ Suite ExposureFinalizationTests passed after 16.160 seconds. +✔ Suite DailyFlavourTests passed after 16.160 seconds. +✔ Suite CameraFollowTests passed after 16.160 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 16.160 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 15.107 seconds. +✔ Suite ClipTimingTests passed after 16.161 seconds. +✔ Suite CombatFeedbackTests passed after 16.160 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 16.156 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 16.160 seconds. +✔ Suite ClipMetadataV2Tests passed after 16.160 seconds. +✔ Suite DefectRegistryTests passed after 16.160 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test nodeAndCopyAgree() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test playingIsNotTerminal() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test identityMismatchIsRejected() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test unknownIdentityFailsClosed() passed after 6.389 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 6.393 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 6.393 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 6.393 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 6.393 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 6.393 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 6.393 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 22.551 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 6.393 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 6.393 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 6.393 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 6.393 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 6.393 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 6.393 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 6.393 seconds. +✔ Test seedIsDeterministicForADate() passed after 6.393 seconds. +✔ Test musicAssetIdsAreReachable() passed after 6.393 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 6.393 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 6.393 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 6.393 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 6.393 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 22.552 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 6.393 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 6.392 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 6.392 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 6.392 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 6.566 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 6.566 seconds. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 6.722 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 6.722 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 6.722 seconds. +✔ Test familiesMapToDistinctAssets() passed after 6.722 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 6.726 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 6.725 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 6.725 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 6.725 seconds. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 6.725 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 6.725 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 6.725 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 6.725 seconds. +✔ Test nodeAndCopyAgree() passed after 6.725 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 6.725 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 6.725 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 6.730 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 6.730 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 6.730 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 6.730 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 6.730 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 6.730 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 6.730 seconds. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 6.730 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 6.730 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 6.730 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 6.730 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 6.730 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 6.730 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 6.730 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 6.730 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 6.730 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 6.730 seconds. +✔ Test captainArtIsAllOrNothing() passed after 6.730 seconds. +✔ Test playingIsNotTerminal() passed after 6.730 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 6.730 seconds. +✔ Test aCompleteGroupIsBacked() passed after 6.730 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 6.730 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 6.730 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 6.730 seconds. +✔ Test identityMismatchIsRejected() passed after 6.730 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 6.730 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 6.730 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 6.730 seconds. +✔ Test windowsMatchTheD090Table() passed after 6.730 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 6.730 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 6.730 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 6.732 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 6.730 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 6.731 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 6.730 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 6.730 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 6.730 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 22.891 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 3.786 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 3.786 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 3.780 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 3.091 seconds. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite ContractVersionsTests passed after 23.364 seconds. +✔ Suite CivicSeamIdentityTests passed after 23.365 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 23.364 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 0.633 seconds. +✔ Suite CameraMountSolidTests passed after 23.364 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 7.199 seconds. +✔ Suite VisualLanguageTests passed after 23.364 seconds. +✔ Suite ObjectiveProjectionTests passed after 23.364 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.474 seconds. +✔ Suite AssetCatalogTests passed after 23.364 seconds. +✔ Suite SimulationClockTests passed after 23.363 seconds. +✔ Suite SilhouetteTests passed after 23.363 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 23.363 seconds. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +✔ Suite ReceiptArchiveTests passed after 23.590 seconds. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 7.426 seconds. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 23.586 seconds. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test patrolSlipSearch() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 23.590 seconds. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 4.475 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 4.480 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 4.480 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 4.478 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 8.876 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 4.480 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 4.478 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 4.478 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 4.478 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 4.478 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 4.478 seconds. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 4.478 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 4.477 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 4.479 seconds. +✔ Test successRowsWithNoStoredBest() passed after 11.899 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 4.477 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 4.477 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 4.477 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 4.477 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 4.477 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 4.477 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 4.957 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 4.957 seconds. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 4.967 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 4.967 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 4.968 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 4.968 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 4.967 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 4.967 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 4.967 seconds. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 4.967 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 4.966 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 28.554 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 4.966 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 4.966 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 4.973 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 4.973 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 4.979 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 4.973 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 4.972 seconds. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 4.975 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 4.975 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 4.972 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 4.972 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 4.977 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 4.974 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 4.972 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 4.972 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 4.975 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 4.976 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 4.976 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 4.976 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 4.976 seconds. +✔ Test groupsAreBackedIndependently() passed after 4.976 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 4.976 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 4.976 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 4.976 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 4.976 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 4.977 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 4.976 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 4.976 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 4.976 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 4.976 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 4.977 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 4.976 seconds. +✔ Test patrolSlipSearch() passed after 4.976 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 4.978 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 4.976 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 4.976 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 4.975 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 4.976 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 4.981 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 3.170 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Suite ExpansionGateDecisionTests passed after 28.596 seconds. +✔ Suite ArenaAndSimulationTests passed after 28.596 seconds. +✔ Suite EventCatalogTests passed after 28.596 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 5.004 seconds. +✔ Suite CameraHousingArtTests passed after 28.596 seconds. +✔ Suite MusicBedCoverageTests passed after 28.596 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.039 seconds. +✔ Suite CameraPresentationTests passed after 28.596 seconds. +✔ Suite TerminalShareGeometryTests passed after 28.595 seconds. +✔ Suite EnvironmentContractTests passed after 28.596 seconds. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +✔ Suite CaptainClipTests passed after 28.596 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 5.004 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Suite HUDPresentationTests passed after 28.596 seconds. +✔ Suite PatrolSlipSearch passed after 28.596 seconds. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test profileT406AggregateReportIsStable() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 0.171 seconds. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +✔ Test headingsAdvanceClockwise() passed after 0.124 seconds. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 0.126 seconds. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +DAILY-RUN-400 distinct=400 salted=0 +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 11.616 seconds. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 11.616 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 11.502 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 15.992 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 11.502 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 11.501 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 11.501 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 11.501 seconds. +✔ Test lockdownOutranksExtraction() passed after 11.501 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 11.501 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 16.624 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 11.501 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 24.050 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 11.501 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 11.501 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 11.501 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 11.501 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 11.501 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 11.833 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 11.833 seconds. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 11.834 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 11.834 seconds. +✔ Test audioCoverageIsMeasurable() passed after 11.834 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 11.834 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 11.834 seconds. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 11.834 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 11.834 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 11.834 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 11.834 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 11.842 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 11.842 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 11.842 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 11.843 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 11.842 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 11.842 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 11.842 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 11.842 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 11.842 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 11.842 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 11.844 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 11.849 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 11.849 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 11.849 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 11.849 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 11.849 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 11.849 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 11.846 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 40.561 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 11.847 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 11.860 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 11.860 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 11.860 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 11.860 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 11.860 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 11.860 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 11.860 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 11.859 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 11.864 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 8.107 seconds. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 6.687 seconds. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Suite D021CeilingsTests passed after 41.838 seconds. +✔ Suite TutorialCardDurationTests passed after 41.839 seconds. +✔ Suite AudioProjectorSmokeTests passed after 41.839 seconds. +✔ Suite AssetIntakeChecks passed after 41.840 seconds. +✔ Suite GhostSettingTests passed after 41.839 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 1.288 seconds. +✔ Suite CameraHUDTests passed after 41.839 seconds. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 1.280 seconds. +✔ Suite CombatAuthorityReceiptTests passed after 41.839 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 13.119 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite CaptainCameraTests passed after 41.839 seconds. +✔ Suite RunTelemetryTests passed after 41.840 seconds. +◇ Test correlatorCommitStaysAStateClip() started. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 9.459 seconds. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 13.217 seconds. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test anyTouchSkips() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 0.098 seconds. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 3.904 seconds. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 3.905 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 3.899 seconds. +✔ Test correlatorCommitStaysAStateClip() passed after 3.980 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 3.888 seconds. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 3.888 seconds. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 3.889 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 3.889 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 3.889 seconds. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 3.889 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 3.889 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 3.889 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 3.890 seconds. +✔ Test tamperedCommandIsRejected() passed after 17.102 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 3.890 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 4.132 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 4.132 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 4.132 seconds. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 4.132 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 4.132 seconds. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 4.132 seconds. +✔ Suite ApproximateCueTests passed after 46.064 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test exposureEX010SingleStateJumpEvent() passed after 4.132 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 4.132 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 4.132 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 4.132 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 4.133 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 17.349 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 4.132 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 4.132 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 4.132 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 46.060 seconds. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 4.132 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 4.132 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 4.132 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 4.132 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 4.132 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 4.132 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 4.132 seconds. +✔ Test anyTouchSkips() passed after 4.132 seconds. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +✔ Test everyActorSpriteIsSizeChecked() passed after 4.134 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 4.132 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 4.133 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 4.132 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 4.135 seconds. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 4.132 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 4.132 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 4.132 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test noVisualAssetComesFromAnotherCity() passed after 4.133 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 3.507 seconds. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 2.916 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 4.173 seconds. +✔ Suite TutorialPreemptionTests passed after 46.106 seconds. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 3.543 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 46.106 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 5.555 seconds. +✔ Suite TamperFloorTests passed after 46.105 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.038 seconds. +✔ Suite DeviceRunEvidenceTests passed after 46.104 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.040 seconds. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test informantContactHitShowsItsCommit() started. +✔ Suite ReplayTests passed after 46.234 seconds. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test tamperedDigestIsRejected() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test noTwoPhasesShareABed() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test labelFormat() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 0.147 seconds. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 2.842 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 2.842 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 2.755 seconds. +✔ Test informantContactHitShowsItsCommit() passed after 2.755 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 2.755 seconds. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 2.755 seconds. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 2.755 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 2.755 seconds. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 2.755 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 7.054 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 2.755 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 2.755 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 2.755 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 2.755 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 3.120 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 3.120 seconds. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +✔ Test noTwoPhasesShareABed() passed after 3.120 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 3.120 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 3.104 seconds. +◇ Test validIndexWithDodgeIsRefused() started. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 3.103 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 3.326 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 3.325 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 3.325 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 3.325 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 3.325 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 3.325 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 3.325 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test labelFormat() passed after 3.325 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 3.325 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 3.325 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 3.325 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 3.325 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 3.325 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 3.325 seconds. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 3.325 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 3.510 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 3.325 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 3.326 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 3.325 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 3.325 seconds. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 3.325 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 3.325 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 3.326 seconds. +✔ Test tamperedDigestIsRejected() passed after 3.345 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 2.984 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 2.269 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite CameraDestructionReceiptTests passed after 49.794 seconds. +✔ Suite ReplayMatrixTests passed after 49.791 seconds. +✔ Suite DamageOrderingTests passed after 49.806 seconds. +✔ Suite AudioProjectorTests passed after 49.806 seconds. +✔ Suite ObjectiveGraphTests passed after 49.806 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 3.211 seconds. +✔ Suite BossPhaseMusicTests passed after 49.806 seconds. +✔ Suite QuietApproachPresentationTests passed after 49.806 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 0.451 seconds. +✔ Suite ArenaReachabilityTests passed after 49.805 seconds. +✔ Suite DeterminismTests passed after 49.806 seconds. +✔ Suite ExtractionCountdownTests passed after 49.807 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 0.451 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.228 seconds. +✔ Suite DailyRunSeedTests passed after 49.807 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 3.700 seconds. +✔ Suite DaemonClipTests passed after 49.807 seconds. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test playerPC003HalfMagnitude() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test gainFoldsMasterIntoEachBus() started. +✔ Suite HUDMappingTests passed after 49.823 seconds. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +◇ Test groundTilesAreUniform() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 7.983 seconds. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 0.019 seconds. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test tamperedTicksAreRejected() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test enemyEN010StandardDeathDropsNothing() started. +✔ Test playerPC001FullRightSixtyTicks() passed after 2.122 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 2.122 seconds. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 2.108 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 2.352 seconds. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 2.108 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 2.108 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 2.108 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 2.108 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 2.108 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 2.124 seconds. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 2.125 seconds. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +✔ Test playerPC003HalfMagnitude() passed after 2.125 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 2.132 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 27.737 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 2.132 seconds. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +✔ Test gainFoldsMasterIntoEachBus() passed after 2.132 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 2.132 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 2.132 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 2.132 seconds. +✔ Test runtimeMountSolidsHaveNoArt() passed after 2.132 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 2.132 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 2.132 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 2.132 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test profileT406AggregateReportIsStable() passed after 23.241 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 2.132 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 2.133 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 2.132 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 2.132 seconds. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 2.132 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 2.132 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 23.428 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 1.245 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 1.920 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 2.923 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 0.799 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 0.808 seconds. +✔ Suite RunOutcomeTerminalTests passed after 52.763 seconds. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.807 seconds. +✔ Suite ProceduralVFXTests passed after 52.763 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Suite EnemyBehaviourTests passed after 52.872 seconds. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test retiredProjectileRetainsIncomingPoint() started. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +✔ Suite RuntimeBundleTests passed after 52.927 seconds. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.173 seconds. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 0.181 seconds. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 2.632 seconds. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 2.632 seconds. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 2.589 seconds. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 2.589 seconds. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 2.585 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 2.585 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 3.564 seconds. +✔ Test groundTilesAreUniform() passed after 5.688 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 2.583 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 3.102 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 3.094 seconds. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 3.094 seconds. +✔ Test theLatchIsInTheDigest() passed after 3.094 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 6.209 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 3.094 seconds. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 3.094 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 3.094 seconds. +✔ Test quietRestoreFailsClosed() passed after 3.094 seconds. +✔ Test coverageCountsOnlyDeclaredIds() passed after 3.094 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 3.094 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 3.094 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 3.103 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 3.094 seconds. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 3.094 seconds. +✔ Suite ConeOrientationTests passed after 56.031 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 3.094 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 3.094 seconds. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 3.094 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 3.094 seconds. +✔ Suite TerminalPrecedenceTests passed after 56.030 seconds. +✔ Test tamperedTicksAreRejected() passed after 5.253 seconds. +✔ Test coneSightNeedsAClearLine() passed after 2.765 seconds. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Suite CombatCausalityTests passed after 56.179 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 3.251 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 0.148 seconds. +✔ Suite EnvironmentLibraryTests passed after 56.179 seconds. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.148 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test resetClearsCommits() started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test peakDetectionIsTheHighestReached() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test swiftIsUnderFiveThirty() started. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 6.372 seconds. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test bossSpawnsWithTenDpsContact() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test musicIsNotAnEffectCue() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test sightRangeIsInclusive() started. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 5.131 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 5.131 seconds. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 5.131 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 5.131 seconds. +✔ Test resetClearsCommits() passed after 5.131 seconds. +✔ Test theEliteIsFullyBacked() passed after 5.131 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 5.130 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 5.197 seconds. +◇ Test upgradeUP002SelectsSignalJammer() started. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 5.197 seconds. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 5.197 seconds. +✔ Test rs024GhostIsExactlyTheLatch() passed after 5.197 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 5.198 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 5.197 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 5.187 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 5.187 seconds. +✔ Test patrolBlockFailsClosed() passed after 5.186 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 5.186 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 5.186 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 5.186 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 5.186 seconds. +✔ Test musicIsNotAnEffectCue() passed after 5.186 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 5.186 seconds. +✔ Test sightRangeIsInclusive() passed after 5.186 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 5.186 seconds. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 5.186 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test outOfOrderCommandsAreRejected() passed after 3.752 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 3.752 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 19.503 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 0.057 seconds. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 5.407 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.056 seconds. +✔ Suite AudioDeliveryTests passed after 61.440 seconds. +✔ Suite StealthTextureTests passed after 61.438 seconds. +✔ Suite CameraPlacementTests passed after 61.440 seconds. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +✔ Suite ProtectedUpgradeSelectionTests passed after 61.610 seconds. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test rs021AFailedRunEarnsNothing() started. +✔ Test damageToANonEnemyIsIgnored() passed after 0.172 seconds. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +◇ Test playerBlockFailsClosed() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +✔ Suite CompleteRunVectorTests passed after 61.672 seconds. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test recordRoundTripsThroughJSON() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 3.326 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 3.326 seconds. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 3.326 seconds. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 3.326 seconds. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 3.326 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 3.554 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 3.326 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 3.704 seconds. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 3.704 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 3.704 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 3.704 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 3.704 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 3.704 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 3.644 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 3.644 seconds. +✔ Test playerBlockFailsClosed() passed after 3.644 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 3.644 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 3.644 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 3.705 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 3.644 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 3.644 seconds. +✔ Test encounterEN020SolidBlocksSight() passed after 3.644 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 12.575 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 3.841 seconds. +✔ Suite AmbientMotionTests passed after 65.538 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 2.775 seconds. +✔ Suite CommitClipTests passed after 65.537 seconds. +✔ Suite SpawnFairnessTests passed after 65.537 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 0.222 seconds. +✔ Suite QuietApproachTests passed after 65.537 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +✔ Suite RunCardTests passed after 65.541 seconds. +✔ Suite OpeningTests passed after 65.542 seconds. +✔ Suite PeakDensityProfilerTests passed after 65.543 seconds. +✔ Suite ClipMetadataTests passed after 65.551 seconds. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.014 seconds. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +✔ Test arenaAR008ExtractionLeaveResets() passed after 1.909 seconds. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 1.908 seconds. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 1.909 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 1.909 seconds. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 1.909 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 1.909 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 1.909 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 1.908 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 1.908 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 1.908 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 1.908 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 1.908 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 1.908 seconds. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 1.908 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 1.908 seconds. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 2.423 seconds. +✔ Suite TutorialStateMachineTests passed after 67.977 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 0.515 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 0.514 seconds. +✔ Suite LegacyAdmissionTests passed after 67.977 seconds. +◇ Test resetClearsEveryReaction() started. +✔ Suite PresentationSettingsTests passed after 67.976 seconds. +✔ Suite CombatContentFailClosedTests passed after 67.976 seconds. +✔ Suite ClipAlignmentTests passed after 67.976 seconds. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +✔ Test resetClearsEveryReaction() passed after 0.076 seconds. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 0.750 seconds. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 0.750 seconds. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 0.750 seconds. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 0.750 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 0.750 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 6.041 seconds. +✔ Suite ReactionClipTrackerTests passed after 68.805 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 0.750 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 0.750 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 0.750 seconds. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 0.750 seconds. +✔ Suite KernelVectorTests passed after 71.036 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 2.232 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 2.232 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 2.232 seconds. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test lockstepMatchesALiveReplay() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test allyAlertsNeverChain() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 3.864 seconds. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 3.864 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 3.864 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 21.634 seconds. +✔ Test crossfadeTakesOneSecond() passed after 3.865 seconds. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 3.865 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 3.865 seconds. +✔ Test allyAlertsNeverChain() passed after 3.865 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 5.222 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 1.358 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 1.358 seconds. +✔ Suite CombatVisibilityTests passed after 76.259 seconds. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test patrolEN035MovingPastHoldsFire() passed after 2.175 seconds. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +◇ Test aDirectionNeverBorrowsFromAnother() started. +✔ Test hitStopFramesStayInsideTheCaps() passed after 4.577 seconds. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 4.577 seconds. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 4.577 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 10.618 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 4.577 seconds. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 4.577 seconds. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 4.577 seconds. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 1.428 seconds. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 30.146 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 1.428 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.015 seconds. +✔ Suite ExpansionGateReportTests passed after 83.098 seconds. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.288 seconds. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.288 seconds. +✔ Test bossPhaseBO002HealthBands() passed after 0.288 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 1.734 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.288 seconds. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.288 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.288 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.016 seconds. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.015 seconds. +✔ Suite CameraDestructionOrderTests passed after 83.404 seconds. +✔ Suite TargetingPriorityTests passed after 83.405 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.001 seconds. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test coverageIsWhatTheRecordSays() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 1.515 seconds. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 1.515 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 1.515 seconds. +✔ Test trackerUsesReducedPalettes() passed after 1.515 seconds. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 1.515 seconds. +✔ Test unawareEnemyDealsNoContactDamage() passed after 1.515 seconds. +◇ Test playerIntegrityComesFromContent() started. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.012 seconds. +✔ Suite OriginalArtTests passed after 84.934 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.068 seconds. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.261 seconds. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.262 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.262 seconds. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.262 seconds. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 0.262 seconds. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.002 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.032 seconds. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test lockdownTintNeverBrightens() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 31.954 seconds. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 2.836 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 2.836 seconds. +✔ Test lockdownTintNeverBrightens() passed after 2.835 seconds. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 2.835 seconds. +◇ Test patrolIsOutsideHeat() started. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.022 seconds. +✔ Test patrolIsOutsideHeat() passed after 0.024 seconds. +◇ Test heatBlockDecodesFromTheBundledContract() started. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.060 seconds. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 0.061 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.061 seconds. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.061 seconds. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.060 seconds. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 0.015 seconds. +✔ Suite CourtClimaxTests passed after 88.263 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 8.879 seconds. +◇ Test heatBlockFailsClosed() started. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +◇ Test snapshotNamesEveryGate() started. +◇ Test awarenessIsDigested() started. +✔ Test heatBlockFailsClosed() passed after 0.037 seconds. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 0.037 seconds. +✔ Test snapshotNamesEveryGate() passed after 0.037 seconds. +✔ Test awarenessIsDigested() passed after 0.037 seconds. +◇ Test ghostStopsAtItsTerminalTick() started. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.011 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 3.895 seconds. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test tutorialLockdownPreemptsCopy() started. +◇ Test actorContrastValues() started. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.017 seconds. +◇ Test encounterEN001WaveTotals() started. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.017 seconds. +✔ Test actorContrastValues() passed after 0.017 seconds. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.017 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test encounterEN001WaveTotals() passed after 0.001 seconds. +✔ Suite GrayscaleSystemsTests passed after 95.943 seconds. +✔ Suite ReadabilityFinishTests passed after 95.942 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 22.624 seconds. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +◇ Test awarenessBlockFailsClosed() started. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.028 seconds. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +✔ Test awarenessBlockFailsClosed() passed after 0.028 seconds. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 0.014 seconds. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.001 seconds. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +✔ Suite ReleaseCandidateEvidenceTests passed after 99.757 seconds. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.012 seconds. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.012 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.004 seconds. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.003 seconds. +◇ Test bossBO005AndBO006ObservationRounding() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.003 seconds. +✔ Suite HeatReinforcementTests passed after 99.768 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.001 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test ghostFadesAfterItsTerminalTick() passed after 4.429 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.001 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.963 seconds. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.003 seconds. +✔ Suite AwarenessTests passed after 100.734 seconds. +✔ Suite ContractVectorTests passed after 100.733 seconds. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 8.347 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 1.683 seconds. +✔ Suite GhostRunTests passed after 110.403 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 69.467 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.016 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.704 seconds. +✔ Suite GateVerificationTests passed after 117.441 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 90.278 seconds. +✔ Suite PacingSegmentsTests passed after 132.213 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 184.763 seconds. +✔ Suite CameraFairnessTests passed after 184.768 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 194.979 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 18.765 seconds. +✔ Suite GameFeelTests passed after 299.044 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 356.400 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 358.489 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 423.426 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 77.322 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 433.728 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 391.171 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 444.914 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 512.971 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 148.520 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.054 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 3.164 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.141 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.021 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.179 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.017 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.007 seconds. +✔ Suite TransitPatrolTests passed after 631.542 seconds. +✔ Test run with 773 tests in 109 suites passed after 631.544 seconds. diff --git a/docs/review/camera-runtime-candidates/core-retry.log b/docs/review/camera-runtime-candidates/core-retry.log new file mode 100644 index 00000000..7f8ce1e8 --- /dev/null +++ b/docs/review/camera-runtime-candidates/core-retry.log @@ -0,0 +1,1844 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.68s) +Test Suite 'All tests' started at 2026-10-14 21:49:55.556. +Test Suite 'All tests' passed at 2026-10-14 21:49:55.560. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.004) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite RunCardTests started. +◇ Suite AssetCatalogTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite OriginalArtTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite CameraHUDTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite ReplayTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite DeterminismTests started. +◇ Suite EventCatalogTests started. +◇ Suite DailyFlavourTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite TransitPatrolTests started. +◇ Suite OpeningTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite CameraPresentationTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite ClipMetadataTests started. +◇ Suite GameFeelTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite ContractVectorTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite DaemonClipTests started. +◇ Suite CaptainCameraTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite QuietApproachTests started. +◇ Suite ClipTimingTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite CommitClipTests started. +◇ Suite AwarenessTests started. +◇ Suite PacingProbeTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite TamperFloorTests started. +◇ Suite CourtClimaxTests started. +◇ Suite RunTelemetryTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite ProceduralVFXTests started. +◇ Suite CameraPlacementTests started. +◇ Suite CaptainClipTests started. +◇ Suite ApproximateCueTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite StealthTextureTests started. +◇ Suite VisualLanguageTests started. +◇ Suite CameraFairnessTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite GateVerificationTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite GhostRunTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite ConeOrientationTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite CameraFollowTests started. +◇ Suite HUDPresentationTests started. +◇ Suite DamageOrderingTests started. +◇ Suite HUDMappingTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite D021CeilingsTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite SimulationClockTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite CombatCausalityTests started. +◇ Suite ContractVersionsTests started. +◇ Suite DefectRegistryTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite SilhouetteTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite MedalTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite AudioProjectorTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite GhostSettingTests started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Suite EnvironmentLibraryTests started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test originalsAreAdmitted() started. +◇ Suite AmbientMotionTests started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Suite KernelVectorTests started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test sha256KnownVector() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Suite GrayscaleSystemsTests started. +◇ Test daemonHasClips() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test exactMigrationVectors() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test currentIdentityIsCompatible() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test ghostIsOnByDefault() started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 18.104 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 18.104 seconds. +◇ Test exposureEX001OneCameraHundredTicks() started. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 18.263 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 18.263 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 18.263 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 18.263 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 18.263 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 18.264 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 18.264 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 18.264 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 18.263 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 18.263 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 18.264 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 18.263 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 18.264 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 18.264 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 18.264 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 18.264 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 18.264 seconds. +✔ Test sha256KnownVector() passed after 18.264 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 18.264 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 18.264 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 18.264 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 18.264 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 18.264 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 18.264 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 18.264 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 18.264 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 18.264 seconds. +✔ Test originalsAreAdmitted() passed after 18.265 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 18.264 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 18.264 seconds. +✔ Test exactMigrationVectors() passed after 18.264 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 18.264 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 18.264 seconds. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 18.264 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 18.264 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 18.264 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 18.264 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 18.264 seconds. +✔ Test aFreshRunStartsQuiet() passed after 18.264 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 18.264 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 18.264 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 18.264 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 18.265 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 18.265 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 18.265 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 18.266 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 18.265 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 18.265 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 18.265 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 18.265 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 18.265 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 18.266 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 18.265 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 18.265 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 18.265 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 18.265 seconds. +✔ Test daemonHasClips() passed after 18.266 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 18.266 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 18.265 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 18.265 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 18.266 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 18.265 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 18.265 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 18.265 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 18.266 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 18.265 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 18.265 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 18.265 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 18.266 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 18.266 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 18.266 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 18.266 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 18.266 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 18.266 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 18.266 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 18.266 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 18.266 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 18.266 seconds. +✔ Test anUnawareKillIsATakedown() passed after 18.266 seconds. +✔ Test mappedElementsScaleProportionally() passed after 18.266 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 18.266 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 18.273 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 18.274 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 18.274 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 18.274 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 18.274 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 18.274 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 18.274 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 18.275 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 18.274 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 18.274 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 18.274 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 18.274 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 18.274 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 18.274 seconds. +✔ Test currentIdentityIsCompatible() passed after 18.274 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 18.274 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 18.275 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 18.274 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 18.274 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 18.274 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 18.274 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 18.274 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 18.274 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 18.274 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 18.274 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 18.274 seconds. +✔ Test attackStatesAreUnchanged() passed after 18.274 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 18.274 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 18.274 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 18.274 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 18.274 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 18.274 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 18.274 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 18.274 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 18.274 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 18.275 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 18.274 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 18.274 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 18.274 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 18.276 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 18.274 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 18.275 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 18.274 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 18.274 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 18.278 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 18.290 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 18.290 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 18.290 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 18.290 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 18.291 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 18.290 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 18.290 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 18.290 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 18.290 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 18.290 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 18.295 seconds. +✔ Test ghostIsOnByDefault() passed after 17.385 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 18.300 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 0.721 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 0.206 seconds. +✔ Suite DailyFlavourTests passed after 18.313 seconds. +✔ Suite ClipTimingTests passed after 18.313 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 0.045 seconds. +✔ Suite CombatFeedbackTests passed after 18.313 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 18.313 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 0.209 seconds. +✔ Suite CameraFollowTests passed after 18.313 seconds. +✔ Suite ExposureFinalizationTests passed after 18.313 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 18.309 seconds. +✔ Suite DefectRegistryTests passed after 18.313 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 18.313 seconds. +✔ Suite CanonicalArenaZonesTests passed after 18.313 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test nodeAndCopyAgree() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test playingIsNotTerminal() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test identityMismatchIsRejected() started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test aCompleteGroupIsBacked() started. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 4.807 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 4.807 seconds. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 4.915 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 23.237 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 4.915 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 4.915 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 4.915 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 4.915 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 4.915 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 4.915 seconds. +✔ Test familiesMapToDistinctAssets() passed after 4.915 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 4.915 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 4.915 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 4.915 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 4.910 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 4.910 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 23.238 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 4.910 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 4.914 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 4.914 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 23.244 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 4.915 seconds. +✔ Test nodeAndCopyAgree() passed after 4.918 seconds. +✔ Test successRowsWithNoStoredBest() passed after 4.923 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 4.918 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 4.918 seconds. +◇ Test exposureEX007TamperWithoutContact() started. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 4.918 seconds. +✔ Test musicAssetIdsAreReachable() passed after 4.918 seconds. +✔ Test captainArtIsAllOrNothing() passed after 4.918 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 4.918 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 4.919 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 4.919 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 4.919 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 4.919 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 4.919 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 4.919 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 4.919 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 4.919 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 4.919 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 4.918 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 4.918 seconds. +✔ Test playingIsNotTerminal() passed after 4.918 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 4.918 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 4.918 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 4.918 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 4.918 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 4.925 seconds. +◇ Test ambientUnknownSchemaFailsClosed() started. +✔ Test noSettingAppearsInTheDigest() passed after 4.918 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 4.919 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 4.918 seconds. +✔ Test seedIsDeterministicForADate() passed after 4.918 seconds. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 4.926 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 4.918 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 4.918 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 4.918 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 4.918 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 4.918 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 4.919 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 4.918 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 4.919 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 4.919 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 4.919 seconds. +✔ Test identityMismatchIsRejected() passed after 4.919 seconds. +✔ Test unknownIdentityFailsClosed() passed after 4.919 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 4.919 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 4.919 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 4.919 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 4.919 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 4.919 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 4.919 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 4.920 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 4.919 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 4.919 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 4.919 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 4.920 seconds. +✔ Test windowsMatchTheD090Table() passed after 4.920 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 4.920 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 4.920 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 4.920 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 4.920 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 4.920 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 2.816 seconds. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 1.981 seconds. +✔ Test aCompleteGroupIsBacked() passed after 0.978 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 0.927 seconds. +✔ Suite ClipMetadataV2Tests passed after 24.062 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 5.721 seconds. +✔ Suite AssetCatalogTests passed after 24.065 seconds. +✔ Suite ObjectiveProjectionTests passed after 24.064 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 0.811 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 24.064 seconds. +✔ Suite CameraMountSolidTests passed after 24.064 seconds. +✔ Suite CivicSeamIdentityTests passed after 24.065 seconds. +✔ Suite VisualLanguageTests passed after 24.064 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 0.804 seconds. +✔ Suite ContractVersionsTests passed after 24.064 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.803 seconds. +✔ Suite SimulationClockTests passed after 24.065 seconds. +✔ Suite SilhouetteTests passed after 24.064 seconds. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 6.022 seconds. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test dayRollsOverAtMidnightUTC() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 24.354 seconds. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test profileT406AggregateReportIsStable() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test groupsAreBackedIndependently() started. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 9.677 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 9.677 seconds. +◇ Test exposureEX002ThreeCamerasOneTick() started. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 9.698 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 9.698 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 9.698 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 9.698 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 9.698 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 9.698 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 9.698 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 9.698 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 9.698 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 9.698 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 9.698 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 9.698 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 9.697 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 9.697 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 9.697 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 9.697 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 9.697 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 15.711 seconds. +◇ Test patrolSlipSearch() started. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 34.052 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 9.698 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 9.698 seconds. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 9.698 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 9.698 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 9.698 seconds. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 34.051 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 9.698 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 9.698 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 9.698 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 9.698 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 9.698 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 34.052 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 9.698 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 9.698 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 9.698 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 9.698 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 9.698 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 9.698 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 9.698 seconds. +◇ Test ambientGameplayImplicationFailsClosed() started. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 9.699 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 9.698 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 9.698 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 9.698 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 9.698 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 9.698 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 9.698 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 9.698 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 9.743 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 9.744 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 9.743 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 34.097 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 9.743 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 9.743 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 9.743 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 9.743 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 9.743 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 9.743 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 9.743 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 9.744 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 9.743 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 9.743 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 9.744 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 9.744 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 9.744 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 9.747 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 9.744 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 9.746 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 9.744 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 9.744 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 3.479 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 9.744 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 9.744 seconds. +✔ Test groupsAreBackedIndependently() passed after 0.622 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 0.071 seconds. +✔ Suite ExpansionGateDecisionTests passed after 34.106 seconds. +✔ Suite CameraHousingArtTests passed after 34.106 seconds. +✔ Suite EventCatalogTests passed after 34.106 seconds. +✔ Suite CameraPresentationTests passed after 34.106 seconds. +✔ Suite ReceiptArchiveTests passed after 34.104 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 0.050 seconds. +✔ Test patrolSlipSearch() passed after 0.051 seconds. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +✔ Suite ArenaAndSimulationTests passed after 34.106 seconds. +✔ Suite EnvironmentContractTests passed after 34.107 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Suite HUDPresentationTests passed after 34.106 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 9.748 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 34.106 seconds. +✔ Suite MusicBedCoverageTests passed after 34.107 seconds. +✔ Suite TerminalShareGeometryTests passed after 34.107 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.004 seconds. +✔ Suite CaptainClipTests passed after 34.107 seconds. +✔ Suite D021CeilingsTests passed after 34.107 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 0.051 seconds. +✔ Suite DeviceRunEvidenceTests passed after 34.108 seconds. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +✔ Suite PatrolSlipSearch passed after 34.120 seconds. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +✔ Test headingsAdvanceClockwise() passed after 0.015 seconds. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 5.212 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 5.212 seconds. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 5.233 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 5.233 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 5.233 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 7.469 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 5.260 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 5.260 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 5.260 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 5.260 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 5.260 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 5.260 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 5.249 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 5.249 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 5.249 seconds. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 5.263 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 5.249 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 5.260 seconds. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 5.249 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 15.011 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 5.249 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 5.249 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 5.249 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 5.262 seconds. +✔ Test audioCoverageIsMeasurable() passed after 5.263 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 15.023 seconds. +✔ Test lockdownOutranksExtraction() passed after 5.262 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 5.262 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 5.262 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 5.262 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 5.262 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 5.264 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 5.262 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 5.262 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 5.262 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 5.262 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 5.262 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 6.198 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 6.198 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 6.198 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 6.198 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 6.198 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 6.198 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 6.198 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 6.198 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 6.199 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 6.198 seconds. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 6.198 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 6.198 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 6.198 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 6.198 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 6.198 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 6.193 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +✔ Test ghostNeverAppearsInTheDigest() passed after 6.070 seconds. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 22.051 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 2.897 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 1.183 seconds. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 1.105 seconds. +✔ Suite CameraHUDTests passed after 40.449 seconds. +✔ Suite AudioProjectorSmokeTests passed after 40.448 seconds. +✔ Suite TutorialCardDurationTests passed after 40.448 seconds. +✔ Suite CombatAuthorityReceiptTests passed after 40.448 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 1.078 seconds. +✔ Suite CaptainCameraTests passed after 40.456 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 2.958 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 1.071 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 0.135 seconds. +✔ Suite ApproximateCueTests passed after 40.456 seconds. +✔ Suite AssetIntakeChecks passed after 40.456 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 0.101 seconds. +✔ Suite GhostSettingTests passed after 40.480 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test anyTouchSkips() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test correlatorCommitStaysAStateClip() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 6.389 seconds. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test t2ActivatesOnFirstContact() passed after 1.811 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 1.810 seconds. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 1.812 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 1.812 seconds. +✔ Test anyTouchSkips() passed after 1.826 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 1.826 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 1.826 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 1.826 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 1.826 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 1.826 seconds. +✔ Test correlatorCommitStaysAStateClip() passed after 1.826 seconds. +✔ Test tamperedCommandIsRejected() passed after 8.213 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 1.826 seconds. +◇ Test exposureEX010SingleStateJumpEvent() started. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 1.826 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 1.826 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 1.826 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 1.826 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 1.826 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 1.826 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 23.992 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 1.826 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 1.826 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 1.826 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 1.826 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 1.826 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 1.826 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 1.826 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 1.826 seconds. +◇ Test noVisualAssetComesFromAnotherCity() started. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 1.827 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 1.826 seconds. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 1.826 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 1.921 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 1.922 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 1.921 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 8.309 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 1.921 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 1.921 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 1.921 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 1.921 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 1.922 seconds. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 1.921 seconds. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 1.921 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 1.921 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 1.922 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 8.310 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 1.921 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 1.848 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 0.781 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 0.362 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 42.467 seconds. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 0.145 seconds. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 1.957 seconds. +✔ Test exposureEX010SingleStateJumpEvent() passed after 0.130 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Suite RunTelemetryTests passed after 42.466 seconds. +✔ Suite TutorialPreemptionTests passed after 42.468 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 8.347 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.136 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.041 seconds. +✔ Suite ReplayMatrixTests passed after 42.472 seconds. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 0.046 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +✔ Suite ReplayTests passed after 42.483 seconds. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test informantContactHitShowsItsCommit() started. +◇ Test tamperedDigestIsRejected() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +✔ Suite TamperFloorTests passed after 42.487 seconds. +◇ Test noTwoPhasesShareABed() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +DAILY-RUN-400 distinct=400 salted=0 +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 2.655 seconds. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 2.655 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 2.655 seconds. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 2.660 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 2.660 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 2.660 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 2.660 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 2.660 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 2.660 seconds. +✔ Test informantContactHitShowsItsCommit() passed after 2.660 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 2.806 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 2.660 seconds. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 11.021 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 4.632 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 2.660 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 2.660 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 2.660 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 2.660 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 2.660 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 2.660 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 2.660 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 2.656 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 2.660 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 2.656 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 2.656 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 2.656 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 2.656 seconds. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 2.656 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test noTwoPhasesShareABed() passed after 2.664 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 2.663 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 2.663 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 2.663 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 2.663 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 2.663 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 2.663 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 2.663 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 2.663 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 2.663 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 2.663 seconds. +✔ Test tamperedDigestIsRejected() passed after 2.669 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 2.663 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 2.576 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 1.649 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 1.649 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 0.488 seconds. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 0.048 seconds. +✔ Suite DeterminismTests passed after 45.188 seconds. +✔ Suite QuietApproachPresentationTests passed after 45.188 seconds. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 0.043 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 2.720 seconds. +✔ Suite ObjectiveGraphTests passed after 45.187 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.043 seconds. +✔ Suite BossPhaseMusicTests passed after 45.188 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.035 seconds. +✔ Suite DamageOrderingTests passed after 45.187 seconds. +✔ Suite AudioProjectorTests passed after 45.187 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 0.027 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite CameraDestructionReceiptTests passed after 45.187 seconds. +✔ Suite ArenaReachabilityTests passed after 45.187 seconds. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 4.734 seconds. +◇ Test peakDetectionIsTheHighestReached() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +✔ Suite HUDMappingTests passed after 45.190 seconds. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test groundTilesAreUniform() started. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test tamperedTicksAreRejected() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test runtimeMountSolidsHaveNoArt() started. +✔ Test t2ContactResetsTheClearRun() passed after 4.395 seconds. +◇ Test playerPC001FullRightSixtyTicks() started. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 4.395 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 4.395 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 4.395 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 4.395 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 4.395 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 4.395 seconds. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 4.395 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 7.096 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 4.395 seconds. +◇ Test playerPC003HalfMagnitude() started. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 4.395 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 4.396 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 4.395 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 4.395 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 4.396 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 4.395 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 4.395 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 4.395 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 4.395 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 4.395 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 4.395 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 4.395 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 4.396 seconds. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 4.395 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 15.464 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 4.395 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 4.395 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 4.395 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 4.395 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 4.395 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 4.395 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 4.393 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 4.393 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 4.396 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 4.392 seconds. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test runtimeMountSolidsHaveNoArt() passed after 0.735 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 0.111 seconds. +✔ Suite EnemyBehaviourTests passed after 49.697 seconds. +✔ Suite DaemonClipTests passed after 49.696 seconds. +✔ Test playerPC003HalfMagnitude() passed after 0.111 seconds. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.111 seconds. +✔ Suite RuntimeBundleTests passed after 49.698 seconds. +✔ Suite ExtractionCountdownTests passed after 49.697 seconds. +✔ Suite RunOutcomeTerminalTests passed after 49.698 seconds. +✔ Suite ProceduralVFXTests passed after 49.698 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.112 seconds. +✔ Suite TerminalPrecedenceTests passed after 49.698 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 0.111 seconds. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test labelFormat() started. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.091 seconds. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +✔ Suite CombatCausalityTests passed after 49.790 seconds. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 2.300 seconds. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 2.300 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 2.300 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 2.300 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 2.300 seconds. +✔ Test groundTilesAreUniform() passed after 6.898 seconds. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 2.300 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 2.300 seconds. +◇ Test playerPC005DodgeAtMostNinetySix() started. +✔ Test labelFormat() passed after 2.300 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 27.730 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test theLatchIsInTheDigest() passed after 2.300 seconds. +✔ Test coneSightNeedsAClearLine() passed after 2.300 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 2.301 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 2.301 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 2.301 seconds. +✔ Suite ConeOrientationTests passed after 52.090 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 2.301 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 2.302 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 2.301 seconds. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 2.301 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 2.301 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 2.300 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 2.282 seconds. +✔ Test quietRestoreFailsClosed() passed after 2.281 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 2.281 seconds. +✔ Test tamperedTicksAreRejected() passed after 6.897 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 2.282 seconds. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 2.282 seconds. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test coverageCountsOnlyDeclaredIds() passed after 0.152 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 0.142 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 0.142 seconds. +✔ Suite DailyRunSeedTests passed after 52.232 seconds. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.142 seconds. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 7.044 seconds. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 0.117 seconds. +✔ Suite EnvironmentLibraryTests passed after 52.234 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test resetClearsCommits() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test bossSpawnsWithTenDpsContact() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test sightRangeIsInclusive() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test musicIsNotAnEffectCue() started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 2.438 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 4.234 seconds. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 4.234 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 4.234 seconds. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 4.233 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 4.233 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 6.690 seconds. +✔ Test resetClearsCommits() passed after 4.233 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 4.233 seconds. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +✔ Test theEliteIsFullyBacked() passed after 4.234 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Test rs024GhostIsExactlyTheLatch() passed after 4.233 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 4.233 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 4.233 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 4.234 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 4.234 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 4.234 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 4.234 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 4.234 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 4.234 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 4.234 seconds. +✔ Test sightRangeIsInclusive() passed after 4.234 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 4.233 seconds. +✔ Test patrolBlockFailsClosed() passed after 4.233 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 4.233 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 4.233 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 4.233 seconds. +✔ Test musicIsNotAnEffectCue() passed after 4.233 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 56.482 seconds. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 0.061 seconds. +✔ Suite RunCardTests passed after 56.543 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 0.061 seconds. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.061 seconds. +✔ Test damageToANonEnemyIsIgnored() passed after 0.068 seconds. +✔ Suite CameraPlacementTests passed after 56.549 seconds. +✔ Suite StealthTextureTests passed after 56.549 seconds. +✔ Suite SpawnFairnessTests passed after 56.549 seconds. +✔ Suite AudioDeliveryTests passed after 56.550 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 0.067 seconds. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +◇ Test swiftIsUnderFiveThirty() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +✔ Suite CompleteRunVectorTests passed after 56.551 seconds. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +◇ Test playerBlockFailsClosed() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 1.538 seconds. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 1.539 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 16.412 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 1.539 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 1.539 seconds. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 1.539 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 1.539 seconds. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 1.539 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 1.539 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 1.539 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 1.539 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 1.539 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 1.539 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 1.539 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 1.539 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 1.539 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 1.539 seconds. +✔ Test encounterEN020SolidBlocksSight() passed after 1.539 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 1.539 seconds. +✔ Test playerBlockFailsClosed() passed after 1.539 seconds. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 0.209 seconds. +✔ Suite OpeningTests passed after 58.300 seconds. +✔ Suite CommitClipTests passed after 58.299 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 0.209 seconds. +✔ Suite QuietApproachTests passed after 58.301 seconds. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.211 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 1.750 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 0.209 seconds. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test rs021AFailedRunEarnsNothing() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +✔ Suite ClipMetadataTests passed after 58.302 seconds. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test bossPhaseBandsFailClosed() started. +✔ Suite AmbientMotionTests passed after 60.545 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 3.238 seconds. +◇ Test arenaAR008ExtractionLeaveResets() started. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 3.239 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 9.294 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 3.239 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 3.239 seconds. +◇ Test hudUI001ReferenceAnchors() started. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 3.239 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 4.989 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 3.239 seconds. +◇ Test resetClearsEveryReaction() started. +✔ Test pinningShowsTheCameraCounterEarly() passed after 3.239 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 3.239 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 3.239 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 3.239 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 3.239 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 3.239 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 3.239 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 3.239 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 3.239 seconds. +✔ Suite TutorialStateMachineTests passed after 61.624 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 0.083 seconds. +✔ Suite PeakDensityProfilerTests passed after 61.624 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 0.083 seconds. +✔ Test resetClearsEveryReaction() passed after 0.082 seconds. +✔ Suite PresentationSettingsTests passed after 61.624 seconds. +✔ Suite LegacyAdmissionTests passed after 61.624 seconds. +✔ Suite CombatContentFailClosedTests passed after 61.623 seconds. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test lockstepMatchesALiveReplay() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +✔ Suite ReactionClipTrackerTests passed after 61.625 seconds. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 1.083 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 1.083 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 1.083 seconds. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 1.083 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 4.406 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 1.083 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 1.083 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 1.083 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 1.083 seconds. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 1.083 seconds. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 1.083 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 1.083 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 0.001 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 0.001 seconds. +✔ Suite ClipAlignmentTests passed after 62.708 seconds. +✔ Suite KernelVectorTests passed after 62.708 seconds. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +◇ Test allyAlertsNeverChain() started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 3.171 seconds. +◇ Test hudUI006ExtractionSecondsCeil() started. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 23.398 seconds. +✔ Test crossfadeTakesOneSecond() passed after 3.171 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 3.171 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 3.171 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 3.171 seconds. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 3.171 seconds. +✔ Test allyAlertsNeverChain() passed after 3.171 seconds. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 3.171 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test patrolEN035MovingPastHoldsFire() passed after 3.291 seconds. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 3.291 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 0.120 seconds. +✔ Suite ExpansionGateReportTests passed after 66.003 seconds. +✔ Suite CombatVisibilityTests passed after 66.001 seconds. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.711 seconds. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.711 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 0.711 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.711 seconds. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.711 seconds. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.711 seconds. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.711 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.419 seconds. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.419 seconds. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.419 seconds. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test aDirectionNeverBorrowsFromAnother() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.831 seconds. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +◇ Test bossPhaseBO002HealthBands() started. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.831 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 0.834 seconds. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.834 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.834 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.834 seconds. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.834 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.005 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.005 seconds. +✔ Test bossPhaseBO002HealthBands() passed after 0.005 seconds. +✔ Suite CameraDestructionOrderTests passed after 67.970 seconds. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +✔ Suite TargetingPriorityTests passed after 67.972 seconds. +◇ Test trackerUsesReducedPalettes() started. +◇ Test coverageIsWhatTheRecordSays() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test playerIntegrityComesFromContent() started. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.631 seconds. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +✔ Test trackerUsesReducedPalettes() passed after 0.631 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.631 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 6.977 seconds. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.631 seconds. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.631 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.077 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.077 seconds. +✔ Suite OriginalArtTests passed after 68.681 seconds. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.491 seconds. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.491 seconds. +✔ Test unawareEnemyDealsNoContactDamage() passed after 1.203 seconds. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.494 seconds. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.494 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.036 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.036 seconds. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +◇ Test lockdownTintNeverBrightens() started. +◇ Test patrolIsOutsideHeat() started. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 24.064 seconds. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 4.657 seconds. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 4.657 seconds. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 4.657 seconds. +✔ Test lockdownTintNeverBrightens() passed after 4.657 seconds. +✔ Test patrolIsOutsideHeat() passed after 0.010 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 0.010 seconds. +◇ Test heatBlockDecodesFromTheBundledContract() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.047 seconds. +◇ Test projectilePoolRejectsBeyondCeiling() started. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.047 seconds. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.049 seconds. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.049 seconds. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.049 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 6.572 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 1.319 seconds. +✔ Suite CourtClimaxTests passed after 75.253 seconds. +◇ Test heatBlockFailsClosed() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test encounterEN001WaveTotals() started. +◇ Test snapshotNamesEveryGate() started. +◇ Test ghostStopsAtItsTerminalTick() started. +✔ Test heatBlockFailsClosed() passed after 0.057 seconds. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.057 seconds. +✔ Test encounterEN001WaveTotals() passed after 0.057 seconds. +✔ Test snapshotNamesEveryGate() passed after 0.057 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 18.936 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 1.928 seconds. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test awarenessIsDigested() started. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +◇ Test actorContrastValues() started. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.067 seconds. +◇ Test tutorialLockdownPreemptsCopy() started. +✔ Test awarenessIsDigested() passed after 0.066 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 0.066 seconds. +✔ Test actorContrastValues() passed after 0.066 seconds. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.001 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.001 seconds. +✔ Suite ReadabilityFinishTests passed after 77.307 seconds. +✔ Suite ReleaseCandidateEvidenceTests passed after 77.309 seconds. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +✔ Suite GrayscaleSystemsTests passed after 77.308 seconds. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.009 seconds. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.008 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.008 seconds. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +◇ Test awarenessBlockFailsClosed() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.078 seconds. +✔ Test awarenessBlockFailsClosed() passed after 0.078 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.078 seconds. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.006 seconds. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.006 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.006 seconds. +✔ Suite HeatReinforcementTests passed after 77.403 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.004 seconds. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.004 seconds. +✔ Suite ContractVectorTests passed after 77.414 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 1.332 seconds. +✔ Suite AwarenessTests passed after 78.747 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 4.177 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test ghostFadesAfterItsTerminalTick() passed after 3.966 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 10.621 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 2.240 seconds. +✔ Suite GhostRunTests passed after 96.316 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 59.716 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.024 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.903 seconds. +✔ Suite GateVerificationTests passed after 104.133 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 80.817 seconds. +✔ Suite PacingSegmentsTests passed after 121.328 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 165.647 seconds. +✔ Suite CameraFairnessTests passed after 165.651 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 168.776 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 8.862 seconds. +✔ Suite GameFeelTests passed after 246.848 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 319.451 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 374.188 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 423.985 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 123.020 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 442.479 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 422.377 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 472.909 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.005 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 535.629 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 188.194 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.031 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 4.012 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.224 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.017 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.164 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.015 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.013 seconds. +✔ Suite TransitPatrolTests passed after 688.993 seconds. +✔ Test run with 773 tests in 109 suites passed after 688.996 seconds. diff --git a/docs/review/camera-runtime-candidates/criticalIntegrityWinsOverTransientHitClip-summary.json b/docs/review/camera-runtime-candidates/criticalIntegrityWinsOverTransientHitClip-summary.json new file mode 100644 index 00000000..e4f9db9e --- /dev/null +++ b/docs/review/camera-runtime-candidates/criticalIntegrityWinsOverTransientHitClip-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "1.0256109237670898" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/criticalIntegrityWinsOverTransientHitClip()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/criticalIntegrityWinsOverTransientHitClip()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "criticalIntegrityWinsOverTransientHitClip()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-runtime-candidates/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json b/docs/review/camera-runtime-candidates/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json new file mode 100644 index 00000000..0d0040d2 --- /dev/null +++ b/docs/review/camera-runtime-candidates/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.7865121364593506" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-runtime-candidates/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json b/docs/review/camera-runtime-candidates/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json new file mode 100644 index 00000000..1c3d70fc --- /dev/null +++ b/docs/review/camera-runtime-candidates/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.3355579376220703" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-runtime-candidates/manifest.json b/docs/review/camera-runtime-candidates/manifest.json new file mode 100644 index 00000000..ef9b16ce --- /dev/null +++ b/docs/review/camera-runtime-candidates/manifest.json @@ -0,0 +1,32 @@ +[ + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-3", + "uti": "public.png", + "path": "BP004-candidate-integrity-3.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-2", + "uti": "public.png", + "path": "BP004-candidate-integrity-2.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-1", + "uti": "public.png", + "path": "BP004-candidate-integrity-1.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-0", + "uti": "public.png", + "path": "BP004-candidate-integrity-0.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-post-action-records", + "uti": "public.json", + "path": "BP004-candidate-post-action-records.json" + } +] diff --git a/docs/review/camera-runtime-candidates/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json b/docs/review/camera-runtime-candidates/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json new file mode 100644 index 00000000..589d1593 --- /dev/null +++ b/docs/review/camera-runtime-candidates/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.7986629009246826" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-runtime-candidates/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json b/docs/review/camera-runtime-candidates/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json new file mode 100644 index 00000000..51f24c62 --- /dev/null +++ b/docs/review/camera-runtime-candidates/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "1.2625341415405273" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-runtime-candidates/rendered-states.png b/docs/review/camera-runtime-candidates/rendered-states.png new file mode 100644 index 00000000..1b2b907a Binary files /dev/null and b/docs/review/camera-runtime-candidates/rendered-states.png differ diff --git a/docs/review/camera-runtime-candidates/result.json b/docs/review/camera-runtime-candidates/result.json new file mode 100644 index 00000000..8d1f1541 --- /dev/null +++ b/docs/review/camera-runtime-candidates/result.json @@ -0,0 +1,608 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~TwHHFKvZVE7DSE03rCe8TptuYKgk_Vqyn_ZWTiLWXIPZDDq5wehzT79hAG9hN6HSV-mSQQc0s11zvGM08ZdMqQ==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~1iVVdgGBgzaVatycBOwyKM_nDs4FPUYkwaS0IDz0kHicu6o-fhJicJB09x9yTiam9MT7We8LfTO0QL9evs36KA==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "103" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~bFjsY2LoeliR7THcpvrgfruwfs2wPt1qt0g8tiEOWQt87ptVCnU4c5stJjQ9uEjfXEXu36fk8gXbk98dOPJczQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~jHstzMjxhdJuH2BnLnfQvWgoTwB1Q8QaIhQ3SIqpFNIZYqRbfaQZoTq7eg51My-FoFeUIYPi2aQlckvK_daS_A==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:45:55.728-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:42:26.501-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~mitTivwgUcqSujRRl0OWQDAoX16LzXtYGizV0LeRVcChFYyzxZpoHCy-rqpMDilFUJTgQapWrmM9ZMVH8DFs5g==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "103" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/camera-runtime-candidates/summary.json b/docs/review/camera-runtime-candidates/summary.json new file mode 100644 index 00000000..5b69f3ee --- /dev/null +++ b/docs/review/camera-runtime-candidates/summary.json @@ -0,0 +1,43 @@ +{ + "simulatorExecutions": 103, + "failures": 0, + "postActionObservations": 40, + "capturePixels": [ + 192, + 288 + ], + "logicalCanvas": [ + 64, + 96 + ], + "scale": 3, + "observedFramesByIntegrity": { + "3": [ + "camera_operational_idle#1", + "camera_operational_idle#3" + ], + "2": [ + "camera_hit#1", + "camera_hit#2" + ], + "1": [ + "camera_critical_enter#1", + "camera_critical_enter#2", + "camera_critical_enter#3" + ], + "0": [ + "camera_destroy#1", + "camera_destroy#2", + "camera_destroy#3", + "camera_destroy#4", + "camera_destroyed_idle#2" + ] + }, + "fieldAbsentForAllDestroyedObservations": true, + "positions": [ + [ + 640, + 256 + ] + ] +} diff --git a/docs/review/camera-runtime-candidates/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json b/docs/review/camera-runtime-candidates/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json new file mode 100644 index 00000000..0fd835be --- /dev/null +++ b/docs/review/camera-runtime-candidates/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json @@ -0,0 +1,664 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "activitySummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-3_0_CE2587A3-D03B-4AE1-AD1E-6BDDA19019B2.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-3" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~QlG2ytoBubuaH8nrulBrvY0K94cJgeNH_GWSuo5RHkMTorXdzrlafz1_O-JWtbl6H0pkj_Z9e3zZL6VzZq48AA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "38127" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.146-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "0E649237-B42B-49BC-947D-D3ED2EDF0F92" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.147-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.146-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-3'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "CE2587A3-D03B-4AE1-AD1E-6BDDA19019B2" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-2_0_9E438B98-70C8-4576-B68F-BB9EABA61BB5.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-2" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~pvGRTNDixVd4G0syvxjJ1leZhT5jb1VLlwBzvp2GAww4yD2iiUwgtsTWJLFH04jTyUGD73gD5iJVoe8dss-xYw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "38688" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.151-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "49742E81-8096-423D-A166-C0D619F8ECC8" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.152-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.151-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-2'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "9E438B98-70C8-4576-B68F-BB9EABA61BB5" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-1_0_8AB5D706-14AB-401D-9090-1DA27717F57C.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-1" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~EfygaFbTxjXKS4ovAUqiSLSSXEmxTAjCC393basqmOM9xJKw96wcCY85u55zYloX3AJUWDybGCWaGUQ6hN1vkQ==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "40165" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.156-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "3BF02EF9-A136-45F5-BB4A-410D647BE4F8" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.158-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.157-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-1'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "8AB5D706-14AB-401D-9090-1DA27717F57C" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-0_0_B14ABF85-3375-4E72-881C-885AAF5438CB.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-0" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~mxIgaoPR0Ak_MMKAm-pnHtequhOuBEqRE86C3oDmurf5U3IeMquex4egG3EmmeKYlypg4VTsR_Cf4gPEF3QIkg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "40501" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.162-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "3B001205-C952-49D1-8125-018062689F67" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.163-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.162-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-0'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "B14ABF85-3375-4E72-881C-885AAF5438CB" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-post-action-records_0_086EFAA7-51C1-4F4E-A238-058697281885.json" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-post-action-records" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~wp8hfRCsEfz_alGfaofQ2fX4v0VCWmLE9YdXIDsI8mEeRR56xAdMAdoXWq2fV4ktk8WXcdqKAtrnNPFD7wVvqg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "6769" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.173-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.json" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "9F68BA40-D053-425F-B867-70A6FED19579" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.174-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:44:56.173-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-post-action-records'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "086EFAA7-51C1-4F4E-A238-058697281885" + } + } + ] + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "2.39116108417511" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "testCameraCandidatesActuallyPlayAndSettleInPresentedScene()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-scene/README.md b/docs/review/camera-shared-scene/README.md new file mode 100644 index 00000000..348fbb07 --- /dev/null +++ b/docs/review/camera-shared-scene/README.md @@ -0,0 +1,21 @@ +# BP-001/BP-004 shared camera composition + +The complete six-clip candidate family now reaches GameScene's composition fixture through the same integrity/Reduced Motion policy as shipping art. This review captures settled states beside the hooded painted Player, constrained building, props, HUD and real camera-field geometry. Presentation positions are explicit; this is not an authoritative encounter. + +## Validation + +Final Xcode bundle: Test-SSRuntime-2026.10.14_22-01-28--0700.xcresult, iPhone 17 Pro simulator, iOS 26.5. 104 executions, zero failures. All candidate playback/interrupt/Reduced Motion tests remain passing. The shared-scene test checks settled texture identity, no running action in Reduced Motion, no legacy housing, and field removal at integrity zero. + +The initial shared capture exposed a missing contact shadow: the complete-device path bypassed the old static-fixture branch. WorldRenderer now creates the shared contact cue before choosing static or animated review art. The added assertion checks its registered position at (camera.x,camera.y-2). Initial root-level captures are retained; final/ contains the corrected run. The only before/after pixel difference is the shadow region, bounding box (1443,486)-(1509,505), for all four states. + +Core retry completed with exit code 0: 773 tests across 109 suites, 688.996 seconds. See core-retry.log. The initial nested sandbox failure remains documented in the preceding camera-runtime-candidates review. No core source changed. + +## Visual observations and remaining gaps + +All exported full captures are 2112×978 pixels for 704×326 logical points at 3×. final/comparison-native.png arranges four 704×326 views (integrity 3,2,1,0 reading order); grayscale and 50% companions use the same captures. + +Observed: one fixed municipal device, coherent head damage, persistent one/two-notch markers, dark destroyed head and absent destroyed field. The contact cue is localized at the ground root. Native-size and grayscale markers remain distinguishable in this quiet fixture; this is not dense-encounter accessibility acceptance. + +Observed unresolved: field fill becomes very weak against the pale paving in grayscale. It needs a researched contrast/geometry treatment and encounter comparison before acceptance. No numeric contrast threshold or new treatment was invented here. The white Player border remains conspicuous; ground repetition, empty composition, perspective/ground registration and unfinished character motion remain below the approved street-corner target. Damage texture detail is subtler at half scale; markers carry much of the state distinction. + +Required next evidence: real legal encounter with the candidate camera, visible attack, field and HUD; normal and Reduced Motion; dense scene; Captain-owned distinction; memory/performance; complete-family admission. These quiet stills plus isolated live-camera playback do not close those gates or Player/environment production. Physical-device testing remains deferred. diff --git a/docs/review/camera-shared-scene/core-retry.log b/docs/review/camera-shared-scene/core-retry.log new file mode 100644 index 00000000..7f8ce1e8 --- /dev/null +++ b/docs/review/camera-shared-scene/core-retry.log @@ -0,0 +1,1844 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.68s) +Test Suite 'All tests' started at 2026-10-14 21:49:55.556. +Test Suite 'All tests' passed at 2026-10-14 21:49:55.560. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.004) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite RunCardTests started. +◇ Suite AssetCatalogTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite OriginalArtTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite CameraHUDTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite ReplayTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite DeterminismTests started. +◇ Suite EventCatalogTests started. +◇ Suite DailyFlavourTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite TransitPatrolTests started. +◇ Suite OpeningTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite CameraPresentationTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite ClipMetadataTests started. +◇ Suite GameFeelTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite ContractVectorTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite DaemonClipTests started. +◇ Suite CaptainCameraTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite QuietApproachTests started. +◇ Suite ClipTimingTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite CommitClipTests started. +◇ Suite AwarenessTests started. +◇ Suite PacingProbeTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite TamperFloorTests started. +◇ Suite CourtClimaxTests started. +◇ Suite RunTelemetryTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite ProceduralVFXTests started. +◇ Suite CameraPlacementTests started. +◇ Suite CaptainClipTests started. +◇ Suite ApproximateCueTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite StealthTextureTests started. +◇ Suite VisualLanguageTests started. +◇ Suite CameraFairnessTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite GateVerificationTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite GhostRunTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite ConeOrientationTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite CameraFollowTests started. +◇ Suite HUDPresentationTests started. +◇ Suite DamageOrderingTests started. +◇ Suite HUDMappingTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite D021CeilingsTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite SimulationClockTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite CombatCausalityTests started. +◇ Suite ContractVersionsTests started. +◇ Suite DefectRegistryTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite SilhouetteTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite MedalTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite AudioProjectorTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite GhostSettingTests started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Suite EnvironmentLibraryTests started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test originalsAreAdmitted() started. +◇ Suite AmbientMotionTests started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Suite KernelVectorTests started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test sha256KnownVector() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Suite GrayscaleSystemsTests started. +◇ Test daemonHasClips() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test exactMigrationVectors() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test currentIdentityIsCompatible() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test ghostIsOnByDefault() started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 18.104 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 18.104 seconds. +◇ Test exposureEX001OneCameraHundredTicks() started. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 18.263 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 18.263 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 18.263 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 18.263 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 18.263 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 18.264 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 18.264 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 18.264 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 18.263 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 18.263 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 18.264 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 18.263 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 18.264 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 18.264 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 18.264 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 18.264 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 18.264 seconds. +✔ Test sha256KnownVector() passed after 18.264 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 18.264 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 18.264 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 18.264 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 18.264 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 18.264 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 18.264 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 18.264 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 18.264 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 18.264 seconds. +✔ Test originalsAreAdmitted() passed after 18.265 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 18.264 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 18.264 seconds. +✔ Test exactMigrationVectors() passed after 18.264 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 18.264 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 18.264 seconds. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 18.264 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 18.264 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 18.264 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 18.264 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 18.264 seconds. +✔ Test aFreshRunStartsQuiet() passed after 18.264 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 18.264 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 18.264 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 18.264 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 18.265 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 18.265 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 18.265 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 18.266 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 18.265 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 18.265 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 18.265 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 18.265 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 18.265 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 18.266 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 18.265 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 18.265 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 18.265 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 18.265 seconds. +✔ Test daemonHasClips() passed after 18.266 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 18.266 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 18.265 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 18.265 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 18.266 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 18.265 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 18.265 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 18.265 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 18.266 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 18.265 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 18.265 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 18.265 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 18.266 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 18.266 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 18.266 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 18.266 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 18.266 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 18.266 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 18.266 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 18.266 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 18.266 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 18.266 seconds. +✔ Test anUnawareKillIsATakedown() passed after 18.266 seconds. +✔ Test mappedElementsScaleProportionally() passed after 18.266 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 18.266 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 18.273 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 18.274 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 18.274 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 18.274 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 18.274 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 18.274 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 18.274 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 18.275 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 18.274 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 18.274 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 18.274 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 18.274 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 18.274 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 18.274 seconds. +✔ Test currentIdentityIsCompatible() passed after 18.274 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 18.274 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 18.275 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 18.274 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 18.274 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 18.274 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 18.274 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 18.274 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 18.274 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 18.274 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 18.274 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 18.274 seconds. +✔ Test attackStatesAreUnchanged() passed after 18.274 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 18.274 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 18.274 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 18.274 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 18.274 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 18.274 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 18.274 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 18.274 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 18.274 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 18.275 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 18.274 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 18.274 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 18.274 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 18.276 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 18.274 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 18.275 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 18.274 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 18.274 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 18.278 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 18.290 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 18.290 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 18.290 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 18.290 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 18.291 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 18.290 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 18.290 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 18.290 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 18.290 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 18.290 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 18.295 seconds. +✔ Test ghostIsOnByDefault() passed after 17.385 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 18.300 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 0.721 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 0.206 seconds. +✔ Suite DailyFlavourTests passed after 18.313 seconds. +✔ Suite ClipTimingTests passed after 18.313 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 0.045 seconds. +✔ Suite CombatFeedbackTests passed after 18.313 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 18.313 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 0.209 seconds. +✔ Suite CameraFollowTests passed after 18.313 seconds. +✔ Suite ExposureFinalizationTests passed after 18.313 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 18.309 seconds. +✔ Suite DefectRegistryTests passed after 18.313 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 18.313 seconds. +✔ Suite CanonicalArenaZonesTests passed after 18.313 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test nodeAndCopyAgree() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test playingIsNotTerminal() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test identityMismatchIsRejected() started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test aCompleteGroupIsBacked() started. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 4.807 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 4.807 seconds. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 4.915 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 23.237 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 4.915 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 4.915 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 4.915 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 4.915 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 4.915 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 4.915 seconds. +✔ Test familiesMapToDistinctAssets() passed after 4.915 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 4.915 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 4.915 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 4.915 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 4.910 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 4.910 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 23.238 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 4.910 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 4.914 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 4.914 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 23.244 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 4.915 seconds. +✔ Test nodeAndCopyAgree() passed after 4.918 seconds. +✔ Test successRowsWithNoStoredBest() passed after 4.923 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 4.918 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 4.918 seconds. +◇ Test exposureEX007TamperWithoutContact() started. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 4.918 seconds. +✔ Test musicAssetIdsAreReachable() passed after 4.918 seconds. +✔ Test captainArtIsAllOrNothing() passed after 4.918 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 4.918 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 4.919 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 4.919 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 4.919 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 4.919 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 4.919 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 4.919 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 4.919 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 4.919 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 4.919 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 4.918 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 4.918 seconds. +✔ Test playingIsNotTerminal() passed after 4.918 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 4.918 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 4.918 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 4.918 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 4.918 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 4.925 seconds. +◇ Test ambientUnknownSchemaFailsClosed() started. +✔ Test noSettingAppearsInTheDigest() passed after 4.918 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 4.919 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 4.918 seconds. +✔ Test seedIsDeterministicForADate() passed after 4.918 seconds. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 4.926 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 4.918 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 4.918 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 4.918 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 4.918 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 4.918 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 4.919 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 4.918 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 4.919 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 4.919 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 4.919 seconds. +✔ Test identityMismatchIsRejected() passed after 4.919 seconds. +✔ Test unknownIdentityFailsClosed() passed after 4.919 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 4.919 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 4.919 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 4.919 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 4.919 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 4.919 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 4.919 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 4.920 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 4.919 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 4.919 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 4.919 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 4.920 seconds. +✔ Test windowsMatchTheD090Table() passed after 4.920 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 4.920 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 4.920 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 4.920 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 4.920 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 4.920 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 2.816 seconds. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 1.981 seconds. +✔ Test aCompleteGroupIsBacked() passed after 0.978 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 0.927 seconds. +✔ Suite ClipMetadataV2Tests passed after 24.062 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 5.721 seconds. +✔ Suite AssetCatalogTests passed after 24.065 seconds. +✔ Suite ObjectiveProjectionTests passed after 24.064 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 0.811 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 24.064 seconds. +✔ Suite CameraMountSolidTests passed after 24.064 seconds. +✔ Suite CivicSeamIdentityTests passed after 24.065 seconds. +✔ Suite VisualLanguageTests passed after 24.064 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 0.804 seconds. +✔ Suite ContractVersionsTests passed after 24.064 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.803 seconds. +✔ Suite SimulationClockTests passed after 24.065 seconds. +✔ Suite SilhouetteTests passed after 24.064 seconds. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 6.022 seconds. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test dayRollsOverAtMidnightUTC() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 24.354 seconds. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test profileT406AggregateReportIsStable() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test groupsAreBackedIndependently() started. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 9.677 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 9.677 seconds. +◇ Test exposureEX002ThreeCamerasOneTick() started. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 9.698 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 9.698 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 9.698 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 9.698 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 9.698 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 9.698 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 9.698 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 9.698 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 9.698 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 9.698 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 9.698 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 9.698 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 9.697 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 9.697 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 9.697 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 9.697 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 9.697 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 15.711 seconds. +◇ Test patrolSlipSearch() started. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 34.052 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 9.698 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 9.698 seconds. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 9.698 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 9.698 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 9.698 seconds. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 34.051 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 9.698 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 9.698 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 9.698 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 9.698 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 9.698 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 34.052 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 9.698 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 9.698 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 9.698 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 9.698 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 9.698 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 9.698 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 9.698 seconds. +◇ Test ambientGameplayImplicationFailsClosed() started. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 9.699 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 9.698 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 9.698 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 9.698 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 9.698 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 9.698 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 9.698 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 9.698 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 9.743 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 9.744 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 9.743 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 34.097 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 9.743 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 9.743 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 9.743 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 9.743 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 9.743 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 9.743 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 9.743 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 9.744 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 9.743 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 9.743 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 9.744 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 9.744 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 9.744 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 9.747 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 9.744 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 9.746 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 9.744 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 9.744 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 3.479 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 9.744 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 9.744 seconds. +✔ Test groupsAreBackedIndependently() passed after 0.622 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 0.071 seconds. +✔ Suite ExpansionGateDecisionTests passed after 34.106 seconds. +✔ Suite CameraHousingArtTests passed after 34.106 seconds. +✔ Suite EventCatalogTests passed after 34.106 seconds. +✔ Suite CameraPresentationTests passed after 34.106 seconds. +✔ Suite ReceiptArchiveTests passed after 34.104 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 0.050 seconds. +✔ Test patrolSlipSearch() passed after 0.051 seconds. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +✔ Suite ArenaAndSimulationTests passed after 34.106 seconds. +✔ Suite EnvironmentContractTests passed after 34.107 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Suite HUDPresentationTests passed after 34.106 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 9.748 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 34.106 seconds. +✔ Suite MusicBedCoverageTests passed after 34.107 seconds. +✔ Suite TerminalShareGeometryTests passed after 34.107 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.004 seconds. +✔ Suite CaptainClipTests passed after 34.107 seconds. +✔ Suite D021CeilingsTests passed after 34.107 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 0.051 seconds. +✔ Suite DeviceRunEvidenceTests passed after 34.108 seconds. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +✔ Suite PatrolSlipSearch passed after 34.120 seconds. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +✔ Test headingsAdvanceClockwise() passed after 0.015 seconds. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 5.212 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 5.212 seconds. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 5.233 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 5.233 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 5.233 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 7.469 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 5.260 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 5.260 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 5.260 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 5.260 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 5.260 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 5.260 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 5.249 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 5.249 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 5.249 seconds. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 5.263 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 5.249 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 5.260 seconds. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 5.249 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 15.011 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 5.249 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 5.249 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 5.249 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 5.262 seconds. +✔ Test audioCoverageIsMeasurable() passed after 5.263 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 15.023 seconds. +✔ Test lockdownOutranksExtraction() passed after 5.262 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 5.262 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 5.262 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 5.262 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 5.262 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 5.264 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 5.262 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 5.262 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 5.262 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 5.262 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 5.262 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 6.198 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 6.198 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 6.198 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 6.198 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 6.198 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 6.198 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 6.198 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 6.198 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 6.199 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 6.198 seconds. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 6.198 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 6.198 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 6.198 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 6.198 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 6.198 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 6.193 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +✔ Test ghostNeverAppearsInTheDigest() passed after 6.070 seconds. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 22.051 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 2.897 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 1.183 seconds. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 1.105 seconds. +✔ Suite CameraHUDTests passed after 40.449 seconds. +✔ Suite AudioProjectorSmokeTests passed after 40.448 seconds. +✔ Suite TutorialCardDurationTests passed after 40.448 seconds. +✔ Suite CombatAuthorityReceiptTests passed after 40.448 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 1.078 seconds. +✔ Suite CaptainCameraTests passed after 40.456 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 2.958 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 1.071 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 0.135 seconds. +✔ Suite ApproximateCueTests passed after 40.456 seconds. +✔ Suite AssetIntakeChecks passed after 40.456 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 0.101 seconds. +✔ Suite GhostSettingTests passed after 40.480 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test anyTouchSkips() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test correlatorCommitStaysAStateClip() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 6.389 seconds. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test t2ActivatesOnFirstContact() passed after 1.811 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 1.810 seconds. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 1.812 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 1.812 seconds. +✔ Test anyTouchSkips() passed after 1.826 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 1.826 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 1.826 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 1.826 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 1.826 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 1.826 seconds. +✔ Test correlatorCommitStaysAStateClip() passed after 1.826 seconds. +✔ Test tamperedCommandIsRejected() passed after 8.213 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 1.826 seconds. +◇ Test exposureEX010SingleStateJumpEvent() started. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 1.826 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 1.826 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 1.826 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 1.826 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 1.826 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 1.826 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 23.992 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 1.826 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 1.826 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 1.826 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 1.826 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 1.826 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 1.826 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 1.826 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 1.826 seconds. +◇ Test noVisualAssetComesFromAnotherCity() started. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 1.827 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 1.826 seconds. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 1.826 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 1.921 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 1.922 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 1.921 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 8.309 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 1.921 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 1.921 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 1.921 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 1.921 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 1.922 seconds. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 1.921 seconds. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 1.921 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 1.921 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 1.922 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 8.310 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 1.921 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 1.848 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 0.781 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 0.362 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 42.467 seconds. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 0.145 seconds. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 1.957 seconds. +✔ Test exposureEX010SingleStateJumpEvent() passed after 0.130 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Suite RunTelemetryTests passed after 42.466 seconds. +✔ Suite TutorialPreemptionTests passed after 42.468 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 8.347 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.136 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.041 seconds. +✔ Suite ReplayMatrixTests passed after 42.472 seconds. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 0.046 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +✔ Suite ReplayTests passed after 42.483 seconds. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test informantContactHitShowsItsCommit() started. +◇ Test tamperedDigestIsRejected() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +✔ Suite TamperFloorTests passed after 42.487 seconds. +◇ Test noTwoPhasesShareABed() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +DAILY-RUN-400 distinct=400 salted=0 +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 2.655 seconds. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 2.655 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 2.655 seconds. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 2.660 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 2.660 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 2.660 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 2.660 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 2.660 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 2.660 seconds. +✔ Test informantContactHitShowsItsCommit() passed after 2.660 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 2.806 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 2.660 seconds. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 11.021 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 4.632 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 2.660 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 2.660 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 2.660 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 2.660 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 2.660 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 2.660 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 2.660 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 2.656 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 2.660 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 2.656 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 2.656 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 2.656 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 2.656 seconds. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 2.656 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test noTwoPhasesShareABed() passed after 2.664 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 2.663 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 2.663 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 2.663 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 2.663 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 2.663 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 2.663 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 2.663 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 2.663 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 2.663 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 2.663 seconds. +✔ Test tamperedDigestIsRejected() passed after 2.669 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 2.663 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 2.576 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 1.649 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 1.649 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 0.488 seconds. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 0.048 seconds. +✔ Suite DeterminismTests passed after 45.188 seconds. +✔ Suite QuietApproachPresentationTests passed after 45.188 seconds. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 0.043 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 2.720 seconds. +✔ Suite ObjectiveGraphTests passed after 45.187 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.043 seconds. +✔ Suite BossPhaseMusicTests passed after 45.188 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.035 seconds. +✔ Suite DamageOrderingTests passed after 45.187 seconds. +✔ Suite AudioProjectorTests passed after 45.187 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 0.027 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite CameraDestructionReceiptTests passed after 45.187 seconds. +✔ Suite ArenaReachabilityTests passed after 45.187 seconds. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 4.734 seconds. +◇ Test peakDetectionIsTheHighestReached() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +✔ Suite HUDMappingTests passed after 45.190 seconds. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test groundTilesAreUniform() started. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test tamperedTicksAreRejected() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test runtimeMountSolidsHaveNoArt() started. +✔ Test t2ContactResetsTheClearRun() passed after 4.395 seconds. +◇ Test playerPC001FullRightSixtyTicks() started. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 4.395 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 4.395 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 4.395 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 4.395 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 4.395 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 4.395 seconds. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 4.395 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 7.096 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 4.395 seconds. +◇ Test playerPC003HalfMagnitude() started. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 4.395 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 4.396 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 4.395 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 4.395 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 4.396 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 4.395 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 4.395 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 4.395 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 4.395 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 4.395 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 4.395 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 4.395 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 4.396 seconds. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 4.395 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 15.464 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 4.395 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 4.395 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 4.395 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 4.395 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 4.395 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 4.395 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 4.393 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 4.393 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 4.396 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 4.392 seconds. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test runtimeMountSolidsHaveNoArt() passed after 0.735 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 0.111 seconds. +✔ Suite EnemyBehaviourTests passed after 49.697 seconds. +✔ Suite DaemonClipTests passed after 49.696 seconds. +✔ Test playerPC003HalfMagnitude() passed after 0.111 seconds. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.111 seconds. +✔ Suite RuntimeBundleTests passed after 49.698 seconds. +✔ Suite ExtractionCountdownTests passed after 49.697 seconds. +✔ Suite RunOutcomeTerminalTests passed after 49.698 seconds. +✔ Suite ProceduralVFXTests passed after 49.698 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.112 seconds. +✔ Suite TerminalPrecedenceTests passed after 49.698 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 0.111 seconds. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test labelFormat() started. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.091 seconds. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +✔ Suite CombatCausalityTests passed after 49.790 seconds. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 2.300 seconds. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 2.300 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 2.300 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 2.300 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 2.300 seconds. +✔ Test groundTilesAreUniform() passed after 6.898 seconds. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 2.300 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 2.300 seconds. +◇ Test playerPC005DodgeAtMostNinetySix() started. +✔ Test labelFormat() passed after 2.300 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 27.730 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test theLatchIsInTheDigest() passed after 2.300 seconds. +✔ Test coneSightNeedsAClearLine() passed after 2.300 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 2.301 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 2.301 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 2.301 seconds. +✔ Suite ConeOrientationTests passed after 52.090 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 2.301 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 2.302 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 2.301 seconds. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 2.301 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 2.301 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 2.300 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 2.282 seconds. +✔ Test quietRestoreFailsClosed() passed after 2.281 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 2.281 seconds. +✔ Test tamperedTicksAreRejected() passed after 6.897 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 2.282 seconds. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 2.282 seconds. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test coverageCountsOnlyDeclaredIds() passed after 0.152 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 0.142 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 0.142 seconds. +✔ Suite DailyRunSeedTests passed after 52.232 seconds. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.142 seconds. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 7.044 seconds. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 0.117 seconds. +✔ Suite EnvironmentLibraryTests passed after 52.234 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test resetClearsCommits() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test bossSpawnsWithTenDpsContact() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test sightRangeIsInclusive() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test musicIsNotAnEffectCue() started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 2.438 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 4.234 seconds. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 4.234 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 4.234 seconds. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 4.233 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 4.233 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 6.690 seconds. +✔ Test resetClearsCommits() passed after 4.233 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 4.233 seconds. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +✔ Test theEliteIsFullyBacked() passed after 4.234 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Test rs024GhostIsExactlyTheLatch() passed after 4.233 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 4.233 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 4.233 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 4.234 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 4.234 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 4.234 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 4.234 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 4.234 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 4.234 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 4.234 seconds. +✔ Test sightRangeIsInclusive() passed after 4.234 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 4.233 seconds. +✔ Test patrolBlockFailsClosed() passed after 4.233 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 4.233 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 4.233 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 4.233 seconds. +✔ Test musicIsNotAnEffectCue() passed after 4.233 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 56.482 seconds. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 0.061 seconds. +✔ Suite RunCardTests passed after 56.543 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 0.061 seconds. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.061 seconds. +✔ Test damageToANonEnemyIsIgnored() passed after 0.068 seconds. +✔ Suite CameraPlacementTests passed after 56.549 seconds. +✔ Suite StealthTextureTests passed after 56.549 seconds. +✔ Suite SpawnFairnessTests passed after 56.549 seconds. +✔ Suite AudioDeliveryTests passed after 56.550 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 0.067 seconds. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +◇ Test swiftIsUnderFiveThirty() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +✔ Suite CompleteRunVectorTests passed after 56.551 seconds. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +◇ Test playerBlockFailsClosed() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 1.538 seconds. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 1.539 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 16.412 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 1.539 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 1.539 seconds. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 1.539 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 1.539 seconds. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 1.539 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 1.539 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 1.539 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 1.539 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 1.539 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 1.539 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 1.539 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 1.539 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 1.539 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 1.539 seconds. +✔ Test encounterEN020SolidBlocksSight() passed after 1.539 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 1.539 seconds. +✔ Test playerBlockFailsClosed() passed after 1.539 seconds. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 0.209 seconds. +✔ Suite OpeningTests passed after 58.300 seconds. +✔ Suite CommitClipTests passed after 58.299 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 0.209 seconds. +✔ Suite QuietApproachTests passed after 58.301 seconds. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.211 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 1.750 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 0.209 seconds. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test rs021AFailedRunEarnsNothing() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +✔ Suite ClipMetadataTests passed after 58.302 seconds. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test bossPhaseBandsFailClosed() started. +✔ Suite AmbientMotionTests passed after 60.545 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 3.238 seconds. +◇ Test arenaAR008ExtractionLeaveResets() started. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 3.239 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 9.294 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 3.239 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 3.239 seconds. +◇ Test hudUI001ReferenceAnchors() started. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 3.239 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 4.989 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 3.239 seconds. +◇ Test resetClearsEveryReaction() started. +✔ Test pinningShowsTheCameraCounterEarly() passed after 3.239 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 3.239 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 3.239 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 3.239 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 3.239 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 3.239 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 3.239 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 3.239 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 3.239 seconds. +✔ Suite TutorialStateMachineTests passed after 61.624 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 0.083 seconds. +✔ Suite PeakDensityProfilerTests passed after 61.624 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 0.083 seconds. +✔ Test resetClearsEveryReaction() passed after 0.082 seconds. +✔ Suite PresentationSettingsTests passed after 61.624 seconds. +✔ Suite LegacyAdmissionTests passed after 61.624 seconds. +✔ Suite CombatContentFailClosedTests passed after 61.623 seconds. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test lockstepMatchesALiveReplay() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +✔ Suite ReactionClipTrackerTests passed after 61.625 seconds. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 1.083 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 1.083 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 1.083 seconds. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 1.083 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 4.406 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 1.083 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 1.083 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 1.083 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 1.083 seconds. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 1.083 seconds. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 1.083 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 1.083 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 0.001 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 0.001 seconds. +✔ Suite ClipAlignmentTests passed after 62.708 seconds. +✔ Suite KernelVectorTests passed after 62.708 seconds. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +◇ Test allyAlertsNeverChain() started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 3.171 seconds. +◇ Test hudUI006ExtractionSecondsCeil() started. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 23.398 seconds. +✔ Test crossfadeTakesOneSecond() passed after 3.171 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 3.171 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 3.171 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 3.171 seconds. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 3.171 seconds. +✔ Test allyAlertsNeverChain() passed after 3.171 seconds. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 3.171 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test patrolEN035MovingPastHoldsFire() passed after 3.291 seconds. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 3.291 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 0.120 seconds. +✔ Suite ExpansionGateReportTests passed after 66.003 seconds. +✔ Suite CombatVisibilityTests passed after 66.001 seconds. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.711 seconds. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.711 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 0.711 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.711 seconds. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.711 seconds. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.711 seconds. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.711 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.419 seconds. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.419 seconds. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.419 seconds. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test aDirectionNeverBorrowsFromAnother() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.831 seconds. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +◇ Test bossPhaseBO002HealthBands() started. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.831 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 0.834 seconds. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.834 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.834 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.834 seconds. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.834 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.005 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.005 seconds. +✔ Test bossPhaseBO002HealthBands() passed after 0.005 seconds. +✔ Suite CameraDestructionOrderTests passed after 67.970 seconds. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +✔ Suite TargetingPriorityTests passed after 67.972 seconds. +◇ Test trackerUsesReducedPalettes() started. +◇ Test coverageIsWhatTheRecordSays() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test playerIntegrityComesFromContent() started. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.631 seconds. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +✔ Test trackerUsesReducedPalettes() passed after 0.631 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.631 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 6.977 seconds. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.631 seconds. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.631 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.077 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.077 seconds. +✔ Suite OriginalArtTests passed after 68.681 seconds. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.491 seconds. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.491 seconds. +✔ Test unawareEnemyDealsNoContactDamage() passed after 1.203 seconds. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.494 seconds. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.494 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.036 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.036 seconds. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +◇ Test lockdownTintNeverBrightens() started. +◇ Test patrolIsOutsideHeat() started. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 24.064 seconds. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 4.657 seconds. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 4.657 seconds. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 4.657 seconds. +✔ Test lockdownTintNeverBrightens() passed after 4.657 seconds. +✔ Test patrolIsOutsideHeat() passed after 0.010 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 0.010 seconds. +◇ Test heatBlockDecodesFromTheBundledContract() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.047 seconds. +◇ Test projectilePoolRejectsBeyondCeiling() started. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.047 seconds. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.049 seconds. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.049 seconds. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.049 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 6.572 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 1.319 seconds. +✔ Suite CourtClimaxTests passed after 75.253 seconds. +◇ Test heatBlockFailsClosed() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test encounterEN001WaveTotals() started. +◇ Test snapshotNamesEveryGate() started. +◇ Test ghostStopsAtItsTerminalTick() started. +✔ Test heatBlockFailsClosed() passed after 0.057 seconds. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.057 seconds. +✔ Test encounterEN001WaveTotals() passed after 0.057 seconds. +✔ Test snapshotNamesEveryGate() passed after 0.057 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 18.936 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 1.928 seconds. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test awarenessIsDigested() started. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +◇ Test actorContrastValues() started. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.067 seconds. +◇ Test tutorialLockdownPreemptsCopy() started. +✔ Test awarenessIsDigested() passed after 0.066 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 0.066 seconds. +✔ Test actorContrastValues() passed after 0.066 seconds. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.001 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.001 seconds. +✔ Suite ReadabilityFinishTests passed after 77.307 seconds. +✔ Suite ReleaseCandidateEvidenceTests passed after 77.309 seconds. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +✔ Suite GrayscaleSystemsTests passed after 77.308 seconds. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.009 seconds. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.008 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.008 seconds. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +◇ Test awarenessBlockFailsClosed() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.078 seconds. +✔ Test awarenessBlockFailsClosed() passed after 0.078 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.078 seconds. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.006 seconds. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.006 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.006 seconds. +✔ Suite HeatReinforcementTests passed after 77.403 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.004 seconds. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.004 seconds. +✔ Suite ContractVectorTests passed after 77.414 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 1.332 seconds. +✔ Suite AwarenessTests passed after 78.747 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 4.177 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test ghostFadesAfterItsTerminalTick() passed after 3.966 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 10.621 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 2.240 seconds. +✔ Suite GhostRunTests passed after 96.316 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 59.716 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.024 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.903 seconds. +✔ Suite GateVerificationTests passed after 104.133 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 80.817 seconds. +✔ Suite PacingSegmentsTests passed after 121.328 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 165.647 seconds. +✔ Suite CameraFairnessTests passed after 165.651 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 168.776 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 8.862 seconds. +✔ Suite GameFeelTests passed after 246.848 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 319.451 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 374.188 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 423.985 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 123.020 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 442.479 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 422.377 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 472.909 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.005 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 535.629 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 188.194 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.031 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 4.012 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.224 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.017 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.164 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.015 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.013 seconds. +✔ Suite TransitPatrolTests passed after 688.993 seconds. +✔ Test run with 773 tests in 109 suites passed after 688.996 seconds. diff --git a/docs/review/camera-shared-scene/final/BP004-candidate-integrity-0.png b/docs/review/camera-shared-scene/final/BP004-candidate-integrity-0.png new file mode 100644 index 00000000..900fd5a0 Binary files /dev/null and b/docs/review/camera-shared-scene/final/BP004-candidate-integrity-0.png differ diff --git a/docs/review/camera-shared-scene/final/BP004-candidate-integrity-1.png b/docs/review/camera-shared-scene/final/BP004-candidate-integrity-1.png new file mode 100644 index 00000000..e557cb64 Binary files /dev/null and b/docs/review/camera-shared-scene/final/BP004-candidate-integrity-1.png differ diff --git a/docs/review/camera-shared-scene/final/BP004-candidate-integrity-2.png b/docs/review/camera-shared-scene/final/BP004-candidate-integrity-2.png new file mode 100644 index 00000000..9a406771 Binary files /dev/null and b/docs/review/camera-shared-scene/final/BP004-candidate-integrity-2.png differ diff --git a/docs/review/camera-shared-scene/final/BP004-candidate-integrity-3.png b/docs/review/camera-shared-scene/final/BP004-candidate-integrity-3.png new file mode 100644 index 00000000..c3c32f6d Binary files /dev/null and b/docs/review/camera-shared-scene/final/BP004-candidate-integrity-3.png differ diff --git a/docs/review/camera-shared-scene/final/BP004-candidate-post-action-records.json b/docs/review/camera-shared-scene/final/BP004-candidate-post-action-records.json new file mode 100644 index 00000000..92e5752c --- /dev/null +++ b/docs/review/camera-shared-scene/final/BP004-candidate-post-action-records.json @@ -0,0 +1,338 @@ +[ + { + "actualFrame" : "camera_operational_idle#1", + "displayTime" : 168423.06343283338, + "fieldPresent" : true, + "integrity" : 3, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_operational_idle#2", + "displayTime" : 168423.94760637503, + "fieldPresent" : true, + "integrity" : 3, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#1", + "displayTime" : 168424.16340750005, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#2", + "displayTime" : 168424.24021475003, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#2", + "displayTime" : 168424.29706550002, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 168424.40626275004, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 168424.43333333338, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 168424.45000000004, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 168424.4666666667, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 168424.48333333337, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 168424.50000000003, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 168424.51666666669, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 168424.53333333338, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 168424.55000000005, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 168424.56666666671, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 168424.58333333337, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 168424.60000000003, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 168424.6166666667, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 168424.63333333336, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 168424.65000000002, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 168424.66666666672, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 168424.72727550004, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 168424.75000000003, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 168424.76666666669, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 168424.78333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 168424.80000000005, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 168424.81666666671, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 168424.83333333337, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 168424.85000000003, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 168424.8666666667, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 168424.88333333336, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 168424.90000000002, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 168424.91666666672, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 168424.93333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 168424.95000000004, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 168424.9666666667, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 168424.98333333337, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 168425.00000000003, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 168425.01666666669, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 168425.03333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 168425.05000000005, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroyed_idle#2", + "displayTime" : 168425.06666666671, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + } +] \ No newline at end of file diff --git a/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-0.png b/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-0.png new file mode 100644 index 00000000..e803a5d1 Binary files /dev/null and b/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-0.png differ diff --git a/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-1.png b/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-1.png new file mode 100644 index 00000000..c61027a2 Binary files /dev/null and b/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-1.png differ diff --git a/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-2.png b/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-2.png new file mode 100644 index 00000000..9f000cf9 Binary files /dev/null and b/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-2.png differ diff --git a/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-3.png b/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-3.png new file mode 100644 index 00000000..782415af Binary files /dev/null and b/docs/review/camera-shared-scene/final/BP004-shared-scene-integrity-3.png differ diff --git a/docs/review/camera-shared-scene/final/BP004-shared-scene-record.txt b/docs/review/camera-shared-scene/final/BP004-shared-scene-record.txt new file mode 100644 index 00000000..48857ade --- /dev/null +++ b/docs/review/camera-shared-scene/final/BP004-shared-scene-record.txt @@ -0,0 +1,7 @@ +Actual GameScene/WorldRenderer/HUD; 704x326 logical viewport. Complete camera +candidates use the production integrity policy, with Reduced Motion settled +frames. Painted neutral player and constrained building are review assets. +Explicit composition placements; not a legal encounter or animation capture. +Geometry mapping and player locomotion remain unaccepted. Native frame scale +must be read from the exported pixel dimensions. Camera texture filtering is +nearest; other high-resolution composition sources use linear filtering. \ No newline at end of file diff --git a/docs/review/camera-shared-scene/final/comparison-grayscale.png b/docs/review/camera-shared-scene/final/comparison-grayscale.png new file mode 100644 index 00000000..b85e582e Binary files /dev/null and b/docs/review/camera-shared-scene/final/comparison-grayscale.png differ diff --git a/docs/review/camera-shared-scene/final/comparison-half.png b/docs/review/camera-shared-scene/final/comparison-half.png new file mode 100644 index 00000000..0efba09a Binary files /dev/null and b/docs/review/camera-shared-scene/final/comparison-half.png differ diff --git a/docs/review/camera-shared-scene/final/comparison-native.png b/docs/review/camera-shared-scene/final/comparison-native.png new file mode 100644 index 00000000..b673584a Binary files /dev/null and b/docs/review/camera-shared-scene/final/comparison-native.png differ diff --git a/docs/review/camera-shared-scene/final/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json b/docs/review/camera-shared-scene/final/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json new file mode 100644 index 00000000..d529a681 --- /dev/null +++ b/docs/review/camera-shared-scene/final/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.850024938583374" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-scene/final/criticalIntegrityWinsOverTransientHitClip-summary.json b/docs/review/camera-shared-scene/final/criticalIntegrityWinsOverTransientHitClip-summary.json new file mode 100644 index 00000000..5e07c02a --- /dev/null +++ b/docs/review/camera-shared-scene/final/criticalIntegrityWinsOverTransientHitClip-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "1.0333459377288818" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/criticalIntegrityWinsOverTransientHitClip()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/criticalIntegrityWinsOverTransientHitClip()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "criticalIntegrityWinsOverTransientHitClip()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-scene/final/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json b/docs/review/camera-shared-scene/final/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json new file mode 100644 index 00000000..b8e28467 --- /dev/null +++ b/docs/review/camera-shared-scene/final/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.7808208465576172" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-scene/final/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json b/docs/review/camera-shared-scene/final/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json new file mode 100644 index 00000000..3be0a4cc --- /dev/null +++ b/docs/review/camera-shared-scene/final/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.3282179832458496" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-scene/final/integrity-0-native.png b/docs/review/camera-shared-scene/final/integrity-0-native.png new file mode 100644 index 00000000..d96fe287 Binary files /dev/null and b/docs/review/camera-shared-scene/final/integrity-0-native.png differ diff --git a/docs/review/camera-shared-scene/final/integrity-1-native.png b/docs/review/camera-shared-scene/final/integrity-1-native.png new file mode 100644 index 00000000..8dd431aa Binary files /dev/null and b/docs/review/camera-shared-scene/final/integrity-1-native.png differ diff --git a/docs/review/camera-shared-scene/final/integrity-2-native.png b/docs/review/camera-shared-scene/final/integrity-2-native.png new file mode 100644 index 00000000..9c598857 Binary files /dev/null and b/docs/review/camera-shared-scene/final/integrity-2-native.png differ diff --git a/docs/review/camera-shared-scene/final/integrity-3-native.png b/docs/review/camera-shared-scene/final/integrity-3-native.png new file mode 100644 index 00000000..a1b0ea7b Binary files /dev/null and b/docs/review/camera-shared-scene/final/integrity-3-native.png differ diff --git a/docs/review/camera-shared-scene/final/manifest.json b/docs/review/camera-shared-scene/final/manifest.json new file mode 100644 index 00000000..c01b6088 --- /dev/null +++ b/docs/review/camera-shared-scene/final/manifest.json @@ -0,0 +1,62 @@ +[ + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-integrity-3", + "uti": "public.png", + "path": "BP004-shared-scene-integrity-3.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-integrity-2", + "uti": "public.png", + "path": "BP004-shared-scene-integrity-2.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-integrity-1", + "uti": "public.png", + "path": "BP004-shared-scene-integrity-1.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-integrity-0", + "uti": "public.png", + "path": "BP004-shared-scene-integrity-0.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-record", + "uti": "public.plain-text", + "path": "BP004-shared-scene-record.txt" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-3", + "uti": "public.png", + "path": "BP004-candidate-integrity-3.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-2", + "uti": "public.png", + "path": "BP004-candidate-integrity-2.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-1", + "uti": "public.png", + "path": "BP004-candidate-integrity-1.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-0", + "uti": "public.png", + "path": "BP004-candidate-integrity-0.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-post-action-records", + "uti": "public.json", + "path": "BP004-candidate-post-action-records.json" + } +] diff --git a/docs/review/camera-shared-scene/final/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json b/docs/review/camera-shared-scene/final/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json new file mode 100644 index 00000000..74874f35 --- /dev/null +++ b/docs/review/camera-shared-scene/final/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.8045530319213867" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-scene/final/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json b/docs/review/camera-shared-scene/final/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json new file mode 100644 index 00000000..b2bc3a47 --- /dev/null +++ b/docs/review/camera-shared-scene/final/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "1.315864086151123" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-scene/final/result.json b/docs/review/camera-shared-scene/final/result.json new file mode 100644 index 00000000..6b0a6272 --- /dev/null +++ b/docs/review/camera-shared-scene/final/result.json @@ -0,0 +1,608 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~DIBIDFtHP5eZJpGnwX75noGC_S9dxzoQVD-U1VJflTzm11TsWJjbD3xD9pQSZT01z7AEPAIo0ww96xPZqIHV7g==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~vT8_S-KCrpoiRyKaeWUaGq9TkYay5yE0GfvfYvLWF8lpAAx3Rb2174H2c9xO29T-Onvcq1XLQ0XiXGa5MUj72A==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "104" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~aGCqhzQotu1DrIGnS9taTlmZqyH2qGTgq6ApQyJo9KPXHO5UPWqVD9CCmY-7liRc-EUEOSe_b3axKgaRBIyyng==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~KLcLvg6ieVCPCpjO0Hc-gTFHeHrvsAVILovT-u7eqxtD9JIe-wy4AGakVst1bRccJWV42RRBEki0G2vNE-qB-w==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:04:38.835-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:01:28.834-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~fZvrUM2kwVdfXmtci_WJE31jGoMRUxfWOXtjT_isOCLx5aBY5yZHWp-j7n2rc1tYA69fGgVp1FmYVIU0WToJyw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "104" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/camera-shared-scene/final/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json b/docs/review/camera-shared-scene/final/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json new file mode 100644 index 00000000..aa429720 --- /dev/null +++ b/docs/review/camera-shared-scene/final/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json @@ -0,0 +1,664 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "activitySummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-3_0_503BA5B9-8EAA-4459-9BA2-1AA33C0D97F9.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-3" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~e5v0tPpK_DT8MbbQflV7RxjlJ921KoAsgcgsrFZQ5N7jsod4331ppUKBeBOCQgY-R1tFOSkCn2-fN0ZCLeOevw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "38129" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.030-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "D6862DA9-C606-4971-B7CB-9FE723B3AD9D" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.032-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.030-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-3'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "503BA5B9-8EAA-4459-9BA2-1AA33C0D97F9" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-2_0_DEE0A4EB-C9FB-475B-93E7-D9FECB2350C2.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-2" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~pvGRTNDixVd4G0syvxjJ1leZhT5jb1VLlwBzvp2GAww4yD2iiUwgtsTWJLFH04jTyUGD73gD5iJVoe8dss-xYw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "38688" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.036-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "F808E1D6-8235-4EE0-9BA5-327D19F411C1" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.036-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.036-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-2'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "DEE0A4EB-C9FB-475B-93E7-D9FECB2350C2" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-1_0_787F0E69-EFC3-49C4-A585-58FE54FB74A9.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-1" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~EfygaFbTxjXKS4ovAUqiSLSSXEmxTAjCC393basqmOM9xJKw96wcCY85u55zYloX3AJUWDybGCWaGUQ6hN1vkQ==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "40165" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.040-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "8AD6D3DB-6BF7-4203-BA4A-8C0CA0E7EFB9" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.041-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.040-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-1'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "787F0E69-EFC3-49C4-A585-58FE54FB74A9" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-0_0_B3595D9D-3F39-4EC2-B8CD-E30FC0512B0D.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-0" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~mxIgaoPR0Ak_MMKAm-pnHtequhOuBEqRE86C3oDmurf5U3IeMquex4egG3EmmeKYlypg4VTsR_Cf4gPEF3QIkg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "40501" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.045-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "E68FA26A-B903-4E10-A825-AC9D867FF8D5" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.046-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.045-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-0'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "B3595D9D-3F39-4EC2-B8CD-E30FC0512B0D" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-post-action-records_0_82238D89-92B3-4D66-9BC6-98FBB7F54674.json" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-post-action-records" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~rPAcNACkztIcTnNWMfq4cZRHcfIMtqqgQypSpJGWMx-Wf8uVSC-YUAM-ZlkgRPjRVzI6UNUa54O4Xugd8PfX2g==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "7116" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.048-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.json" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "275B0B49-DDF1-4ACF-9BEB-FC2E7FFC4476" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.049-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:03:39.048-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-post-action-records'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "82238D89-92B3-4D66-9BC6-98FBB7F54674" + } + } + ] + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "2.1287879943847656" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "testCameraCandidatesActuallyPlayAndSettleInPresentedScene()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-scene/final/testCaptureCompleteCameraCandidatesInSharedScene-summary.json b/docs/review/camera-shared-scene/final/testCaptureCompleteCameraCandidatesInSharedScene-summary.json new file mode 100644 index 00000000..64833852 --- /dev/null +++ b/docs/review/camera-shared-scene/final/testCaptureCompleteCameraCandidatesInSharedScene-summary.json @@ -0,0 +1,664 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "activitySummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-integrity-3_0_3671124D-5816-4E90-B5B2-6AF6D9C3CC43.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-integrity-3" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~x9Fw_Cc61p2k1XIOY2vxT0t65o2SCTMe-1Jf2iQsxiHUHCq5WhrFLH3nlB1GQI37lfn9SBs9GHsMjlEf02-LEg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1217883" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.325-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "CA7ADEB9-2E41-46FA-8759-465F5FDE38E5" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.328-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.326-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-integrity-3'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "3671124D-5816-4E90-B5B2-6AF6D9C3CC43" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-integrity-2_0_30510C86-0E08-44EB-BAA0-7487F64571A6.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-integrity-2" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~NKjL5eMmVmIu8hNQ13LjjY_Cxvf_Yds380kfQw-u20tNqncr8f9mWabcFpQbMJPoTZ1ZYnxJqaFnjazbwwPmmA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1218468" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.642-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "B65BC3A3-9C38-4BD8-89CB-85D7469E3184" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.644-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.643-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-integrity-2'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "30510C86-0E08-44EB-BAA0-7487F64571A6" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-integrity-1_0_F91A9F80-28E6-4394-8925-DBE5AC2FAAFF.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-integrity-1" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~Xy-ZCh2wQQ7m9F6r5Wv7WMGHbq8JKFOX8wEJ4_uk2HTnzaMROiXpC79IEAdcFnp8SrBbAqLrEkl8dBFUcXE2QQ==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1219721" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.980-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "ACD441BF-677A-4227-8D5F-E4FFE6554B44" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.982-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:22.981-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-integrity-1'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "F91A9F80-28E6-4394-8925-DBE5AC2FAAFF" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-integrity-0_0_79E4CB01-9941-4DDC-B197-0248CB3DB28E.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-integrity-0" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~E8z15k9atC1xE88F_HlMTqZ1vcL9FBnL8e2GIXXNrC9dzPkpF9nU1lEI8a2riUrp53iCms-kUhePpHPhIPnAqw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1201918" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:23.326-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "F3187ECF-D8F8-4739-867E-8ED8C4CDD563" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:23.327-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:23.326-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-integrity-0'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "79E4CB01-9941-4DDC-B197-0248CB3DB28E" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-record_0_0EFCEC38-8057-4B08-BBD8-38E3DE03DA44.txt" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-record" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~TEOz_x80XOMcp5XsgQ5UuIBaXaDfI01H9_XJcpZtrH9U42QERSIFy8X5jOpMAGKnZZ2F7bTG1gtBy9OmTN1Qew==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "532" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:23.328-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.plain-text" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "2E19EC3C-059F-4A53-8634-895A21CEF0C9" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:23.329-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:02:23.328-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-record'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "0EFCEC38-8057-4B08-BBD8-38E3DE03DA44" + } + } + ] + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "4.639868974685669" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "testCaptureCompleteCameraCandidatesInSharedScene()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/camera-shared-source/README.md b/docs/review/camera-shared-source/README.md new file mode 100644 index 00000000..756d9e69 --- /dev/null +++ b/docs/review/camera-shared-source/README.md @@ -0,0 +1,13 @@ +# Municipal camera shared source — BP-004 + +This source repair addresses the previously measured changing pole/base across four settled-state images. It implements the existing BP-004 fixed-mount requirement at SS-specs 521aec30cbb926938591d1ffb22233b24102732c; no new design or gameplay policy is introduced. + +The original intact image supplies one permanent mount, pole and base. An explicitly authored polygon separates the changing dome. Four independently editable dome layers compose over that shared structure. No image generation, warping, new material or inferred collision geometry was used. Original input PNGs are retained under source/; build.py reproduces all layers and exports with Python 3 and Pillow. + +Verification: every RGBA pixel outside the dome mask matches the intact original in every state (zero differing pixels). The reconstructed intact image matches the original byte-for-byte in decoded RGBA. All four images retain the 256×384 texture canvas, 64×96 logical canvas and (32,88) logical ground anchor. source-record.json records mask vertices, input/output hashes and bounds. The polygon is an authored visual layer boundary, not an anatomical measurement or simulation geometry. + +Visual review: comparison.png shows all four states at source size and 64×96 logical size. The permanent structure remains stable and destroyed dome remains dark; dome damage remains separate from the permanent suspension arm. The damage notches remain runtime overlays and are intentionally not baked into these sources. + +Scope: review source only. The active assets and test-bundle assets are unchanged. These four settled states are not the required six animation clips or sixteen delivery slots. Operational, hit, critical-entry, destruction, field-off and destroyed-idle timing, interruption, Reduced Motion and legal encounter captures remain required. No runtime or device acceptance is claimed. Character animation, environment projection and player outline work remain open. + +Run `python3 build.py` from any directory to reproduce. No new app/core test result is claimed for this offline art-only change; the preceding full app run passed 100 simulator test executions. diff --git a/docs/review/camera-shared-source/build.py b/docs/review/camera-shared-source/build.py new file mode 100644 index 00000000..63cc377f --- /dev/null +++ b/docs/review/camera-shared-source/build.py @@ -0,0 +1,30 @@ +from pathlib import Path +import json, hashlib +from PIL import Image, ImageDraw, ImageChops +ROOT=Path(__file__).resolve().parent +STATES=['intact','damaged','critical','destroyed'] +def digest(p): return hashlib.sha256(p.read_bytes()).hexdigest() +# Authored source boundary around the changing dome; the suspension arm stays shared. +polygon=[(164,155),(172,143),(185,133),(199,137),(218,137),(227,127),(241,139),(255,154),(256,226),(163,226)] +mask=Image.new('L',(256,384));ImageDraw.Draw(mask).polygon(polygon,fill=255) +mask.save(ROOT/'head-mask.png') +intact=Image.open(ROOT/'source/intact.png').convert('RGBA') +shared=intact.copy();shared.putalpha(ImageChops.multiply(shared.getchannel('A'),ImageChops.invert(mask))) +shared.save(ROOT/'shared-mount.png') +report=[];sheet=Image.new('RGB',(1024,480),'#30383b');draw=ImageDraw.Draw(sheet) +for i,s in enumerate(STATES): + source=Image.open(ROOT/f'source/{s}.png').convert('RGBA') + head=source.copy();head.putalpha(ImageChops.multiply(head.getchannel('A'),mask));head.save(ROOT/f'{s}-head.png') + assembled=Image.alpha_composite(shared,head);assembled.save(ROOT/f'{s}.png') + # Hard partition reconstructs original intact and keeps every exterior RGBA pixel fixed. + outside=ImageChops.invert(mask) + diff=ImageChops.difference(assembled,intact) + changed=sum(any(c for c in p) and m>0 for p,m in zip(diff.getdata(),outside.getdata())) + assert changed==0 + if s=='intact': assert assembled.tobytes()==intact.tobytes() + sheet.paste(assembled,(i*256,25),assembled) + native=assembled.resize((64,96),Image.Resampling.LANCZOS);sheet.paste(native,(i*256+96,380),native) + draw.text((i*256+12,8),s,fill='white') + report.append({'state':s,'sourceSha256':digest(ROOT/f'source/{s}.png'),'deliverySha256':digest(ROOT/f'{s}.png'),'outsideHeadChangedRGBApixels':changed,'alphaBounds':assembled.getbbox()}) +sheet.save(ROOT/'comparison.png') +(ROOT/'source-record.json').write_text(json.dumps({'status':'REVIEW_SOURCE_NOT_ADMITTED','canvasPixels':[256,384],'logicalCanvas':[64,96],'logicalGroundAnchor':[32,88],'headPolygon':polygon,'polygonStatus':'authored mask, not collision geometry','states':report},indent=2)+'\n') diff --git a/docs/review/camera-shared-source/comparison.png b/docs/review/camera-shared-source/comparison.png new file mode 100644 index 00000000..75716b0d Binary files /dev/null and b/docs/review/camera-shared-source/comparison.png differ diff --git a/docs/review/camera-shared-source/critical-head.png b/docs/review/camera-shared-source/critical-head.png new file mode 100644 index 00000000..2d178cbe Binary files /dev/null and b/docs/review/camera-shared-source/critical-head.png differ diff --git a/docs/review/camera-shared-source/critical.png b/docs/review/camera-shared-source/critical.png new file mode 100644 index 00000000..a1495fd4 Binary files /dev/null and b/docs/review/camera-shared-source/critical.png differ diff --git a/docs/review/camera-shared-source/damaged-head.png b/docs/review/camera-shared-source/damaged-head.png new file mode 100644 index 00000000..bbd577c8 Binary files /dev/null and b/docs/review/camera-shared-source/damaged-head.png differ diff --git a/docs/review/camera-shared-source/damaged.png b/docs/review/camera-shared-source/damaged.png new file mode 100644 index 00000000..3255642f Binary files /dev/null and b/docs/review/camera-shared-source/damaged.png differ diff --git a/docs/review/camera-shared-source/destroyed-head.png b/docs/review/camera-shared-source/destroyed-head.png new file mode 100644 index 00000000..e69e749e Binary files /dev/null and b/docs/review/camera-shared-source/destroyed-head.png differ diff --git a/docs/review/camera-shared-source/destroyed.png b/docs/review/camera-shared-source/destroyed.png new file mode 100644 index 00000000..e89fd25f Binary files /dev/null and b/docs/review/camera-shared-source/destroyed.png differ diff --git a/docs/review/camera-shared-source/head-mask.png b/docs/review/camera-shared-source/head-mask.png new file mode 100644 index 00000000..79232f37 Binary files /dev/null and b/docs/review/camera-shared-source/head-mask.png differ diff --git a/docs/review/camera-shared-source/intact-head.png b/docs/review/camera-shared-source/intact-head.png new file mode 100644 index 00000000..a12bca85 Binary files /dev/null and b/docs/review/camera-shared-source/intact-head.png differ diff --git a/docs/review/camera-shared-source/intact.png b/docs/review/camera-shared-source/intact.png new file mode 100644 index 00000000..5f240f02 Binary files /dev/null and b/docs/review/camera-shared-source/intact.png differ diff --git a/docs/review/camera-shared-source/sha256.json b/docs/review/camera-shared-source/sha256.json new file mode 100644 index 00000000..23f749fc --- /dev/null +++ b/docs/review/camera-shared-source/sha256.json @@ -0,0 +1,20 @@ +{ + "README.md": "24c2deacfc1b99e548fb29aa0dec5b46f05618a8b7ac27c9e2e87976823b67b6", + "build.py": "be4c1eb299b8ac3d050ae0de228dec4f9efb4315bf46be1106e06cc73b2db56a", + "comparison.png": "41da71114c2219519224973941bc59f7b50a821f03e5a40d7fa69c29b23bd8ca", + "critical-head.png": "9a6e3576c0fe2f7aa0a123fa26b5bc94ac9d35960b4165760e0aea33f44ed0ad", + "critical.png": "baae195d331ffb11e1e62193339834d9e8e6229a47c5d565944cc89c8abdd438", + "damaged-head.png": "207dedaaa4c57f091228062f299968e129def34efb87f2162a5a9f0f94b1192c", + "damaged.png": "0d6b70f2f1ed172c6e726d8a8f0f4b69f7e3e68a5f2c08d41d8fc782dcb14fc9", + "destroyed-head.png": "33642b48db76b55256329c7f17e933d5d7b5ec29ce6dac902eb6e7840487d99b", + "destroyed.png": "7847e977926526762f968fc72e76083c646f553e7c1b2a5a8a30ddafd48bb3b6", + "head-mask.png": "3ce40939f3b3374c8316fca0cdb447d93db4bbe4bd4748d7a1ca248262379f36", + "intact-head.png": "a73f77de6bbadf4e7e444a7e41b6a9083bdcfedaa9100031774df6d61581d148", + "intact.png": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "shared-mount.png": "855df971dbd87c51c0ecce3d3a00fa1ad4c4ed8f6b52c8b2816be6e347dd9dbf", + "source/critical.png": "b24234d6a58659700539415e5b0e4b930a928ff6f491e082110d19d1ca96a962", + "source/damaged.png": "dfc4f40eec4303c1836ffce056ab8aaa979bf1d385b65816a7087e63e149ad96", + "source/destroyed.png": "b9e56b70624e7714f11c417b453d51fe4f57bce073e920b5392ab879999d9af9", + "source/intact.png": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "source-record.json": "c78a6f6a4d13e68f7dc4aaaa38a033ed18c1787b403eb726619e382328f27686" +} diff --git a/docs/review/camera-shared-source/shared-mount.png b/docs/review/camera-shared-source/shared-mount.png new file mode 100644 index 00000000..ebae41e8 Binary files /dev/null and b/docs/review/camera-shared-source/shared-mount.png differ diff --git a/docs/review/camera-shared-source/source-record.json b/docs/review/camera-shared-source/source-record.json new file mode 100644 index 00000000..706f5ab9 --- /dev/null +++ b/docs/review/camera-shared-source/source-record.json @@ -0,0 +1,108 @@ +{ + "status": "REVIEW_SOURCE_NOT_ADMITTED", + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalGroundAnchor": [ + 32, + 88 + ], + "headPolygon": [ + [ + 164, + 155 + ], + [ + 172, + 143 + ], + [ + 185, + 133 + ], + [ + 199, + 137 + ], + [ + 218, + 137 + ], + [ + 227, + 127 + ], + [ + 241, + 139 + ], + [ + 255, + 154 + ], + [ + 256, + 226 + ], + [ + 163, + 226 + ] + ], + "polygonStatus": "authored mask, not collision geometry", + "states": [ + { + "state": "intact", + "sourceSha256": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "deliverySha256": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "outsideHeadChangedRGBApixels": 0, + "alphaBounds": [ + 86, + 39, + 255, + 352 + ] + }, + { + "state": "damaged", + "sourceSha256": "dfc4f40eec4303c1836ffce056ab8aaa979bf1d385b65816a7087e63e149ad96", + "deliverySha256": "0d6b70f2f1ed172c6e726d8a8f0f4b69f7e3e68a5f2c08d41d8fc782dcb14fc9", + "outsideHeadChangedRGBApixels": 0, + "alphaBounds": [ + 86, + 39, + 255, + 352 + ] + }, + { + "state": "critical", + "sourceSha256": "b24234d6a58659700539415e5b0e4b930a928ff6f491e082110d19d1ca96a962", + "deliverySha256": "baae195d331ffb11e1e62193339834d9e8e6229a47c5d565944cc89c8abdd438", + "outsideHeadChangedRGBApixels": 0, + "alphaBounds": [ + 86, + 39, + 255, + 352 + ] + }, + { + "state": "destroyed", + "sourceSha256": "b9e56b70624e7714f11c417b453d51fe4f57bce073e920b5392ab879999d9af9", + "deliverySha256": "7847e977926526762f968fc72e76083c646f553e7c1b2a5a8a30ddafd48bb3b6", + "outsideHeadChangedRGBApixels": 0, + "alphaBounds": [ + 86, + 39, + 255, + 352 + ] + } + ] +} diff --git a/docs/review/camera-shared-source/source/critical.png b/docs/review/camera-shared-source/source/critical.png new file mode 100644 index 00000000..3ad33ff0 Binary files /dev/null and b/docs/review/camera-shared-source/source/critical.png differ diff --git a/docs/review/camera-shared-source/source/damaged.png b/docs/review/camera-shared-source/source/damaged.png new file mode 100644 index 00000000..b27173f6 Binary files /dev/null and b/docs/review/camera-shared-source/source/damaged.png differ diff --git a/docs/review/camera-shared-source/source/destroyed.png b/docs/review/camera-shared-source/source/destroyed.png new file mode 100644 index 00000000..9bae1220 Binary files /dev/null and b/docs/review/camera-shared-source/source/destroyed.png differ diff --git a/docs/review/camera-shared-source/source/intact.png b/docs/review/camera-shared-source/source/intact.png new file mode 100644 index 00000000..5f240f02 Binary files /dev/null and b/docs/review/camera-shared-source/source/intact.png differ diff --git a/docs/review/camera-state-study/export_camera_states.py b/docs/review/camera-state-study/export_camera_states.py new file mode 100644 index 00000000..5acd189b --- /dev/null +++ b/docs/review/camera-state-study/export_camera_states.py @@ -0,0 +1,33 @@ +from pathlib import Path +from PIL import Image,ImageDraw,ImageChops +import json,hashlib,shutil,sys +root=Path('/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can');out=root/'outputs/SS-camera-state-study' +src=Path('/Users/appliedalchemylabs/.codex/generated_images/01a137ae-17b7-7103-897c-17913923752e/exec-11dca7e6-b87d-4957-95d0-24fe2a4b074e.png') +if len(sys.argv)>1: src=Path(sys.argv[1]) +if len(sys.argv)>2: out=Path(sys.argv[2]) +out.mkdir(parents=True,exist_ok=True) +if src.resolve() != (out/'source.png').resolve(): shutil.copy2(src,out/'source.png') +sheet=Image.open(src).convert('RGBA') +frames=[];records=[];scale=312/658 +for i,name in enumerate(['intact','damaged','critical','destroyed']): + cell=sheet.crop((i*512,0,(i+1)*512,768));alpha=cell.getchannel('A').point(lambda a:0 if a<=32 else 255 if a>=240 else round((a-32)*255/208));cell.putalpha(alpha) + base=alpha.point(lambda a:255 if a>=128 else 0).crop((0,500,350,768)).getbbox();assert base + anchor=((base[0]+base[2])/2,500+base[3]) + dx=128-scale*anchor[0];dy=352-scale*anchor[1] + frame=cell.transform((256,384),Image.Transform.AFFINE,(1/scale,0,-dx/scale,0,1/scale,-dy/scale),Image.Resampling.BICUBIC) + frame.save(out/(name+'.png'));frames.append(frame) + records.append({'state':name,'sourceCell':[i*512,0,(i+1)*512,768],'sourceBaseAnchor':anchor,'scale':scale,'canvasPixels':[256,384],'logicalCanvas':[64,96],'logicalAnchor':[32,88],'alphaRemap':'<=32 zero, >=240 opaque, linear between','sha256':hashlib.sha256((out/(name+'.png')).read_bytes()).hexdigest()}) +plate=Image.new('RGB',(1024,464),'#343a3c');d=ImageDraw.Draw(plate) +for i,(frame,record) in enumerate(zip(frames,records)): + d.text((i*256+12,8),record['state'],fill='white');plate.paste(frame,(i*256,32),frame) + d.line((i*256,384,i*256+256,384),fill='#678b91');d.ellipse((i*256+125,381,i*256+131,387),fill='#f2bb6a') + small=frame.resize((64,96),Image.Resampling.LANCZOS);plate.paste(small,(i*256+180,355),small) +plate.save(out/'registered-states.png') +# Compare alpha silhouettes of the permanent lower pole/base after registration. +base0=frames[0].getchannel('A').crop((0,220,256,384)).point(lambda a:255 if a>=128 else 0) +for frame,record in zip(frames,records): + mask=frame.getchannel('A').crop((0,220,256,384)).point(lambda a:255 if a>=128 else 0) + diff=ImageChops.difference(base0,mask) + record['lowerPoleBaseDifferentMaskPixels']=sum(v>0 for v in diff.get_flattened_data()) +(out/'registration.json').write_text(json.dumps({'status':'CANDIDATE_STATES_ONLY','sourceSha256':hashlib.sha256(src.read_bytes()).hexdigest(),'states':records},indent=2)+'\n') +print(json.dumps(records,indent=2)) diff --git a/docs/review/camera-state-study/prompt.txt b/docs/review/camera-state-study/prompt.txt new file mode 100644 index 00000000..81aa3d52 --- /dev/null +++ b/docs/review/camera-state-study/prompt.txt @@ -0,0 +1,7 @@ +Use case: precise-object-edit. Input is the exact complete municipal surveillance camera approved for the current benchmark study: dark cast metal pole and round base, ivory cantilever arm with pendant ivory dome camera and dark lens underside, cyan tiny indicator. Produce a horizontal state sheet of EXACTLY FOUR copies in equal cells, aligned at identical pole ground anchors, identical scale, elevated three-quarter top-down viewpoint, lighting, materials and silhouette. Transparent background. No captions/text/grid/floor/shadows. +Change only the CAMERA HEAD damage condition between the four cells. The pole, sphere finial, mount arm, electrical box and base must remain visually identical and motionless in all four. Never add another housing or camera. Keep the head attached at the same mount location. +Cell1 intact: exact reference. +Cell2 damaged: one clear dark dent/crack in the ivory head shell with a small chipped edge; still mounted and functional; tiny indicator remains cyan. +Cell3 critical: two conspicuous separated breaks in the head shell, exposed dark inner assembly, damaged lens, remains attached. Readable even at small scale. No bloom, fire or smoke. +Cell4 destroyed: head dark, broken glass/lens and crushed shell, no illuminated indicator or cyan pixels, head stays attached to unchanged arm; no debris outside head, pole and base intact. +Damage must alter material silhouette/details, not merely change color. Preserve the same permanent structure pixel-for-pixel as closely as possible. This is a coherent damage progression of one object, not four alternate municipal housings. Restrained painterly finish exactly matching reference; crisp intentional details. diff --git a/docs/review/camera-state-study/registered-states.png b/docs/review/camera-state-study/registered-states.png new file mode 100644 index 00000000..48eb6f3c Binary files /dev/null and b/docs/review/camera-state-study/registered-states.png differ diff --git a/docs/review/camera-state-study/registration.json b/docs/review/camera-state-study/registration.json new file mode 100644 index 00000000..6ee7f0ad --- /dev/null +++ b/docs/review/camera-state-study/registration.json @@ -0,0 +1,122 @@ +{ + "status": "CANDIDATE_STATES_ONLY", + "sourceSha256": "1177d7a6f75d7913016f94f6c3b99662a551ae2660b31584e70b9eea52815854", + "states": [ + { + "state": "intact", + "sourceCell": [ + 0, + 0, + 512, + 768 + ], + "sourceBaseAnchor": [ + 235.5, + 692 + ], + "scale": 0.47416413373860183, + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "alphaRemap": "<=32 zero, >=240 opaque, linear between", + "sha256": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "lowerPoleBaseDifferentMaskPixels": 0 + }, + { + "state": "damaged", + "sourceCell": [ + 512, + 0, + 1024, + 768 + ], + "sourceBaseAnchor": [ + 214.5, + 692 + ], + "scale": 0.47416413373860183, + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "alphaRemap": "<=32 zero, >=240 opaque, linear between", + "sha256": "dfc4f40eec4303c1836ffce056ab8aaa979bf1d385b65816a7087e63e149ad96", + "lowerPoleBaseDifferentMaskPixels": 67 + }, + { + "state": "critical", + "sourceCell": [ + 1024, + 0, + 1536, + 768 + ], + "sourceBaseAnchor": [ + 193.0, + 692 + ], + "scale": 0.47416413373860183, + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "alphaRemap": "<=32 zero, >=240 opaque, linear between", + "sha256": "b24234d6a58659700539415e5b0e4b930a928ff6f491e082110d19d1ca96a962", + "lowerPoleBaseDifferentMaskPixels": 29 + }, + { + "state": "destroyed", + "sourceCell": [ + 1536, + 0, + 2048, + 768 + ], + "sourceBaseAnchor": [ + 172.0, + 692 + ], + "scale": 0.47416413373860183, + "canvasPixels": [ + 256, + 384 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "alphaRemap": "<=32 zero, >=240 opaque, linear between", + "sha256": "b9e56b70624e7714f11c417b453d51fe4f57bce073e920b5392ab879999d9af9", + "lowerPoleBaseDifferentMaskPixels": 27 + } + ] +} diff --git a/docs/review/camera-state-study/review.md b/docs/review/camera-state-study/review.md new file mode 100644 index 00000000..8ef0b637 --- /dev/null +++ b/docs/review/camera-state-study/review.md @@ -0,0 +1,19 @@ +# Municipal camera settled-state study — CAPTURED candidate + +Four physical conditions of the same municipal design: intact, damaged, critical and destroyed. The generated source is preserved in source.png; prompt.txt records the exact built-in image_gen prompt. Deterministic alpha cleanup and registration follow the user's authorization. export_camera_states.py in the review bundle reproduces the exports from that source. + +Each frame uses a 256×384 texture, 64×96 logical canvas and (32,88) ground anchor. The same global scale is used across states; per-cell translations align the measured base center. Registration records include original cells, source anchor coordinates, hashes and cleanup mapping. Inspection confirms a non-emissive destroyed image and physical breaks that do not depend solely on color. + +The permanent pole/base is not yet pixel-identical: compared with intact, lower-pole/base alpha masks differ at 67, 29 and 27 pixels in damaged, critical and destroyed states, respectively, on the 4× delivery canvas. These are measured differences, not a claim of visible jitter tolerance or final approval. Native-size overlay review and stable permanent structure still require completion. + +The DEBUG benchmark fixture selects these four textures by supplied snapshot integrity through the actual WorldRenderer. The real scene, HUD and field geometry are captured for integrity 3→2→1→0. The capture asserts texture selection, unchanged node position and absence of the legacy housing node. These are individually rendered states, not an authoritative combat run or transition animation. The destroyed capture visibly has no field; existing CameraPlaybackTests separately test event-driven field removal and interruption using current production art. + +The six required clip deliveries remain incomplete: four operational frames, two hit frames, three critical-entry frames, four destruction frames, one field-off frame and two destroyed-idle frames. These four stills do not fulfill those sixteen slots, and no production catalog or shipping asset admission changed. Persistent non-color notches and Captain distinction still need visual evidence. No physical-device test occurred. + +Source study and test assets are review-only. Building footprint alignment, ground quality, player animation and performance remain open independently. + +Validation: 83 iOS Swift Testing tests / 13 suites passed in 38.402 seconds, plus three XCTest checks. Four targeted core contract/catalog tests passed. Xcode result Test-SSRuntime-2026.10.14_10-51-37--0700.xcresult, iPhone 17 Pro iOS 26.5 simulator CACB3927-A76E-43A5-9ACA-C389EB38C0C3. Spec pin 262f4d66ddb271f5d4199be4ccfa130325f62221. Runtime base 4a63e77 plus the fixture changes in the commit containing this record. Original attachments remain in capture-clean/. + +![Real-renderer state comparison](runtime-states.png) + +Reproduce exports: `python3 export_camera_states.py /absolute/path/to/source.png /absolute/path/to/export-directory`. diff --git a/docs/review/camera-state-study/runtime-states.png b/docs/review/camera-state-study/runtime-states.png new file mode 100644 index 00000000..f23aabe6 Binary files /dev/null and b/docs/review/camera-state-study/runtime-states.png differ diff --git a/docs/review/character-body-pilot/build-body.py b/docs/review/character-body-pilot/build-body.py new file mode 100644 index 00000000..531ac399 --- /dev/null +++ b/docs/review/character-body-pilot/build-body.py @@ -0,0 +1,93 @@ +# BP-002 body silhouette pilot. Procedural editable source, not benchmark art admission. +import bpy, math +from mathutils import Vector +scene=bpy.context.scene;scene.frame_set(1) +rig=bpy.data.objects['SourceRig'] +collection=bpy.data.collections.new('HERO_hooded_body');scene.collection.children.link(collection) +def put(o): + for c in list(o.users_collection):c.objects.unlink(o) + collection.objects.link(o) +def material(name,color,roughness=.85): + m=bpy.data.materials.new(name);m.diffuse_color=(*color,1);m.use_nodes=True + bsdf=m.node_tree.nodes.get('Principled BSDF');bsdf.inputs['Base Color'].default_value=(*color,1);bsdf.inputs['Roughness'].default_value=roughness + return m +cloth=material('MAT_charcoal_coat',(.065,.071,.078));pants=material('MAT_trousers',(.035,.041,.047));leather=material('MAT_dark_leather',(.025,.028,.03));trim=material('MAT_muted_tan',(.32,.27,.19));void=material('MAT_hood_shadow',(.008,.009,.01));sole=material('MAT_boot_sole',(.013,.014,.015)) +def bind(o,bone): + group=o.vertex_groups.new(name=bone);group.add(list(range(len(o.data.vertices))),1,'REPLACE') + mod=o.modifiers.new('EditableRigBinding','ARMATURE');mod.object=rig + o['source_role']='silhouette prototype; not admitted';o['bound_bone']=bone + return o +def mesh(name,verts,faces,mat,bone): + m=bpy.data.meshes.new(name);m.from_pydata(verts,[],faces);m.update();o=bpy.data.objects.new(name,m);collection.objects.link(o);m.materials.append(mat) + for p in m.polygons:p.use_smooth=True + bind(o,bone);return o +def ellipsoid(name,center,scale,mat,bone): + bpy.ops.mesh.primitive_uv_sphere_add(segments=24,ring_count=12,radius=1,location=center) + o=bpy.context.object;o.name=name;o.scale=scale + bpy.ops.object.transform_apply(location=False,rotation=False,scale=True);put(o);o.data.materials.append(mat) + for p in o.data.polygons:p.use_smooth=True + return bind(o,bone) +def segment(name,a,b,radii,mat,bone): + a=Vector(a);b=Vector(b);o=ellipsoid(name,(a+b)/2,(radii[0],radii[1],(b-a).length*.59),mat,bone) + o.rotation_mode='QUATERNION';o.rotation_quaternion=(b-a).to_track_quat('Z','Y');return o +def ringmesh(name,rings,mat,bone,open_front=False): + n=32;verts=[] + for z,wx,wy,cy in rings: + for i in range(n): + angle=(-math.pi/2+.18+(2*math.pi-.36)*i/(n-1)) if open_front else 2*math.pi*i/n + verts.append((wx*math.cos(angle),cy+wy*math.sin(angle),z)) + faces=[] + for j in range(len(rings)-1): + for i in range(n-1 if open_front else n):faces.append((j*n+i,j*n+(i+1)%n,(j+1)*n+(i+1)%n,(j+1)*n+i)) + if not open_front:faces += [tuple(reversed(range(n))),tuple((len(rings)-1)*n+i for i in range(n))] + o=mesh(name,verts,faces,mat,bone) + if open_front: + s=o.modifiers.new('ClothThickness','SOLIDIFY');s.thickness=.009 + return o +# Underlayer and flared open-front coat, separate editable pieces. +ellipsoid('HERO_underlayer',(0,0,1.28),(.213,.135,.28),pants,'torso') +coat=ringmesh('HERO_coat',[(.72,.29,.18,0),(.84,.265,.16,0),(1.03,.205,.135,0),(1.15,.205,.135,0),(1.37,.25,.15,0),(1.48,.23,.13,0)],cloth,'torso',True) +# Lower coat follows pelvis, upper coat blends into torso; preserves editable weights. +coat.vertex_groups.clear();gp=coat.vertex_groups.new(name='pelvis');gt=coat.vertex_groups.new(name='torso') +for v in coat.data.vertices: + t=max(0,min(1,(v.co.z-1.02)/.25));gp.add([v.index],1-t,'REPLACE');gt.add([v.index],t,'REPLACE') +ringmesh('HERO_belt',[(1.015,.214,.145,0),(1.055,.214,.145,0)],leather,'pelvis') +# Hood dome lofted from an open front rim to a closed rear, with thickness. +verts=[];faces=[];n=32 +for y,rx,rz in [(-.17,.18,.22),(-.1,.20,.25),(0,.205,.25),(.10,.17,.21),(.18,.06,.08)]: + for i in range(n): + a=2*math.pi*i/n;verts.append((rx*math.cos(a),y,1.65+rz*math.sin(a))) +for j in range(4): + for i in range(n):faces.append((j*n+i,j*n+(i+1)%n,(j+1)*n+(i+1)%n,(j+1)*n+i)) +faces.append(tuple(4*n+i for i in range(n))) +hood=mesh('HERO_hood',verts,faces,cloth,'head');solid=hood.modifiers.new('HoodThickness','SOLIDIFY');solid.thickness=.012 +ellipsoid('HERO_face_shadow',(0,-.155,1.63),(.145,.045,.185),void,'head') +ellipsoid('HERO_neck_wrap',(0,0,1.5),(.155,.14,.10),cloth,'torso') +# Narrow front hood trim as an editable mesh strip. +vs=[] +for radius in [1,1.035]: + for i in range(n): + a=2*math.pi*i/n;vs.append((radius*.18*math.cos(a),-.177,1.65+radius*.22*math.sin(a))) +mesh('HERO_hood_trim',vs,[(i,(i+1)%n,n+(i+1)%n,n+i) for i in range(n)],trim,'head') +for side,x in [('L',.14),('R',-.14)]: + for role,mat,radii in [('thigh',pants,(.10,.105)),('shin',pants,(.083,.085)),('upperArm',cloth,(.085,.085)),('forearm',cloth,(.07,.075))]: + b=rig.data.bones[role+'.'+side];segment('HERO_'+role+'_'+side,b.head_local,b.tail_local,radii,mat,role+'.'+side) + b=rig.data.bones['forearm.'+side];end=b.tail_local + ellipsoid('HERO_glove_'+side,end+Vector((0,-.012,-.035)),(.055,.06,.075),leather,'forearm.'+side) + ellipsoid('HERO_thumb_'+side,end+Vector((-.035 if side=='L' else .035,-.037,-.015)),(.025,.03,.045),leather,'forearm.'+side) + # Front knee pad stays with the shin in this first silhouette proof. + k=rig.data.bones['shin.'+side].head_local + ellipsoid('HERO_kneepad_'+side,k+Vector((0,-.08,-.045)),(.072,.025,.085),trim,'shin.'+side) + # Foot shells are constructed around the rig ankle, with actual sole at source z=0. + for role,rings,mat in [('boot',[(.035,.086,.17,-.075),(.07,.09,.17,-.075),(.13,.082,.145,-.055),(.22,.07,.075,0)],leather),('sole',[(0,.09,.175,-.075),(.035,.09,.175,-.075)],sole)]: + o=ringmesh('HERO_'+role+'_'+side,rings,mat,'foot.'+side) + for v in o.data.vertices:v.co.x+=x +# Asymmetric cross-body strap, front only at this blockout stage. +verts=[(-.17,-.154,1.08),(-.13,-.158,1.08),(.22,-.154,1.45),(.18,-.158,1.45)] +strap=mesh('HERO_front_strap',verts,[(0,1,2,3)],trim,'torso');s=strap.modifiers.new('StrapThickness','SOLIDIFY');s.thickness=.012 +ellipsoid('HERO_left_arm_patch',(.31,-.064,1.36),(.04,.025,.065),trim,'upperArm.L') +ellipsoid('HERO_belt_buckle',(0,-.155,1.035),(.04,.015,.035),trim,'pelvis') +for o in bpy.data.objects: + if o.name.startswith('DEBUG_bone_'):o.hide_render=True;o.hide_set(True) +scene.frame_set(1);bpy.context.view_layer.update() +result={'bodyObjects':len(collection.objects),'rig':rig.name,'sourceStatus':'silhouette blockout only; pending camera inspection','hoodDimensions':list(hood.dimensions),'coatDimensions':list(coat.dimensions),'noRuntimeChange':True} diff --git a/docs/review/character-body-pilot/costume-evidence.json b/docs/review/character-body-pilot/costume-evidence.json new file mode 100644 index 00000000..96d763f7 --- /dev/null +++ b/docs/review/character-body-pilot/costume-evidence.json @@ -0,0 +1,221 @@ +{ + "mutation": { + "ok": true, + "operation": { + "id": "ss-body-costume-03", + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "access": "mutation", + "status": "succeeded", + "baseRevision": 4, + "headRevision": 5, + "headSceneSequence": 0, + "stale": true, + "sceneSequenceBefore": 0, + "sceneSequenceAfter": 0, + "revisionBefore": 4, + "revisionAfter": 5, + "createdAt": "2026-10-14T23:24:26.751Z", + "startedAt": "2026-10-14T23:24:26.781Z", + "finishedAt": "2026-10-14T23:24:28.207Z", + "result": { + "bodyObjects": 26, + "changes": [ + "continuous weighted trousers", + "flatter dark knee reinforcement", + "shaped coat opening and rolled edges", + "continuous front/shoulder/back/hip strap" + ], + "sourceStatus": "pending multi-view review; not admitted" + }, + "output": { + "stdoutTail": "Info: Saved as \"session.blend\"\n23:24:26 | INFO: Starting glTF 2.0 export\n23:24:26 | INFO: Extracting primitive: HERO_belt\n23:24:26 | INFO: Primitives created: 1\n23:24:26 | INFO: Extracting primitive: Sphere.031\n23:24:26 | INFO: Primitives created: 1\n23:24:26 | INFO: Extracting primitive: HERO_boot_L\n23:24:26 | INFO: Primitives created: 1\n23:24:26 | INFO: Extracting primitive: HERO_boot_R\n23:24:26 | INFO: Primitives created: 1\n23:24:26 | INFO: Extracting primitive: HERO_coat.001\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_coat_edge_L\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_coat_edge_R\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_crossbody_strap\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_face_shadow_shape\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.020\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.027\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_hood_shape\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_hood_trim_shape\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.022\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.029\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.030\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.015\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sleeve_L\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sleeve_R\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_sole_L\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_sole_R\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.021\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.028\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_trousers_L\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: HERO_trousers_R\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Extracting primitive: Sphere.013\n23:24:27 | INFO: Primitives created: 1\n23:24:27 | INFO: Finished glTF 2.0 export in 0.1124119758605957 s\n\n", + "stderrTail": "", + "truncated": false + }, + "error": null, + "artifacts": { + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "revision": 5, + "blend": { + "size": 1532006, + "etag": "5091b5ba33164679cc848c373feecdbe" + }, + "glb": { + "size": 396108, + "etag": "751e63a122d80c072c62f34ddf53db36" + }, + "generated": [] + }, + "generatedArtifacts": [] + }, + "terminal": true, + "projectUrl": "https://higgsfield.ai/3d-jutsu/e428d4b6-3697-4c74-ae65-78764240abde" + }, + "surfaceFit": { + "ok": true, + "operation": { + "id": "ss-body-strap-fit-04", + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "access": "mutation", + "status": "succeeded", + "baseRevision": 5, + "headRevision": 6, + "headSceneSequence": 0, + "stale": true, + "sceneSequenceBefore": 0, + "sceneSequenceAfter": 0, + "revisionBefore": 5, + "revisionAfter": 6, + "createdAt": "2026-10-14T23:26:52.882Z", + "startedAt": "2026-10-14T23:26:52.912Z", + "finishedAt": "2026-10-14T23:26:54.285Z", + "result": { + "strapVertices": 280, + "surfaceProjectedVertices": 271, + "unprojectedVertices": 9, + "unprojectedReason": "open front or shoulder beyond coat surface; requires visual review", + "sourceStatus": "not admitted" + }, + "output": { + "stdoutTail": "Info: Saved as \"session.blend\"\n23:26:53 | INFO: Starting glTF 2.0 export\n23:26:53 | INFO: Extracting primitive: HERO_belt\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.031\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_boot_L\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_boot_R\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_coat.001\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_coat_edge_L\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_coat_edge_R\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_crossbody_strap_surface_fit\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_face_shadow_shape\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.020\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.027\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_hood_shape\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_hood_trim_shape\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.022\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.029\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.030\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.015\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sleeve_L\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sleeve_R\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_sole_L\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_sole_R\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.021\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.028\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_trousers_L\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: HERO_trousers_R\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Extracting primitive: Sphere.013\n23:26:53 | INFO: Primitives created: 1\n23:26:53 | INFO: Finished glTF 2.0 export in 0.11362433433532715 s\n\n", + "stderrTail": "", + "truncated": false + }, + "error": null, + "artifacts": { + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "revision": 6, + "blend": { + "size": 1554686, + "etag": "c6bc59f1a69cb71453aa92212d9b52f1" + }, + "glb": { + "size": 419648, + "etag": "04f6b8075cf564a0064938692000a12b" + }, + "generated": [] + }, + "generatedArtifacts": [] + }, + "terminal": true, + "projectUrl": "https://higgsfield.ai/3d-jutsu/e428d4b6-3697-4c74-ae65-78764240abde" + }, + "frontBack": { + "ok": true, + "operation": { + "id": "ss-costume-front-back-01", + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "access": "query", + "status": "succeeded", + "baseRevision": 5, + "headRevision": 5, + "headSceneSequence": 0, + "stale": false, + "sceneSequenceBefore": 0, + "sceneSequenceAfter": 0, + "revisionBefore": 5, + "revisionAfter": null, + "createdAt": "2026-10-14T23:24:47.343Z", + "startedAt": "2026-10-14T23:24:47.373Z", + "finishedAt": "2026-10-14T23:25:49.915Z", + "result": { + "angles": [ + 0, + 180 + ], + "frame": 1, + "camera": "CAM_technical", + "rotationConvention": "rig Z rotation; fixed camera and illumination", + "status": "source review only" + }, + "output": { + "stdoutTail": "", + "stderrTail": "", + "truncated": false + }, + "error": null, + "artifacts": null, + "generatedArtifacts": [ + { + "size": 101456, + "etag": "9ac9c4a84739a27b287231ccc13493af", + "id": "bf239c52eaf1d5dd519028549cbe4b8d", + "name": "costume-angle-0.png", + "mediaType": "image/png", + "width": 384, + "height": 384 + }, + { + "size": 100000, + "etag": "ff36bd74313bcb3301f0331c4988416d", + "id": "4dce102c80f9f63b67e80ad0c98058e1", + "name": "costume-angle-180.png", + "mediaType": "image/png", + "width": 384, + "height": 384 + } + ] + }, + "terminal": true, + "projectUrl": "https://higgsfield.ai/3d-jutsu/e428d4b6-3697-4c74-ae65-78764240abde" + }, + "sideBack": { + "ok": true, + "operation": { + "id": "ss-costume-fit-review-02", + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "access": "query", + "status": "succeeded", + "baseRevision": 6, + "headRevision": 6, + "headSceneSequence": 0, + "stale": false, + "sceneSequenceBefore": 0, + "sceneSequenceAfter": 0, + "revisionBefore": 6, + "revisionAfter": null, + "createdAt": "2026-10-14T23:27:03.634Z", + "startedAt": "2026-10-14T23:27:03.664Z", + "finishedAt": "2026-10-14T23:28:51.691Z", + "result": { + "angles": [ + 90, + 180 + ], + "frame": 1, + "camera": "CAM_technical", + "rotationConvention": "rig Z rotation; fixed camera and illumination", + "status": "source review only" + }, + "output": { + "stdoutTail": "", + "stderrTail": "", + "truncated": false + }, + "error": null, + "artifacts": null, + "generatedArtifacts": [ + { + "size": 99835, + "etag": "43e9c322387e6c9dd92c7ffa4d5932ce", + "id": "565cf645b146bfd55e5b5bef33196669", + "name": "costume-angle-180.png", + "mediaType": "image/png", + "width": 384, + "height": 384 + }, + { + "size": 97964, + "etag": "102f8004e5219d3359e673024e0582fb", + "id": "717db89b5d234bccb844627ad65bdda0", + "name": "costume-angle-90.png", + "mediaType": "image/png", + "width": 384, + "height": 384 + } + ] + }, + "terminal": true, + "projectUrl": "https://higgsfield.ai/3d-jutsu/e428d4b6-3697-4c74-ae65-78764240abde" + } +} diff --git a/docs/review/character-body-pilot/costume-review.md b/docs/review/character-body-pilot/costume-review.md new file mode 100644 index 00000000..b47e523e --- /dev/null +++ b/docs/review/character-body-pilot/costume-review.md @@ -0,0 +1,25 @@ +# Costume construction refinement — revisions 5–6 + +2026-10-14. **Source experiment only; benchmark art gate remains failed.** + +## Changes + +Revision 5 replaces separate thigh/shin ellipsoids with continuous trouser meshes and blended knee weights. Knee reinforcement is flatter and darker. The coat now has a shaped opening, longitudinal drape stations and continuous rolled front edges. The previously front-only strap now wraps over the shoulder, down the back and around the hip. + +Front and rear 384px renders of revision 5 exposed an angular, floating rear strap. Revision 6 resamples its closed loop and projects the strip to the actual coat surface. 271 of 280 vertices found coat intersections; the remaining 9 are near the open front or shoulder limits and remain a visual-review concern. A count of intersections is not proof that the strap fits or deforms correctly. + +Exact revision 6 service artifact metadata is retained in costume-evidence.json. Service ETags are not local file hashes. The source is retained in hosted project `e428d4b6-3697-4c74-ae65-78764240abde`; no local .blend download is claimed. + +## Visual verification + +- Revision 5: frame 1, rig rotations 0° and 180°, same camera/light setup; both images inspected. +- Revision 6: frame 1, rig rotations 90° and 180°, same camera/light setup; both images inspected. +- These are actual rotations of one mesh/rig, not mirrored raster views. Angles are source rotations, not a claimed mapping to runtime cardinal directions. +- Front leg continuity improved. Rear strap bend is smoother in the revision 6 render. The side view exposes an unfinished shoulder/sleeve junction, and the rear coat has dark surface artifacts that still require diagnosis. +- The model remains too smooth and generic relative to the approved reference. Hands, garment construction, material treatment, shoulder junctions and costume readability remain inadequate. There is no basis to claim native-size benchmark fidelity or artifact-free deformation. + +## Scope and next decision + +The controlled-source specification already requires rejection of mannequin-quality art; these changes do not relax it. Retain this rig for contact and pose experiments, but do not export it as replacement game art. Before investing in a full animation family, compare a higher-quality painted/layered costume treatment against the approved reference, or bring this master to that same standard. A production method must demonstrate the target aesthetic as well as stable motion. + +Four neutral facings at one final revision, peak/intermediate deformation after these edits, south locomotion/world-travel contact, and the real shared renderer comparison remain unverified. No runtime resource, active contract or gameplay changed. Six local Python recipes parsed successfully before the final evidence write; hosted mutations and four render exports succeeded. No Swift tests or physical-device tests were run for this art-only work. diff --git a/docs/review/character-body-pilot/fit-strap.py b/docs/review/character-body-pilot/fit-strap.py new file mode 100644 index 00000000..b7067688 --- /dev/null +++ b/docs/review/character-body-pilot/fit-strap.py @@ -0,0 +1,38 @@ +import bpy,math +from mathutils import Vector +from mathutils.bvhtree import BVHTree +scene=bpy.context.scene;scene.frame_set(1) +coat=bpy.data.objects['HERO_coat'];strap=bpy.data.objects['HERO_crossbody_strap'];rig=bpy.data.objects['SourceRig'] +tree=BVHTree.FromPolygons([v.co.copy() for v in coat.data.vertices],[list(p.vertices) for p in coat.data.polygons]) +old=strap.data +centers=[(old.vertices[i].co+old.vertices[i+1].co)*.5 for i in range(0,len(old.vertices),2)] +# Interpolate the closed loop before surface projection to remove abrupt hip corners. +samples=[] +for i,p1 in enumerate(centers): + p0=centers[(i-1)%len(centers)];p2=centers[(i+1)%len(centers)];p3=centers[(i+2)%len(centers)] + for k in range(4): + t=k/4 + samples.append(.5*((2*p1)+(-p0+p2)*t+(2*p0-5*p1+4*p2-p3)*t*t+(-p0+3*p1-3*p2+p3)*t*t*t)) +vs=[];fs=[];projected=0 +for i,p in enumerate(samples): + tangent=(samples[(i+1)%len(samples)]-samples[(i-1)%len(samples)]).normalized() + outward=Vector((p.x/.23,p.y/.16,0)).normalized() + across=tangent.cross(outward).normalized()*.016 + for q in [p-across,p+across]: + radial=Vector((q.x,q.y,0)).normalized() + origin=Vector((radial.x,radial.y,q.z)) + hit,normal,index,distance=tree.ray_cast(origin,-radial,2) + if hit is not None: + if normal.dot(radial)<0:normal=-normal + q=hit+normal*.007;projected+=1 + vs.append(tuple(q)) +for i in range(len(samples)): + j=(i+1)%len(samples);fs.append((2*i,2*i+1,2*j+1,2*j)) +m=bpy.data.meshes.new('HERO_crossbody_strap_surface_fit');m.from_pydata(vs,[],fs);m.update() +for mat in old.materials:m.materials.append(mat) +strap.data=m;strap.vertex_groups.clear();gp=strap.vertex_groups.new(name='pelvis');gt=strap.vertex_groups.new(name='torso') +for v in m.vertices: + t=max(0,min(1,(v.co.z-1.02)/.25));gp.add([v.index],1-t,'REPLACE');gt.add([v.index],t,'REPLACE') +for p in m.polygons:p.use_smooth=True +bpy.context.view_layer.update() +result={'strapVertices':len(vs),'surfaceProjectedVertices':projected,'unprojectedVertices':len(vs)-projected,'unprojectedReason':'open front or shoulder beyond coat surface; requires visual review','sourceStatus':'not admitted'} diff --git a/docs/review/character-body-pilot/refine-costume.py b/docs/review/character-body-pilot/refine-costume.py new file mode 100644 index 00000000..4cc0981e --- /dev/null +++ b/docs/review/character-body-pilot/refine-costume.py @@ -0,0 +1,96 @@ +# Refine existing approved costume elements, not a new character design. +import bpy, math +from mathutils import Vector +scene=bpy.context.scene +scene.frame_set(1) +rig=bpy.data.objects['SourceRig'] +col=bpy.data.collections['HERO_hooded_body'] +def weighted_mesh(name,vs,fs,mat,weights): + m=bpy.data.meshes.new(name);m.from_pydata(vs,[],fs);m.update() + o=bpy.data.objects.new(name,m);col.objects.link(o);o.parent=rig;m.materials.append(bpy.data.materials[mat]) + groups={} + for i,w in enumerate(weights): + for bone,amount in w.items(): + if bone not in groups:groups[bone]=o.vertex_groups.new(name=bone) + groups[bone].add([i],amount,'REPLACE') + for p in m.polygons:p.use_smooth=True + a=o.modifiers.new('EditableRigBinding','ARMATURE');a.object=rig + return o +def torso_weights(z): + t=max(0,min(1,(z-1.02)/.25)) + return {'pelvis':1-t,'torso':t} +# Continuous trouser topology, with rings and blended knee weights. +for side in ['L','R']: + thigh=rig.data.bones['thigh.'+side];shin=rig.data.bones['shin.'+side] + a=thigh.head_local.copy();b=thigh.tail_local.copy();c=shin.tail_local.copy() + stations=[(a+(b-a)*t,r,w) for t,r,w in [(0,.105,0),(.2,.11,0),(.48,.105,0),(.75,.092,.05),(.9,.082,.25),(1,.079,.5)]] + stations += [(b+(c-b)*t,r,w) for t,r,w in [(.12,.08,.75),(.3,.085,1),(.55,.078,1),(.8,.065,1),(1,.061,1)]] + vs=[];fs=[];ws=[];n=32 + for j,(p,r,w) in enumerate(stations): + tangent=(b-a) if j<4 else ((c-a) if j<7 else (c-b)) + tangent.normalize();u=tangent.cross(Vector((0,1,0))).normalized();v=tangent.cross(u).normalized() + for k in range(n): + angle=2*math.pi*k/n + # Broad seam-side cloth undulation; no independent capsule at the knee. + radius=r*(1+.025*math.cos(4*angle)) + vs.append(tuple(p+radius*(math.cos(angle)*u+math.sin(angle)*v))) + ws.append({'thigh.'+side:1-w,'shin.'+side:w}) + for j in range(len(stations)-1): + for k in range(n):fs.append((j*n+k,j*n+(k+1)%n,(j+1)*n+(k+1)%n,(j+1)*n+k)) + fs.extend([tuple(reversed(range(n))),tuple((len(stations)-1)*n+k for k in range(n))]) + weighted_mesh('HERO_trousers_'+side,vs,fs,'MAT_trousers',ws) + for old in ['HERO_thigh_'+side,'HERO_shin_'+side]:bpy.data.objects.remove(bpy.data.objects[old],do_unlink=True) + # Retain practical reinforced knees, reduce toy-like protrusion and contrast. + pad=bpy.data.objects['HERO_kneepad_'+side] + pad.scale=(.94,.45,.92);pad.data.materials.clear();pad.data.materials.append(bpy.data.materials['MAT_dark_leather']) +# Replace coat with a shaped open front and multiple longitudinal drape stations. +rings=[(.72,.285,.175,.52),(.80,.277,.167,.48),(.90,.25,.155,.42),(1.02,.219,.145,.27),(1.10,.216,.147,.24),(1.23,.232,.16,.26),(1.36,.249,.163,.36),(1.46,.234,.143,.52)] +vs=[];fs=[];ws=[];n=48 +for z,rx,ry,gap in rings: + for k in range(n): + angle=-math.pi/2+gap+(2*math.pi-2*gap)*k/(n-1) + fold=.008*max(0,(1.1-z)/.38)*math.cos(8*angle) + vs.append(((rx+fold)*math.cos(angle),(ry+fold)*math.sin(angle),z)) + ws.append(torso_weights(z)) +for j in range(len(rings)-1): + for k in range(n-1):fs.append((j*n+k,j*n+k+1,(j+1)*n+k+1,(j+1)*n+k)) +bpy.data.objects.remove(bpy.data.objects['HERO_coat'],do_unlink=True) +coat=weighted_mesh('HERO_coat',vs,fs,'MAT_charcoal_coat',ws) +solid=coat.modifiers.new('ClothThickness','SOLIDIFY');solid.thickness=.009 +# Rolled open-front edges are continuous along the coat, including lower tails. +for edge,label in [(0,'R'),(n-1,'L')]: + points=[Vector(vs[j*n+edge]) for j in range(len(rings))] + ev=[];ef=[];ew=[];sides=8 + for j,p in enumerate(points): + tangent=(points[min(j+1,len(points)-1)]-points[max(j-1,0)]).normalized() + u=tangent.cross(Vector((0,1,0))).normalized();v=tangent.cross(u) + for k in range(sides): + q=p+.004*(math.cos(2*math.pi*k/sides)*u+math.sin(2*math.pi*k/sides)*v) + ev.append(tuple(q));ew.append(torso_weights(p.z)) + for j in range(len(points)-1): + for k in range(sides):ef.append((j*sides+k,j*sides+(k+1)%sides,(j+1)*sides+(k+1)%sides,(j+1)*sides+k)) + weighted_mesh('HERO_coat_edge_'+label,ev,ef,'MAT_dark_leather',ew) +# One physical strap loop across front, over shoulder, down back and around hip. +points=[] +for back in [False,True]: + for i in range(17): + t=i/16 if not back else 1-i/16 + x=-.18+.37*t;z=1.07+.40*t + rx=.225+.02*t;ry=.156+.007*t + y=math.sqrt(max(.001,1-(x/rx)**2))*ry+.009 + points.append(Vector((x,y if back else -y,z))) +# Add outer hip point to wrap the lower endpoints. +points.append(Vector((-.237,0,1.07))) +sv=[];sf=[];sw=[] +for j,p in enumerate(points): + tangent=(points[(j+1)%len(points)]-points[(j-1)%len(points)]).normalized() + normal=Vector((p.x/.23,p.y/.16,0)).normalized() + across=tangent.cross(normal).normalized()*.016 + for q in [p-across,p+across]:sv.append(tuple(q));sw.append(torso_weights(p.z)) +for j in range(len(points)): + k=(j+1)%len(points);sf.append((2*j,2*j+1,2*k+1,2*k)) +bpy.data.objects.remove(bpy.data.objects['HERO_front_strap'],do_unlink=True) +strap=weighted_mesh('HERO_crossbody_strap',sv,sf,'MAT_muted_tan',sw) +solid=strap.modifiers.new('StrapThickness','SOLIDIFY');solid.thickness=.005 +scene.frame_set(1);bpy.context.view_layer.update() +result={'bodyObjects':len(col.objects),'changes':['continuous weighted trousers','flatter dark knee reinforcement','shaped coat opening and rolled edges','continuous front/shoulder/back/hip strap'],'sourceStatus':'pending multi-view review; not admitted'} diff --git a/docs/review/character-body-pilot/refine-silhouette.py b/docs/review/character-body-pilot/refine-silhouette.py new file mode 100644 index 00000000..0f73d9bd --- /dev/null +++ b/docs/review/character-body-pilot/refine-silhouette.py @@ -0,0 +1,50 @@ +import bpy,math +from mathutils import Vector +scene=bpy.context.scene;scene.frame_set(1);rig=bpy.data.objects['SourceRig'];collection=bpy.data.collections['HERO_hooded_body'] +# Replace the oval helmet-like opening with a tapered cloth hood contour. +contour=[(-.10,1.48),(-.15,1.59),(-.155,1.71),(-.105,1.82),(-.035,1.89),(0,1.90),(.035,1.89),(.105,1.82),(.155,1.71),(.15,1.59),(.10,1.48),(0,1.45)] +verts=[];faces=[];n=len(contour) +for y,factor in [(-.17,1),(-.06,1.06),(.07,.86),(.16,.4)]: + for x,z in contour:verts.append((x*factor,y,1.67+(z-1.67)*factor)) +for j in range(3): + for i in range(n):faces.append((j*n+i,j*n+(i+1)%n,(j+1)*n+(i+1)%n,(j+1)*n+i)) +faces.append(tuple(3*n+i for i in range(n))) +def replace_mesh(o,vs,fs): + old=o.data;mesh=bpy.data.meshes.new(o.name+'_shape');mesh.from_pydata(vs,[],fs);mesh.update() + for m in old.materials:mesh.materials.append(m) + o.data=mesh;o.vertex_groups.clear();g=o.vertex_groups.new(name='head');g.add(list(range(len(vs))),1,'REPLACE') + for p in mesh.polygons:p.use_smooth=True +replace_mesh(bpy.data.objects['HERO_hood'],verts,faces) +trim=[] +for f in [1,1.035]: + for x,z in contour:trim.append((x*f,-.177,1.67+(z-1.67)*f)) +replace_mesh(bpy.data.objects['HERO_hood_trim'],trim,[(i,(i+1)%n,n+(i+1)%n,n+i) for i in range(n)]) +# Shadow inset conforms to cloth opening; avoid a separate oval face bulge. +shadow=bpy.data.objects['HERO_face_shadow'];shadow.location=(0,0,0);shadow.scale=(1,1,1) +replace_mesh(shadow,[(x*.86,-.16,1.67+(z-1.67)*.86) for x,z in contour],[tuple(range(n))]) +# Replace segmented arm masses with continuous sleeves weighted across the elbow. +for side in ['L','R']: + upper=rig.data.bones['upperArm.'+side];lower=rig.data.bones['forearm.'+side] + a=upper.head_local.copy();b=upper.tail_local.copy();c=lower.tail_local.copy() + stations=[(a+(b-a)*t,r,0) for t,r in [(0,.095),(.22,.09),(.65,.083),(1,.075)]]+[(b+(c-b)*t,r,t) for t,r in [(.3,.073),(.7,.064),(1,.06)]] + vs=[];fs=[];rings=24 + for idx,(point,r,t) in enumerate(stations): + tangent=(b-a) if idx<3 else (c-a if idx==3 else c-b) + tangent.normalize();u=tangent.cross(Vector((0,1,0))).normalized();v=tangent.cross(u).normalized() + for k in range(rings): + angle=2*math.pi*k/rings;vs.append(tuple(point+r*(math.cos(angle)*u+math.sin(angle)*v))) + for j in range(len(stations)-1): + for k in range(rings):fs.append((j*rings+k,j*rings+(k+1)%rings,(j+1)*rings+(k+1)%rings,(j+1)*rings+k)) + m=bpy.data.meshes.new('Sleeve_'+side);m.from_pydata(vs,[],fs);m.update();m.materials.append(bpy.data.materials['MAT_charcoal_coat']) + o=bpy.data.objects.new('HERO_sleeve_'+side,m);collection.objects.link(o);o.parent=rig + gu=o.vertex_groups.new(name='upperArm.'+side);gl=o.vertex_groups.new(name='forearm.'+side) + for j in range(len(stations)): + t=0 if j<3 else .5 if j==3 else 1 + ids=list(range(j*rings,(j+1)*rings));gu.add(ids,1-t,'REPLACE');gl.add(ids,t,'REPLACE') + arm=o.modifiers.new('EditableRigBinding','ARMATURE');arm.object=rig + solid=o.modifiers.new('SleeveThickness','SOLIDIFY');solid.thickness=.006 + for p in m.polygons:p.use_smooth=True + for prefix in ['HERO_upperArm_','HERO_forearm_']:bpy.data.objects.remove(bpy.data.objects[prefix+side],do_unlink=True) +scene.view_settings.exposure=.7 +bpy.context.view_layer.update() +result={'revisionPurpose':'hood contour and continuous sleeve silhouette correction','bodyObjects':len(collection.objects),'hoodDimensions':list(bpy.data.objects['HERO_hood'].dimensions),'exposure':scene.view_settings.exposure,'sourceStatus':'pending silhouette review; not admitted'} diff --git a/docs/review/character-body-pilot/repair-parenting.py b/docs/review/character-body-pilot/repair-parenting.py new file mode 100644 index 00000000..bfd439b5 --- /dev/null +++ b/docs/review/character-body-pilot/repair-parenting.py @@ -0,0 +1,7 @@ +# Applied after the body build, on inspected revision 2; committed as revision 3. +rig=bpy.data.objects['SourceRig'] +for o in bpy.data.collections['HERO_hooded_body'].objects: + matrix=o.matrix_world.copy();o.parent=rig;o.matrix_world=matrix +for o in list(bpy.data.objects): + if o.name.startswith('DEBUG_bone_'): + bpy.data.objects.remove(o,do_unlink=True) diff --git a/docs/review/character-body-pilot/review-front-back.py b/docs/review/character-body-pilot/review-front-back.py new file mode 100644 index 00000000..21127571 --- /dev/null +++ b/docs/review/character-body-pilot/review-front-back.py @@ -0,0 +1,17 @@ +import bpy,math +scene=bpy.context.scene +rig=bpy.data.objects['SourceRig'] +scene.frame_set(1) +scene.render.resolution_x=384 +scene.render.resolution_y=384 +scene.render.resolution_percentage=100 +scene.render.image_settings.media_type='IMAGE' +scene.render.image_settings.file_format='PNG' +for degrees in [0,180]: + rig.rotation_euler.z=math.radians(degrees) + bpy.context.view_layer.update() + target=artifacts.file(name='costume-angle-'+str(degrees)+'.png',media_type='image/png') + scene.render.filepath=str(target.path) + bpy.ops.render.render(write_still=True) + target.publish() +result={'angles':[0,180],'frame':1,'camera':scene.camera.name,'rotationConvention':'rig Z rotation; fixed camera and illumination','status':'source review only'} diff --git a/docs/review/character-body-pilot/review.md b/docs/review/character-body-pilot/review.md new file mode 100644 index 00000000..3c8b3c60 --- /dev/null +++ b/docs/review/character-body-pilot/review.md @@ -0,0 +1,28 @@ +# Hooded body source pilot — revision 4 review + +2026-10-14. **Not admitted as benchmark artwork.** This is an editable source experiment, not a SpriteKit scene capture or a device-test result. + +The existing controlled-character-source specification requires a costume master that preserves the approved urban hooded reference; it explicitly rejects a mannequin as acceptance. This review applies that requirement without changing the target. + +## Work and evidence + +- Hosted project: https://higgsfield.ai/3d-jutsu/e428d4b6-3697-4c74-ae65-78764240abde +- Revision 4, successful mutation `ss-body-silhouette-02`; Blender artifact ETag `57ec8a5bbd7f10f8b21c91e393d7191f`, 1,565,340 bytes; GLB ETag `a8925e04314176649b7eab965694c05c`, 400,196 bytes. These are service ETags, not local SHA hashes. +- 26 editable body objects bound to the existing rig. Hood contour changed from oval to tapered; continuous weighted sleeves replace separate upper/lower arm masses. Meshes parented to the rig; debug proxies removed from export. +- Successful query `ss-body-refined-review-01` rendered frames 1 and 4 at 384 × 384. Both images were visually inspected in the browser, using the same saved camera and light setup. +- Rest artifact `4679ca5cf2b713413f848d03d6185427`; peak artifact `a028deedd7fc1db344af2c38d5314db9`. Exact operation metadata is retained in scene-evidence.json. + +## Visual result + +Sleeves now read as continuous shapes, and the hood opening has a more tapered contour. The peak sample visibly bends the knees with the boots near their original image locations. This two-frame comparison does not prove every intermediate deformation, no foot slip, or world-travel contact. + +The candidate fails the benchmark art gate: the torso and trousers remain smooth mannequin-like masses; knees look like separate oval attachments; hands lack readable construction; the coat lacks convincing fabric thickness, seams and folds. The front strap ends abruptly and has no authored rear continuity. Dark flat materials lose internal separation. Four-direction identity and hidden surfaces have not been reviewed. Increasing export resolution would preserve these defects, not resolve them. + +## Required next work + +1. Correct garment construction and continuous leg anatomy in the editable master before adding texture detail. Preserve the approved hood, coat length, practical boots and restrained asymmetric equipment; do not introduce fantasy ornament. +2. Author strap continuity and hidden costume surfaces, then inspect all four neutral rotations with one camera and light setup. Actual projection still needs comparison with the real shared renderer scene. +3. Review first, peak, intermediate and final deformation samples, including garment intersections. Then pass the specified south locomotion and world-travel gates before expanding animation families. +4. Export at measured native/zoom pixel density only after shape and costume pass. Resolution choice remains selective; this 384px diagnostic render is not a production texture-size decision. + +Runtime assets, active clip metadata and gameplay were not changed. No new Swift or device tests were run for this source-art review. Physical-device testing and the shared-renderer benchmark gate remain open. diff --git a/docs/review/character-body-pilot/scene-evidence.json b/docs/review/character-body-pilot/scene-evidence.json new file mode 100644 index 00000000..5e22a033 --- /dev/null +++ b/docs/review/character-body-pilot/scene-evidence.json @@ -0,0 +1,57 @@ +{ + "ok": true, + "operation": { + "id": "ss-body-refined-review-01", + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "access": "query", + "status": "succeeded", + "baseRevision": 4, + "headRevision": 4, + "headSceneSequence": 0, + "stale": false, + "sceneSequenceBefore": 0, + "sceneSequenceAfter": 0, + "revisionBefore": 4, + "revisionAfter": null, + "createdAt": "2026-10-14T23:19:21.753Z", + "startedAt": "2026-10-14T23:19:21.784Z", + "finishedAt": "2026-10-14T23:20:39.863Z", + "result": { + "frames": [ + 1, + 4 + ], + "purpose": "silhouette and peak deformation review", + "bodyObjects": 26 + }, + "output": { + "stdoutTail": "", + "stderrTail": "", + "truncated": false + }, + "error": null, + "artifacts": null, + "generatedArtifacts": [ + { + "size": 102712, + "etag": "4597582b1829ba790edd6fcc4445a11a", + "id": "4679ca5cf2b713413f848d03d6185427", + "name": "body-refined-frame-1.png", + "mediaType": "image/png", + "width": 384, + "height": 384 + }, + { + "size": 102451, + "etag": "9cbd88728df20ad392c733903fe8f5c3", + "id": "a028deedd7fc1db344af2c38d5314db9", + "name": "body-refined-frame-4.png", + "mediaType": "image/png", + "width": 384, + "height": 384 + } + ] + }, + "terminal": true, + "projectUrl": "https://higgsfield.ai/3d-jutsu/e428d4b6-3697-4c74-ae65-78764240abde" +} diff --git a/docs/review/character-cycle-integration/README.md b/docs/review/character-cycle-integration/README.md new file mode 100644 index 00000000..147ad75c --- /dev/null +++ b/docs/review/character-cycle-integration/README.md @@ -0,0 +1,15 @@ +# Whole-character source cycle integration + +Status: integrated source candidate, below benchmark and not admitted to runtime. + +Sixteen poses now combine the retained hood, coat, equipment, arm layers and original thigh paint with the connected boot source. Pelvis height drives body bob. Existing arm controls supply a restrained authored counter-swing (6-degree shoulder, 4-degree elbow); coat hem displacement is 4 pixels with fixed root rows. These amplitudes are candidate authoring choices, not documented biomechanical prescriptions or final design acceptance. + +The first assembly used affine thigh projection. It visibly flipped the painted knee/thigh when the projected hip-to-knee vector became short or reversed. rejected-flat-thigh.png records that failed pass. The revision uses an authored three-dimensional thigh surface and maps retained paint only to its forward half. The forward direction remains attached to the limb and is allowed to face away; it is not forcibly flipped toward the camera. Rear cloth is explicitly provisional plain material. This avoids substituting a flat rotated picture for depth, but does not establish final anatomy or costume fidelity. + +The sixteen-pose sheet was inspected. Remaining visible failures include plain thin shins against detailed thighs, exposed joint/cap transitions, incomplete knee-pad coverage and simple cloth/arm movement. Each limb is sorted by average source depth; the boot and thigh are separate renders, so shared per-pixel depth and knee occlusion are not yet solved. The torso/coat layer policy also needs pose-range review. Do not admit these frames or describe them as the finished character animation. + +Source verification: assembly completed exit 0, sixteen distinct RGBA hashes, fixed 384x416 canvas, sixteen timestamps over the existing 0.5-second cycle without a duplicate closing sample. Slow GIF is 125ms/frame for review, not shipping cadence. These checks do not prove visual quality, continuous seam deformation, actual world travel, native-size rendering or other facings. + +Authority: SS-specs d602775 controlled-character-source.md/BP-002/BP-008; this is the required full-source pose-range review under existing intent. No active runtime art, code, metadata or spec pin changed. Latest clean core validation remains 773 tests in 109 suites. No new simulator/device claim. + +Reproduce: Python 3 + NumPy + Pillow, run assemble.py. The source archive includes editable assembly/thigh recipes, original source layers, rig controls, exact poses and boot renders. Next is unified lower-limb depth/joint treatment and richer shin/boot materials, followed by the existing four-facing and real-renderer travel gates. The benchmark is unchanged. diff --git a/docs/review/character-cycle-integration/assembly-record.json b/docs/review/character-cycle-integration/assembly-record.json new file mode 100644 index 00000000..8813f500 --- /dev/null +++ b/docs/review/character-cycle-integration/assembly-record.json @@ -0,0 +1,182 @@ +{ + "status": "WHOLE_CHARACTER_SOURCE_CANDIDATE_NOT_ADMITTED", + "cycleSeconds": 0.5, + "previewFrameMilliseconds": 125, + "controls": { + "shoulderDegrees": 6, + "elbowDegrees": 4, + "coatHemPixels": 4, + "bodyBob": "derived from authored pelvis height" + }, + "controlAuthority": "Authored candidate values, not research-derived acceptance criteria", + "depthPolicy": "per-limb average source depth; coat and torso front layers retained", + "limits": [ + "Thigh uses an authored depth surface; rear cloth is provisional", + "Per-limb sorting cannot resolve intersecting triangles", + "Boot proxy materials remain below benchmark", + "One facing only", + "No real-renderer world-travel test" + ], + "frames": [ + { + "frame": 0, + "time": 0.0, + "bodyBobPixels": -0.0, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "9711e019952e2fc58ab9bb173df78702e1a821f98d98ba4bad35a56aff2c92c2" + }, + { + "frame": 1, + "time": 0.03125, + "bodyBobPixels": 7.184633866920191, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "b694787f4379cc362eb2253dbc2320492ccc76a66b12f3f579032277f8997b14" + }, + { + "frame": 2, + "time": 0.0625, + "bodyBobPixels": 8.870387036881391, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "8cf4aa16dfdf3150692f168778f90c90bcf4e7e37430d36ad1925300667b06a6" + }, + { + "frame": 3, + "time": 0.09375, + "bodyBobPixels": 0.39553355155904224, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "e039c3a3c6c78ecc96fdbcd3aa1251a10e532870624ea9bec57fbeb453f66535" + }, + { + "frame": 4, + "time": 0.125, + "bodyBobPixels": -1.9485571585149868, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "98378ea14c5a5d3f1c32b0ac9cf835d4f2c0d922f77ba85d73b13501e08b0d62" + }, + { + "frame": 5, + "time": 0.15625, + "bodyBobPixels": -6.652790277661053, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "35b146dbb035e19642f39e67056531ee4173e8abdc51859007de8b825eaf1bd4" + }, + { + "frame": 6, + "time": 0.1875, + "bodyBobPixels": -7.272114317029974, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "7f791ceca8a1c09081d236cb7fed3410193d8792199b43f7e4e9cb332e5bf6fc" + }, + { + "frame": 7, + "time": 0.21875, + "bodyBobPixels": -2.888466910840908, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "ac133a5daffbdf505db6f96dfd063bf7f701ead1c6f560fd9093f8a09389e907" + }, + { + "frame": 8, + "time": 0.25, + "bodyBobPixels": -0.0, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "f078da489c6630d4b88009b918f9b39f192d4f6cbbef354bd79f98caab5b9a61" + }, + { + "frame": 9, + "time": 0.28125, + "bodyBobPixels": 7.184633866920191, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "b96d47ccf76f13c9beef43ef272c1ba66fe6b3381041f1fd41c40cabe0855934" + }, + { + "frame": 10, + "time": 0.3125, + "bodyBobPixels": 8.870387036881391, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "3aafe2a463f9c5a7eb7378e08801e0aa1cf4ce36790cc4da547e09ecb78a1b76" + }, + { + "frame": 11, + "time": 0.34375, + "bodyBobPixels": 0.39553355155904224, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "74ca15ed50c8da38c469b8b40c3b7a8854d4795d40ae2bb979b7f5e13b2dca31" + }, + { + "frame": 12, + "time": 0.375, + "bodyBobPixels": -1.9485571585149868, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "10b922cc183bf33a125b4ea53c8488183dd3cf4153b6f47c885f48fcf6914a33" + }, + { + "frame": 13, + "time": 0.40625, + "bodyBobPixels": -6.652790277661053, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "55a259a56c7f826c7de63858297a057f56744f5c68965a75514c2337cc3cbcdd" + }, + { + "frame": 14, + "time": 0.4375, + "bodyBobPixels": -7.272114317029974, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "a9d57685145cde540c0ebaaf9cb8078cda813eaf1a1a27a364b0b33c54c44226" + }, + { + "frame": 15, + "time": 0.46875, + "bodyBobPixels": -2.888466910840908, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "62099b93e01a1c3b8a56a869d295542f61064c6048977f0c81ac78b71a2f7b72" + } + ] +} diff --git a/docs/review/character-cycle-integration/hashes.json b/docs/review/character-cycle-integration/hashes.json new file mode 100644 index 00000000..0b7604d0 --- /dev/null +++ b/docs/review/character-cycle-integration/hashes.json @@ -0,0 +1,99 @@ +{ + "thigh.py": "39f5a64c02bf55add65c07204968539fc0e5c345bfc35c9804c3badb5ffa97dc", + "assembly-record.json": "7737172a61bd11424dc45c82a412c098455408d6c9967a7b57ae24afed560d3b", + "sixteen-character-poses.png": "83cd5d15343c0de9dd2b2b37dee87c682f5875df639989104bf8e0815929ca77", + "assemble.py": "fbe6e6ab513c8797e047d8774ea73231f0b52c281b15ec65664543db7674ffb2", + "README.md": "57651c9ce191c5d65a0e69a3c0ed14d7f3bd885b69d4c340b4cc01544f81068c", + "rejected-flat-thigh.png": "b8aade21ae5e04d8ac2784564a37b71edf5658aec6e052c9c02d50e146042cfa", + "slow-character-cycle.gif": "b9c5179d5d818940c34b2aa0e5a20c4b6a97a489849b87a265f7998483c5287b", + "source/samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "source/body-rig.json": "c1d53f25495c4e17bd3f1f4df1b0e0e87bd047872420625642a88b8cdc26530b", + "frames/14.png": "68a07d6829659f0947992922d3b945097e63fe5d3153838f9370dc10f808d63d", + "frames/00.png": "08eed950a57ada74f65514503e92f479eb47b72f962eb9eb60f12ab5e44dc3ea", + "frames/01.png": "cec9863f3de73b0f4a54983f420dd349c0a4c6296a529228653f60bbc3e0ca73", + "frames/15.png": "af0365c3b29b6c3bcb37c98acf2c48b98c49aedb80094be4fa56aaa11e86cec2", + "frames/03.png": "70d002f0381cce25166483cb916cb388e6cb9bfa7435de599d2e5374a768ca52", + "frames/02.png": "6a684093f9ceb0c6939bd422fde3dc54d6df61f5d932d77c4329c2374efdfb3d", + "frames/06.png": "642d85300dc368e17e45e5e39fcb65ef426afdc4fe99c3180f859b934c76de2a", + "frames/12.png": "ee331c6a831575ad8c046934a321650faa0b77531826ffccbeb8ab40a7a9eba5", + "frames/13.png": "7123dac3d2c1baa6ccf7e9607f1b738b6fee03f7f00533b7c2ab50d71debe7c8", + "frames/07.png": "8195db6bd42a599b5b70b32a77ff06a0e4df4be0c9a583643abfb10746dc95e8", + "frames/11.png": "811277938a98248c2dfd8a72b9ef32c6e81965d6628348ce071dd005cce8c029", + "frames/05.png": "d0df5b3369e1334949d82d7a76237b10d7e3eed63090a84ce70497055c349bf6", + "frames/04.png": "b70878369c2d4b340ae23d6efd92da37f788d6e8a6bbb9bd1434b824de0b57d6", + "frames/10.png": "0a17ff890590d5bdcd344ec443ec1746e39893f7d127d11e3f7efc5abfb8e7cb", + "frames/09.png": "0a2004eff5372452ae535080cd24aff30b8e476e4377cbc40d2ef8f3215fccb8", + "frames/08.png": "83eea3573e06dd3632ef41ffed966cec3d162d7395e6c079ff1efa70ed3b035f", + "source/boots/15-both.png": "16f3ef0b3c8617ee6fc55455f1cd284b5738822c298d3552e8b83b7f3e86ecfc", + "source/boots/14-both.png": "0dc6ca4cc762bc322392ed998a00573bfb4c110fcc00a949426eecb26e57db4c", + "source/boots/08-right.png": "efb256a0af1d2222393f83ae8969e3944888e043539ee7f5cb21a203cca0b20a", + "source/boots/05-left.png": "37990c42e099edfde909dda67dbf2709fcd9bf7cccbf08b3683b9b5ae9eda930", + "source/boots/04-left.png": "d72782defd37602efd229403db8de13ca20999b04837dbb8b872b03d1d3a7530", + "source/boots/11-right.png": "8b21c51f962097afdd6fe97fb8fb4886095807e5f346fb4e534c762e5561594e", + "source/boots/05-right.png": "9a8124e7700b97d082775a965188f72a2471b5e14fcb6b5b84707ea4ae2f5ef3", + "source/boots/02-both.png": "9d4b6ae878653de21e87bc3d7edb5e691f965bd6e4c7ce8e8e06d603f889933a", + "source/boots/03-both.png": "0981e7ee7268a719f750e9e6961a1e245309f7b75aac1cc3ac222b477bc061eb", + "source/boots/12-left.png": "e0c82b6cb70e8dcbab80fb5a638b2ae5abe9cdf99309c4b98235057a527df60b", + "source/boots/13-left.png": "b8017e5d04195b4deb6c6898760b30c27571932743e3c90376758ada04c73698", + "source/boots/08-both.png": "21e7739c46acc47da348b9c6497f0d2fd9789b8a330c8cd0fa5c9c42422f518d", + "source/boots/09-both.png": "5a489a3b6114d234530e2b23f8a432711be0d1b99f60896f895a649a89ffc4e6", + "source/boots/03-right.png": "98fb936afefa8bed20f11d8c5750bc903de7a26a5c23f496689cdf02250e4623", + "source/boots/05-both.png": "9ea3dd3d1f82b2b60d6c88e23ad1b8b0134bd8d4e630a5325a71bf1c4316c304", + "source/boots/04-both.png": "b542437e35229a42edae14d591294a1413ee25583c78921c495e6b02b143658c", + "source/boots/09-right.png": "eed9a7316886ab4e9314726685041569271195176e11c00133eabe8f75bcca1c", + "source/boots/15-left.png": "25304416742f22c6b15110c89b57ef0c8080159f9ffb0753f9fa8fa53d1b7fed", + "source/boots/14-left.png": "d355b5663445ffb64fc0efdd9cae364757bfd2c568313201b3f8899d9ac109eb", + "source/boots/04-right.png": "163e13e97ddc280bfd4171e11bf66530d017f9951ebabcfacd7508fdb3f22d3d", + "source/boots/10-right.png": "a2a038a7d95b59d27485d5c29aeaa2de5cca327925243cb4c7c91901cd067bac", + "source/boots/08-left.png": "db434710d0170df3e05d1cfa607cf9fc4fe45c8ec615b59cd3adf337b9a7cb4e", + "source/boots/09-left.png": "0c1415102acf7754dbb848cf3ee26e1809b0e7d58202aff32172ec8514ba0762", + "source/boots/12-both.png": "18d7ee3cce0666dfb4f2edc4bd85eb9415582cbe50f633ad9e97a366c8c86eb2", + "source/boots/13-both.png": "e99638f84d5bdd7bbe3efb8ab8acee0bc9bd373a19aaa045e03c1cd190bd0ddd", + "source/boots/02-right.png": "bec0cdb6468b27ad124de16ceee9d72fd2bb16e7255bcd6ee8815bc8fb253f51", + "source/boots/02-left.png": "d1c4aa0895c19bd2203998f10b3d56b440652ab3c19a015fa05a1e3d4c013826", + "source/boots/03-left.png": "0112e391d8bed7a385de3acfc65049a7cac64b670c436e0c3f064e29384ef632", + "source/boots/11-left.png": "7f426c33145d618ed6eaf0b0b8cb977eeb60e2c5fafad365a45467d4c665e0a3", + "source/boots/10-left.png": "52c7dc711b56350dfc47d9ab7f9225eb12723a0620c3a10bb584c3071c8b4726", + "source/boots/01-both.png": "75b17a41ef864a92223e6bf90d14a8c83fbc6e08813d407cfcef9e1c9dcb5ae1", + "source/boots/13-right.png": "0df71708febd5b4391b02a713394bb9d55bfe1e7587f3e13a82f1d37ee500b8e", + "source/boots/00-both.png": "aad82de37e1a1fe58770bb0067eafb75413b90ff7ff07bd61ad75afc21dedc22", + "source/boots/07-right.png": "2126c953ca3c6aaa13dd8615706ac1b3bcdc477dde3c702e3d5dcd994416bffa", + "source/boots/06-left.png": "aa72ac146ff0bb22d00588a404217c69c1f9355b6a8dfacc6f21d2b53afa5e7f", + "source/boots/07-left.png": "4b465d826b7cb44b0c3993e568165c9a6f20c7e8729bb3d2581e8f2a3d6f2acf", + "source/boots/15-right.png": "a3c8a9f6059cf96bf842b4b3dc7a0908bb55ada30c3b125056796a64a25aea78", + "source/boots/01-right.png": "9f6730d9ea671c6a8111e58b39ab1b46d74eb6e19980165b82534812e74a4bf6", + "source/boots/01-left.png": "dc3130cb53ee088f42f3b5f54772344d375ccdfa7aaa111274dd5c4e75159367", + "source/boots/00-left.png": "c6639c01fa7ec7f8ad874fd3b4c1d345fccb2b17ee7471d66b0b818b9c8e25fd", + "source/boots/06-right.png": "132bb38faa2441b313796125eb0f0b83fdd8a815253e324c471c15560bfbe7ea", + "source/boots/11-both.png": "bd2620e555e185eb7bd5bf3637c5cd121b7b89994559220f361d73d131c07056", + "source/boots/12-right.png": "c9eabc2875c0165fbd5d7b4ad5708cce7155e088fafba0012aac298b5dabf48d", + "source/boots/10-both.png": "0fb922a970dbdfb694f1298fb9c796d11445bfe1c907b9d00ed7f58f89761054", + "source/boots/06-both.png": "8b1830d3cf5e43ae26da03be7652c6919f5430fba7a275d130de8454ab8eb479", + "source/boots/07-both.png": "8c783eac7787d25dc875aa7e205bf4303ba5cf4de9b1b200506ee7931a314b45", + "source/boots/00-right.png": "73b20cad43f91f6bdd6aee7da0386ca0a17a6e02b2490af62586f70e21cfdbc6", + "source/boots/14-right.png": "96ea4d339a1fa999f3bd28451d8ebb41116576c697b2ce591950aec54fac6e5f", + "source/body-source/left_boot_hidden.png": "703a1b66afb35559cafd60231df1ba6439550fd4ef0da7e33e491b10004d56da", + "source/body-source/left_shin_boot.png": "58eb39c047ebb4f20aaae08ec63a6052624d54f5ea82bb2b7ca60f4847843593", + "source/body-source/right_thigh.png": "92bb25e717a8704dd6147e3d42d61a039a16e0a3fd8953b6b4838b8171599085", + "source/body-source/left_thigh.png": "d56129dd205b54dcf6a8a55a65f2eba79bd6ed062fb03db85cea4a8a2aefc4bb", + "source/body-source/left_knee_hidden.png": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29", + "source/body-source/left_elbow_hidden.png": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac", + "source/body-source/left_shoulder_hidden.png": "635f66fb1d4198ea9b3d8ac719e1df8aacedd1cdc2b9e44c4c3c219b653fc1e5", + "source/body-source/right_upper_arm.png": "c033da2620b7cf8fab8d06c34a344005bfed86f8967004a5be0a33306c0c8690", + "source/body-source/left_coat_tail.png": "932a93161bd638df053f33b58d82a57e722eaa60cbadc95a71274f8a42d948f4", + "source/body-source/right_forearm_hand.png": "64eeb0b1ce4c40176b84b4c9153e42f2bc2d341b4aa480fc879f9e1ebb6cffbe", + "source/body-source/right_boot_hidden.png": "e5f9d6d93d2baac11c0d3b72ecfb32ce36e921b084317a05687c25a4a3a63a52", + "source/body-source/right_shin_boot.png": "4105dea24e6add878d02a7b4afa77de277c48780ac7ea37c058d1802c49243c5", + "source/body-source/left_forearm_hand.png": "168ac896495617d0d076c40c0d297affd8bbf6e2c645b18b28d3362d37bd51a4", + "source/body-source/hood.png": "061546675424a684d3470974a611d886bdde8192b41d09c5eaf6604cd4bfd183", + "source/body-source/left_boot.png": "162f9554e7b38a3d33dd58683c4021a4da91a79ff0aaf1c4c2639b1de6b0f232", + "source/body-source/right_boot.png": "60ecc1a390005e0ce07a622fac7e88da8d074b603e363549fd33eb35656e3559", + "source/body-source/right_elbow_hidden.png": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4", + "source/body-source/right_coat_tail.png": "585f21888a103ec52d494d1de1c992cba654936215f097a7ae7ddc95e870339b", + "source/body-source/right_knee_hidden.png": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288", + "source/body-source/torso_coat_equipment.png": "6fc702c5b5c4f1ad123d3862da795d539190dad9d609d49923f2bf3c9d952baf", + "source/body-source/right_hip_hidden.png": "5d541656fd4817ba5536f4fab469fecb42cde3ae2487a8e18ec6262da0afade1", + "source/body-source/left_upper_arm.png": "47fd20562122a6358a1b0528fc12818a53c4868499d684cf6e7fdfe7b6680d24", + "source/body-source/right_shoulder_hidden.png": "bc570fe28204d21d1924c8f416a5a2b5f058db9d3ac14ae452d59a27c170da7a", + "source/body-source/left_hip_hidden.png": "78648454e0f8abba6b1c4deb7880ed589a1baf35732e015733c851632812b49a" +} diff --git a/docs/review/character-cycle-integration/sixteen-character-poses.png b/docs/review/character-cycle-integration/sixteen-character-poses.png new file mode 100644 index 00000000..2a862224 Binary files /dev/null and b/docs/review/character-cycle-integration/sixteen-character-poses.png differ diff --git a/docs/review/character-cycle-integration/slow-character-cycle.gif b/docs/review/character-cycle-integration/slow-character-cycle.gif new file mode 100644 index 00000000..cf3bbe78 Binary files /dev/null and b/docs/review/character-cycle-integration/slow-character-cycle.gif differ diff --git a/docs/review/character-cycle-integration/source.zip b/docs/review/character-cycle-integration/source.zip new file mode 100644 index 00000000..6d04ec96 Binary files /dev/null and b/docs/review/character-cycle-integration/source.zip differ diff --git a/docs/review/character-depth/README.md b/docs/review/character-depth/README.md new file mode 100644 index 00000000..73da5f3f --- /dev/null +++ b/docs/review/character-depth/README.md @@ -0,0 +1,13 @@ +# Shared lower-body source depth and calf refinement + +Status: source integration candidate; not benchmark art or active runtime animation. + +Both boot/calf renders now retain their per-pixel source depth. The thigh renderer returns matching world-source depth. assemble.py resolves all four images through one depth buffer, replacing average per-limb draw ordering. The recorded comparison uses the same current images with the prior average-sort composite: 168–555 pixels differ per frame across all sixteen frames. This establishes that the source depth path has an effect; it does not establish correct whole-character occlusion. + +The calf tube changes from uniform radius 1.45 to an authored tapered profile: radius 1.6 at source distance 3.45 from ankle, 2.0 at 7, 2.2 at 11 and 2.0 at 13.5. These are candidate source proportions, not anatomy measurements or new specification requirements. Retained high-resolution cloth material follows longitudinal calf position. The first crop included a knee-pad fragment, duplicated on the back; boot/rejected-knee-pad-swatch.png preserves that failure. The revised crop uses registered source rectangle [158,289,180,307], excluding the visible pad. + +The sixteen-pose sheet was inspected. Depth ordering and cloth coverage are improved construction mechanisms, but the knee cap/joint remains visibly exposed in recovery, the cloth patch is repetitive and the boot material does not match the upper-body quality. Torso and coat still use front-layer compositing outside the shared lower-body buffer. No art acceptance is claimed. The next source repair is a continuous knee/joint surface with correctly owned pad material, followed by full-source motion quality and existing renderer travel gates. + +Verification: boot/material.py and assemble.py each completed exit 0; 32 boot/calf images and depth arrays, sixteen distinct RGBA source frames, fixed 384x416 canvas and existing 0.5-second source cycle. The GIF is deliberately slowed to 125ms/frame. Pixel depth records and assembly hashes are retained. Prior clean core result remains 773 tests in 109 suites. No runtime/device validation is newly claimed. + +Authority: existing SS-specs d602775 controlled-character-source.md/BP-002/BP-008. No new product policy or active code/art/metadata changed. Reproduce with Python + NumPy + Pillow: boot/material.py, then assemble.py. Exact source geometry, material, depth and assembly recipes plus inputs and evidence are archived. diff --git a/docs/review/character-depth/assembly-record.json b/docs/review/character-depth/assembly-record.json new file mode 100644 index 00000000..0c006f0e --- /dev/null +++ b/docs/review/character-depth/assembly-record.json @@ -0,0 +1,214 @@ +{ + "status": "WHOLE_CHARACTER_SOURCE_CANDIDATE_NOT_ADMITTED", + "cycleSeconds": 0.5, + "previewFrameMilliseconds": 125, + "controls": { + "shoulderDegrees": 6, + "elbowDegrees": 4, + "coatHemPixels": 4, + "bodyBob": "derived from authored pelvis height" + }, + "controlAuthority": "Authored candidate values, not research-derived acceptance criteria", + "depthPolicy": "shared per-pixel source depth for both boots/calves/thighs; coat and torso retain front-layer policy", + "limits": [ + "Thigh uses an authored depth surface; rear cloth is provisional", + "Torso/coat are still layered rather than part of the lower-body depth buffer", + "Boot proxy materials remain below benchmark", + "One facing only", + "No real-renderer world-travel test" + ], + "frames": [ + { + "frame": 0, + "time": 0.0, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 522, + "finiteDepthPixels": 7167, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "6141ab24eb2070d28a521b97c88077c068255b38534ac2e3c98df94962d0d845" + }, + { + "frame": 1, + "time": 0.03125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 425, + "finiteDepthPixels": 6403, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "350a74b8f6b915a9955b8eb2f85aab1c9cc9343c00a2e4d872984723db1bf5b9" + }, + { + "frame": 2, + "time": 0.0625, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 550, + "finiteDepthPixels": 6276, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "4ba470ce17a371014a7fd80d587fa0fb416692506926ba3ca7d9f4386dd3e9fb" + }, + { + "frame": 3, + "time": 0.09375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 194, + "finiteDepthPixels": 6248, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "1e7e0299741735ac13563c6f882a1b0f356779cdfc1fa6dcbb0198a6eea6b4a0" + }, + { + "frame": 4, + "time": 0.125, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 319, + "finiteDepthPixels": 6583, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "cd8bf450bcc484731cab7ae1b9413fe9c4c4b1cd890871fd74a9e467a5b5af48" + }, + { + "frame": 5, + "time": 0.15625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 257, + "finiteDepthPixels": 7249, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "86f35b90b4d9d0e3234ce88e345b634eb9a99152c86125a5d57a086146ee17ec" + }, + { + "frame": 6, + "time": 0.1875, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 168, + "finiteDepthPixels": 7689, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "e30135df0168be6dc7c08353f2c9a22d26ceff34dab9b8d6c017daf5caa2ef28" + }, + { + "frame": 7, + "time": 0.21875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 329, + "finiteDepthPixels": 7728, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "e2b390fc55907448915be666b07b86149c56f3368ab5a663a78e6cfd740a59a4" + }, + { + "frame": 8, + "time": 0.25, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 524, + "finiteDepthPixels": 7167, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "fdb0d39e23ff4f9c6a86e8539c19958d490401ce2738538813dae26463afc9c7" + }, + { + "frame": 9, + "time": 0.28125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 428, + "finiteDepthPixels": 6403, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "3aca562760cf0da1d183831e0133a5c7c2c4a48ed0a884e5cb5ec7daa1f4d716" + }, + { + "frame": 10, + "time": 0.3125, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 555, + "finiteDepthPixels": 6276, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "b9d993bb845b1ef61286d0912fe1ca7af92143f7a74383c1c987083fcb090179" + }, + { + "frame": 11, + "time": 0.34375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 195, + "finiteDepthPixels": 6248, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "72a43893a8918974c8b17dd33c7fef931539dec02ab34937a03fa608a40d4750" + }, + { + "frame": 12, + "time": 0.375, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 319, + "finiteDepthPixels": 6583, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "e4f3e26d36d016f6b62a92585812f330f62d12dbfef9587c1c8ada32065e2d2b" + }, + { + "frame": 13, + "time": 0.40625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 258, + "finiteDepthPixels": 7249, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "df862e0a195a410bc753d8acdea872dad4639a43bb09254fda4e27ce73b14b00" + }, + { + "frame": 14, + "time": 0.4375, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 173, + "finiteDepthPixels": 7689, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "325366b2ea4d3357a4f9752bd04a7951fc71d51aa2344c04950685144728e1b6" + }, + { + "frame": 15, + "time": 0.46875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 336, + "finiteDepthPixels": 7728, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "32deb03fa6c7e17309d4ef69b36fe9943940fecc402b684562e789d32ed1a6db" + } + ] +} diff --git a/docs/review/character-depth/hashes.json b/docs/review/character-depth/hashes.json new file mode 100644 index 00000000..a3589831 --- /dev/null +++ b/docs/review/character-depth/hashes.json @@ -0,0 +1,146 @@ +{ + "thigh.py": "9c9f4b240400c9c0d4d4f84128705a1863a9a9c34464bdfcd46979bf72492df4", + "assembly-record.json": "000a5ac104bd3cbaf55f0d82290b1a3d2da557198d116d725a9b595323ed8ce7", + "sixteen-character-poses.png": "c92178d7e78188d23faea3537c347aa08595734627b845d61076ebdf8ec302f5", + "assemble.py": "7af5754084bdbb55ccb698ab9a87fc23fbad953acd4cb4509de13f10c5355a52", + "README.md": "0b6f9057bbf6602950f5e7348f5e9f13655871d77518e2e834b25f8322fa0d89", + "slow-character-cycle.gif": "5aecfcf21871f609bed8b6691b447d219a7e3b0250fb7e88e0b6c083fc3554f2", + "boot/material.py": "a9c84386fac3178400bd53979701cc3fccb81f6fe1341ca1b18db6805accecc3", + "boot/assembled-key.png": "b9fd5005c2b755b71b57bd27094d85a09e0e1546f0354411e94148b8d33de54a", + "boot/samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "boot/material-surfaces.png": "70df1c077f1988b703224c0f033824e6a7717726cf06e914bdae61531ebce093", + "boot/registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "boot/retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "boot/material-record.json": "72a84557d38eaad334c4509918203cce3e3b4a4e12b873a016ecf81ee281bb1e", + "boot/rejected-knee-pad-swatch.png": "5fd072f29ba11fe6b75fc92a119a78810e5776840ea0cf009011bd6c5f276f96", + "boot/source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "boot/material-cycle.gif": "ee1f7a9f6cce3d631a23050f2b8f55242f0daf69b92aeca45996af5285608165", + "source/samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "source/body-rig.json": "c1d53f25495c4e17bd3f1f4df1b0e0e87bd047872420625642a88b8cdc26530b", + "frames/14.png": "6316183c236bb5fe7884d14af5cf9b0b9db26b6457af36b6c97069cfa59dba59", + "frames/00.png": "5093dd6cc22e940307102c25c4acd696517de4a55e028dc03d211ef7373df55e", + "frames/01.png": "6082ca3709853d76eb94123ab92e81a3dfaa524399a4fcf9cf66686a65011571", + "frames/15.png": "211e98bbc69f38723196caf64ed522f19248b9acfd074339b73ba477324f6876", + "frames/03.png": "e661bc2a13d1c065c54227b48c4de6c620c30101f2c7b5ab795d2e3ee3fb3d27", + "frames/02.png": "86913496212271fc6ae2d064b5af5153b161c9c12202f3b3ddaeb19f1785387c", + "frames/06.png": "d26764fe200e51469b20e3bfe2ef47a98094f1134635c50c9158648e4d8ffd29", + "frames/12.png": "96caddc0e6750c35d101c2a1c46badb3b235ea46ee919f5f6b9579de8ff3f610", + "frames/13.png": "5c7ff75ca3465d52449fe013e4c15b725dadc6aa42b587e478db284db6f8925a", + "frames/07.png": "af92f7ad153da83be9672d293f871a363ef596ea6c3264718ddc8c0f016bb9d6", + "frames/11.png": "79bea76713b9a9a43787b6c8d7ddd3e26a116aeb5e7db1ec36f83c56574b0e34", + "frames/05.png": "81157ae674f8bea4131615279bff125cbe4844803f1625cc6515dd63fb8381c0", + "frames/04.png": "8978db1578ef7f62c032a4e580b43f746a32a32fad7c7467eb0ab956892c62b5", + "frames/10.png": "8018bc8bab36a032d9c10ebf77157dd7046af6796b4aeaf85f885a2a4e99e043", + "frames/09.png": "329a45d71e7a7d21e4f785e37040eea44cedf0b62dc9080ccc01ccf906e4b9f7", + "frames/08.png": "6659fc516807b1fd4299e74974c6dc63110d5a4a7214dad4a16a87afba87a462", + "source/body-source/left_boot_hidden.png": "703a1b66afb35559cafd60231df1ba6439550fd4ef0da7e33e491b10004d56da", + "source/body-source/left_shin_boot.png": "58eb39c047ebb4f20aaae08ec63a6052624d54f5ea82bb2b7ca60f4847843593", + "source/body-source/right_thigh.png": "92bb25e717a8704dd6147e3d42d61a039a16e0a3fd8953b6b4838b8171599085", + "source/body-source/left_thigh.png": "d56129dd205b54dcf6a8a55a65f2eba79bd6ed062fb03db85cea4a8a2aefc4bb", + "source/body-source/left_knee_hidden.png": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29", + "source/body-source/left_elbow_hidden.png": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac", + "source/body-source/left_shoulder_hidden.png": "635f66fb1d4198ea9b3d8ac719e1df8aacedd1cdc2b9e44c4c3c219b653fc1e5", + "source/body-source/right_upper_arm.png": "c033da2620b7cf8fab8d06c34a344005bfed86f8967004a5be0a33306c0c8690", + "source/body-source/left_coat_tail.png": "932a93161bd638df053f33b58d82a57e722eaa60cbadc95a71274f8a42d948f4", + "source/body-source/right_forearm_hand.png": "64eeb0b1ce4c40176b84b4c9153e42f2bc2d341b4aa480fc879f9e1ebb6cffbe", + "source/body-source/right_boot_hidden.png": "e5f9d6d93d2baac11c0d3b72ecfb32ce36e921b084317a05687c25a4a3a63a52", + "source/body-source/right_shin_boot.png": "4105dea24e6add878d02a7b4afa77de277c48780ac7ea37c058d1802c49243c5", + "source/body-source/left_forearm_hand.png": "168ac896495617d0d076c40c0d297affd8bbf6e2c645b18b28d3362d37bd51a4", + "source/body-source/hood.png": "061546675424a684d3470974a611d886bdde8192b41d09c5eaf6604cd4bfd183", + "source/body-source/left_boot.png": "162f9554e7b38a3d33dd58683c4021a4da91a79ff0aaf1c4c2639b1de6b0f232", + "source/body-source/right_boot.png": "60ecc1a390005e0ce07a622fac7e88da8d074b603e363549fd33eb35656e3559", + "source/body-source/right_elbow_hidden.png": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4", + "source/body-source/right_coat_tail.png": "585f21888a103ec52d494d1de1c992cba654936215f097a7ae7ddc95e870339b", + "source/body-source/right_knee_hidden.png": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288", + "source/body-source/torso_coat_equipment.png": "6fc702c5b5c4f1ad123d3862da795d539190dad9d609d49923f2bf3c9d952baf", + "source/body-source/right_hip_hidden.png": "5d541656fd4817ba5536f4fab469fecb42cde3ae2487a8e18ec6262da0afade1", + "source/body-source/left_upper_arm.png": "47fd20562122a6358a1b0528fc12818a53c4868499d684cf6e7fdfe7b6680d24", + "source/body-source/right_shoulder_hidden.png": "bc570fe28204d21d1924c8f416a5a2b5f058db9d3ac14ae452d59a27c170da7a", + "source/body-source/left_hip_hidden.png": "78648454e0f8abba6b1c4deb7880ed589a1baf35732e015733c851632812b49a", + "boot/source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "boot/source/parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "boot/source/orientation.py": "03f31bc77c824d8cd4ad2a40f806e2181e6f952b40567974314185d55b566879", + "boot/source/smooth.py": "2563ff9a6e234c4bcec250e69b8e79f2261a9efaa04937f27312c440b76d0c5c", + "boot/source/boot_geometry.py": "53f60cca21881c09cfa9a43db672ce4dc81c214f682428e73946ebe6e99143b1", + "boot/source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "boot/frames/15-both.png": "45efa3ab4ab779d0652b576676ce02e3339cb57691b30aeb85f431a257d55170", + "boot/frames/14-both.png": "e976b404516e33957d397d83b749ffe0dd2dd7d9eeafed75217dca937bd44cb6", + "boot/frames/07-left-depth.npy": "18c8bc8c7c08d19b179217651115c411c494f0c79b1a6991c5e1b8e0a555285e", + "boot/frames/12-left-depth.npy": "0515e6833b353a4581448f6df6ac45a2f36bf24a3aee2b5fe2bc9d1503f9bca8", + "boot/frames/08-right.png": "92517e66a6080dd3033c92a1d37e2d9dbb128d648078be18a2639085c9d56f5f", + "boot/frames/01-right-depth.npy": "892a279449190b82dd3c720cf21e8434b206441e82f00e38b436fc8d62330df1", + "boot/frames/08-left-depth.npy": "e03e61ea4bc3bdfc0e1a79743d916a59873efd789bdb44602d68095e4122751c", + "boot/frames/05-left.png": "4593ecf7f8bb4d401405d36e403fe39a3a7bd9535b176645514fe4fda3210896", + "boot/frames/04-left.png": "98e3338080173515e1370e33d89bb6cf8dcd0ccc53e9309b4b1a65a1c58165ec", + "boot/frames/11-right.png": "438e678f5d0f364c4224d00f041a296ff4f39edd935a05361b2e0e0c1fc1a31c", + "boot/frames/15-left-depth.npy": "6988ebd45d559ea1068fe5103f998fbf83a77d48303a04c263557f15b9b3af46", + "boot/frames/00-left-depth.npy": "a310d282d9811619ad830c036fe48f767a528a34a4c6ebcc2a80f13fa00bfa0a", + "boot/frames/05-right.png": "3ca9e33d3dcab9a9567f62dc6765b7b55206c7d4d0baac95e30af7bbd3285bd4", + "boot/frames/01-left-depth.npy": "af6398dd4e5920ffb6b071376c36562abb26325b647dbe040f06d38b9c26aa35", + "boot/frames/14-left-depth.npy": "ecaef02ee3fbbd6fae4abd6fbf135e810c074cc0eda501d309ca6b23d19fc4c4", + "boot/frames/02-both.png": "8ef05ea97b15a25a3f3139c3aaeef659ec13e7279382a42907eb9681494c9400", + "boot/frames/03-both.png": "be0ce7bf905401c1592133e4f848a755204e7e7ae17aa8cd120aa40bb3456e49", + "boot/frames/10-right-depth.npy": "1552bc5db67aba59efc13d479181e6549b4bf1e23b5d966f070cec1c865323bf", + "boot/frames/09-right-depth.npy": "dd23ae0ad70ce2669332e1704825521b8cd3c568cafb3f6e5131375d93811f7e", + "boot/frames/09-left-depth.npy": "2b2312148d09a895b237023cec0278364384e1330ff00b40b7390b1e507b804e", + "boot/frames/12-left.png": "bfde02ad84e29fd856eda5d08a1f409d52d466e81e3e1f1dcae0fc93ed2fb443", + "boot/frames/13-left.png": "119a804a9343fd960d5ef2359f1464dc0ef1dc77790e1ba2c2d609fbf5eb7b7b", + "boot/frames/06-right-depth.npy": "2d5a859520f001ff8ed9d0bd6c9010058c77c26b6d9bb4b48dce8405bd95e2d5", + "boot/frames/13-left-depth.npy": "2cf373b6507f2dea471c1844534343f26f322c8fd8e6f87ba242d0e920a8976d", + "boot/frames/06-left-depth.npy": "cd4c4113eeb1d8a4a5c18ffc82153f2d2a63b617072a933e242e0f32cba1bec1", + "boot/frames/08-both.png": "a9570dea4b4c6aa4b4c0fc02476ca2dd6d57d7ada1bd88121b256d44695a73b5", + "boot/frames/09-both.png": "e418ea18bd33f6d3631136a8b04a6814487fa2a75455e12900bc0a2899e0d978", + "boot/frames/03-right.png": "9ed653794b143a45ce2b13de99855c47fe123e6945dc3a8c87f0fd6a92158007", + "boot/frames/05-both.png": "9b75a5cee46a4dcd92a73dd487e2829a4db1f944cc6b9f4067f83be90417bffd", + "boot/frames/11-right-depth.npy": "7c797e41b5d5e2ee2405f0b2b73506ead5d3cdb11a407c9ad37f844e63924f9e", + "boot/frames/04-both.png": "f9d8072a2bdb5d322f9a2c6c5c9660ec7a12b71eb3b9da31be6b9ba87c0eac9c", + "boot/frames/11-left-depth.npy": "982bf177af3674e0653077f906b1d95faa7508e4bc4ee94988ee15328a7b5016", + "boot/frames/04-left-depth.npy": "05652ce0548e9bf95ad671c66d2eeef9dc5e3be166c46bda29d92c2d069fc207", + "boot/frames/09-right.png": "2ecaa008fbe396ab6be1d374dfe0aae67535cb79e3a1f920271ce0328da25be3", + "boot/frames/08-right-depth.npy": "984f488f393f62e02aafed0b61d92177a1e53088ed28430ec4c6e97f78f31672", + "boot/frames/15-left.png": "e98db8b2918d7ff2af5c6fd5af45897edb29973147097d43e0ffa43ce0e8ca0d", + "boot/frames/14-left.png": "6d0dbecf48a406c683f58bdf1eca34bf2e3c231bd5eaa087505a4bee09875aa3", + "boot/frames/07-right-depth.npy": "875a41ce82406df39b7394a59476f66bb20036e0e4924e2324f916e91fa9aafd", + "boot/frames/03-left-depth.npy": "2e687fea63cf8bba126b7e470fb698d616c2c83c2a1c73590f47d99b6e1b8733", + "boot/frames/04-right.png": "f076feb7b479488aee49df64feec27450160c70b74b4135c6c66f7b7cde74174", + "boot/frames/10-right.png": "8e04229dd95bc721bbcf6fe71ace86ec110e2c630d4b7a14d7c12a50687d7154", + "boot/frames/08-left.png": "6bdfced7f67bdd4545161d86cff6c7c6c788a1670adefadafe7f371c17764631", + "boot/frames/09-left.png": "095187ac042d1f40f15bedbadd0b0f91e3b28c6c1457e682003da84056b7839a", + "boot/frames/12-both.png": "22143120f53a45a7e914978a21333c308c92faec4d52116758d3a001f91330a8", + "boot/frames/13-both.png": "674388598fcb4267161665aa54564b72413e91fb98f136d54a70755638c924f4", + "boot/frames/00-right-depth.npy": "97fb41519222e497bbb9d60937062ee48d46e92ec78d8b676ddafcae2520278f", + "boot/frames/02-left-depth.npy": "aedb32ba85b3771c6bb033a3338dec1566d637a0a535e0241803fd477092a007", + "boot/frames/02-right.png": "c7d4a09de1a0d3d4cbc50942388614ccc660a59332ee023d21e7167e3d2cab1d", + "boot/frames/02-left.png": "576718b0b31d5601fc030dc5309fc85f31232ce0b6d762e4ce496229d6ae7785", + "boot/frames/03-left.png": "e9146223f32ec60408ab594164885ba0134ce519194f1f49a7d6f965a5d21256", + "boot/frames/05-left-depth.npy": "e0b1df9ddcbb2cb7cacac79a14ed7b4246885f0f0eec183fde14035fc54ba8eb", + "boot/frames/10-left-depth.npy": "9abcf9370f2e3a6b984b1231ae478520120bd4a6e2de092c385084b458afa42e", + "boot/frames/11-left.png": "41360aa65852a65fbfb022a9f2adfb38933fae0833b49005b9ff2f52dc203729", + "boot/frames/10-left.png": "14fee6e5a1a379502974da5746124f53120aa47e1d2a56c8377b6a5473f92843", + "boot/frames/13-right-depth.npy": "39b84b669df7cf9ad58589a926a268562ee39c9a8d0edd82e8ecc70fa7f3d599", + "boot/frames/01-both.png": "ecc39484c9e4cb8e0e93cf79d444587b30025816d1e67f9b07ff519066f5be23", + "boot/frames/13-right.png": "b1651a4b492e9e76761750aa3c397cb3926a2826060f6c105dfd8662c65c0a5a", + "boot/frames/00-both.png": "1474cc02dcbc0e57a822380b6d0c3450c0ee5251e08be299e19d6d672400f4e8", + "boot/frames/07-right.png": "99f61f0785cb6cbce1f422b9785c4a80a905ce7a1cbe09846b153a13b8a12ea2", + "boot/frames/05-right-depth.npy": "38d9d9e6df5c3c4244f04d758ee0f16f3310bf18c054615285f68a3a00c6a815", + "boot/frames/02-right-depth.npy": "621721aacf40c8d14c86b64b91a62ddbd44feb6a4ec06f459b5f527d49ef7f26", + "boot/frames/06-left.png": "b41612324fcc6f88a8025cf48c751f7b0c7600f25bc95dcc52695aba0b02a8fe", + "boot/frames/07-left.png": "8f8be1728b3d9939323b64bdfed7f15da0a831c1d62358327aa7f0493414a8e0", + "boot/frames/14-right-depth.npy": "2611d42d3ecf0a2720954af9713bd786655dfaf5df7e7fe38e51d582bd4e5c36", + "boot/frames/15-right.png": "43d9131ad01546ee8baa791b4294c1d0d49e4eef59ff4f3ec29250a19800b697", + "boot/frames/01-right.png": "4345cbb9398137c95fb2327056a38a12b21795a02c44bec14e4057f8cd4737a0", + "boot/frames/01-left.png": "a4a35a23ab18b4b80f1aac56e16f231024ab0c07aa4ea2c4c9b7ed7bfe6c5924", + "boot/frames/00-left.png": "9dcefca41a06a873828f6d565176fe376e45cde54c13c2cbbbb0ac64e02cbbd5", + "boot/frames/03-right-depth.npy": "df9fec4007e10b3f594876757ccad16e6bcb958ccda8b3d7289d60bc04552544", + "boot/frames/06-right.png": "05234856ed66a63bfd7690fd2a123fd0974073d989535a5b1e6a29bb09f5ad7d", + "boot/frames/15-right-depth.npy": "d095357a7f84c5f59647dbc7c59a42df57fbbca2290ac7964ff08d7ab9005140", + "boot/frames/11-both.png": "04e4945650fe7f6d2e50f27d843eb8cca9199da54ced907cd62512fb5027f8b8", + "boot/frames/12-right.png": "48b1c32752e2878c69af9768c14f0c5fdb76f67bef010cf3a8a03bf268593f59", + "boot/frames/10-both.png": "8ce4c16ba5877cfe2bc0ee193071b17dc5ce710b5267a978676ac3a2bb475251", + "boot/frames/12-right-depth.npy": "dec468035f15808f0b05191dbd73fa8f922324656b10c665818407f1ebb5acb9", + "boot/frames/06-both.png": "659397ef9683afd7dd0a12932e5e1587a71cbec8eaee388745563e0022943043", + "boot/frames/07-both.png": "409aec60ae489f890f34638c84f00925daa7ab330d0c563c1706ee9f217525c0", + "boot/frames/04-right-depth.npy": "bffdd4fc15a955b0271e8c2fbe972b650cb504bdbc5ac32e5a018f2938160168", + "boot/frames/00-right.png": "9d194649390aa1422299342ac9a7a456a23bd1669e80e88c3ce1545c3cab90c2", + "boot/frames/14-right.png": "f2a20f74760669cb1c405e70eed69c6e045bca252d3f91b2d976f74c02e7d625" +} diff --git a/docs/review/character-depth/sixteen-character-poses.png b/docs/review/character-depth/sixteen-character-poses.png new file mode 100644 index 00000000..7fd9dc94 Binary files /dev/null and b/docs/review/character-depth/sixteen-character-poses.png differ diff --git a/docs/review/character-depth/slow-character-cycle.gif b/docs/review/character-depth/slow-character-cycle.gif new file mode 100644 index 00000000..06897be4 Binary files /dev/null and b/docs/review/character-depth/slow-character-cycle.gif differ diff --git a/docs/review/character-depth/source.zip b/docs/review/character-depth/source.zip new file mode 100644 index 00000000..d6998b6a Binary files /dev/null and b/docs/review/character-depth/source.zip differ diff --git a/docs/review/clip-v2-decoder/ios-summary.json b/docs/review/clip-v2-decoder/ios-summary.json new file mode 100644 index 00000000..9eaee070 --- /dev/null +++ b/docs/review/clip-v2-decoder/ios-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 89, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792012261.1, + "passedTests" : 87, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792011977.936, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "52% of duration", + "text" : "2 longest test runs with outlier durations exceeding 9.20s (three standard deviations)" + } + ], + "totalTestCount" : 87 +} diff --git a/docs/review/clip-v2-decoder/review.md b/docs/review/clip-v2-decoder/review.md new file mode 100644 index 00000000..79d24715 --- /dev/null +++ b/docs/review/clip-v2-decoder/review.md @@ -0,0 +1,21 @@ +# BP-003 v2 decoding and frame-duration pairing + +Runtime base: 0d5fac0. Spec pin: 9a87f95ae52f3f174392418e333573a56c04100a. + +The shared clip decoder now accepts the explicit clip-metadata-002 target representation. Version 1 requires fps and rejects timing; version 2 requires timing and rejects fps. Unknown schema/animation identities, unknown/missing timing keys, noninteger/boolean/invalid holds, parallel-array count mismatch, sum overflow and selected-facing tick-numerator overflow fail closed. Existing semantic validation remains in force. + +V2 records carry no fps value. ClipRecord and ClipFrameLibrary preserve the complete validated integer timing, selecting frame indices and duration indices together. Interleaved frame IDs preserve the authored order and the correct facing's holds. V1 continues through the uniform-duration adapter. Renderer action construction already consumes ClipTiming rather than fps; each SpriteLibrary instance owns an immutable frame library, so its per-clip/facing action cache cannot mix timing definitions across libraries. + +Tests mechanically convert every current clip and compare all record fields after normalizing representation, all authored frame lists and all facing durations. A technical interleaved fixture gives north/east/south/west independently expected 10/20/30/40-tick durations. Malformed v2 cases are tested through both catalog and delivery loading. Existing v1 timing assertions still explicitly require fps rather than substituting a default. + +## Not yet production-ready + +Bundled metadata, active clip version, asset owner references, exporters and shipped assets remain v1. No v2 clip is admitted by this change. ReactionClipTracker still calculates its lifetime from the first facing, so clips with unequal facing durations cannot be adopted until reaction selection and playback are reconciled. Direction changes during a one-shot also need an explicit phase/lifetime policy and renderer tests, not an assumption that restarting an action preserves elapsed time. + +Research: Apple's [named action control](https://developer.apple.com/documentation/spritekit/controlling-actions-precisely-by-using-names) documents replacement by key; [Godot's transition documentation](https://docs.godotengine.org/en/stable/classes/class_animationnodetransition.html) makes reset/restart behavior an explicit setting. These establish that transition behavior is a decision; neither selects SS's design. Next work must define and compare phase retention or event-facing retention, verify selected-facing reaction lifetime, pause/resume, interruption and final texture retention, then migrate resources and versions together. New source animation and visual/device gates remain open. + +## Validation + +- Full core suite: 770 tests / 109 suites passed in 617.936 seconds, final source state. Command: `swift test --disable-sandbox --cache-path ../swift-cache --config-path ../swift-config --security-path ../swift-security`. +- iOS Simulator: 87 tests passed, 0 failed, 0 skipped (84 Swift Testing + 3 XCTest); iPhone 17 Pro iOS 26.5, UUID CACB3927-A76E-43A5-9ACA-C389EB38C0C3. Xcode result Test-SSRuntime-2026.10.14_14-06-17--0700.xcresult. Existing app playback/interrupt/pause checks exercise active v1 plus the shared ClipTiming action constructor; they do not establish complete v2 lifecycle acceptance. +- No physical-device test. No active resource or gameplay identity changed. diff --git a/docs/review/clip-validation/review.md b/docs/review/clip-validation/review.md new file mode 100644 index 00000000..ea5b58ef --- /dev/null +++ b/docs/review/clip-validation/review.md @@ -0,0 +1,23 @@ +# BP-003 exact timing migration prerequisite: unified validation + +Runtime base: 451a457. Spec pin: 00ce027209e6c233bcdd35295f35f0b9bfb9bbe5, animation-timing-migration.md and BP-003. This change does not admit v2 metadata or new animation art. + +## Defects corrected + +Frame delivery previously parsed a subset of clip JSON independently of ClipCatalogLoader. It ignored schema identity, unknown timing keys and several semantic constraints. An exporter could add timing while leaving fps, causing delivery to accept and ignore the authored durations even though the clip validator rejected the same data. Delivery now consumes the validated catalog. + +The catalog integer helper fell back to NSNumber.intValue, truncating fractions and coercing booleans. Exact integer conversion now rejects fractions, boolean values and values outside Int range. Loop flags require actual JSON booleans; anchor objects require exactly x and y. + +Delivery previously inferred a facing from equal-sized consecutive slices. The catalog selected facing tokens from authored frame IDs. A valid interleaved order therefore made the two readers disagree. Delivery now preserves authored order while selecting the declared facing token, matching the catalog. + +## Verification scope + +New regression cases cover malformed timing/scalars through both loaders, preservation of every bundled clip's fields and facing frame lists, and interleaved facing membership/order and timing. Existing original-art backing, alignment and exact timing tests remain in place. No fixture digest, catalog, spec pin, content/ruleset identity or production art changes. + +## Remaining migration + +The v2 schema, full parallel frameUnits delivery, facing-specific duration selection, version registry/export/resource migration and renderer pause/interruption tests remain required. Rejecting an unsupported timing key is a prerequisite, not v2 support. Complete source cycles and visual/device acceptance remain open. + +Validation: the full core run passed 766 tests in 108 suites (348.388 seconds) after unified parsing/scalar validation. The final facing-selection change and its additional regression were then validated by 39 focused tests across ClipMetadataTests, ClipTimingTests, OriginalArtTests and ClipAlignmentTests (3.529 seconds). The full suite was not rerun after that final facing-selection change. No iOS test run occurred for this change; the renderer APIs and bundled valid v1 data are unchanged. + +Commands: `swift test --disable-sandbox --cache-path ../swift-cache --config-path ../swift-config --security-path ../swift-security`, followed by the same command with `--filter 'ClipMetadataTests|ClipTimingTests|OriginalArtTests|ClipAlignmentTests'`. diff --git a/docs/review/command-route-review/README.md b/docs/review/command-route-review/README.md new file mode 100644 index 00000000..c114870d --- /dev/null +++ b/docs/review/command-route-review/README.md @@ -0,0 +1,9 @@ +# Command-driven candidate route + +Status: passed. Xcode run Test-SSRuntime-2026.10.15_18-23-01--0700 completed 114 named tests / 116 executions with zero failures or skips. The test-only route uses the real seed-1 arena and solid-01-residential-west. Independent simulation preflight requires a blocked position, tangential slide and active Dodge. Live captures require candidate frame coverage and repeated cycles, unchanged final position versus preflight, explicit unsupported north/Dodge records, and a repeated frozen tick/frame during the test-scene pause. + +This extends evidence beyond manually supplied presentation states, but does not constitute shipping GameScene pause integration, complete per-tick live/preflight trajectory parity, visual acceptance or profiling. New south source remains unavailable in other facings. Production behavior is unchanged. + +All four command-route captures observed all 16 candidate frames. Each recorded 21 paused observations at tick 120 with one unchanged frame (distance candidate frame 15, cadence control frame 14). Each observed eleven Dodge records and more than one hundred north-facing records explicitly lacking the south candidate. Independent preflight assertions for real blockage/sliding/Dodge and final live position equality passed. + +This confirms command-driven playback and pause invariants for this route; it does not approve missing-facing art or eliminate measured support drift. Full per-tick trace parity and visual interruption capture remain outstanding, as does performance profiling. diff --git a/docs/review/command-route-review/app-summary.json b/docs/review/command-route-review/app-summary.json new file mode 100644 index 00000000..a00d4103 --- /dev/null +++ b/docs/review/command-route-review/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 116, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792114132.312, + "passedTests" : 114, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792113781.175, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "42% of duration", + "text" : "2 longest test runs with outlier durations exceeding 29.89s (three standard deviations)" + } + ], + "totalTestCount" : 114 +} diff --git a/docs/review/command-route-review/route-checks.json b/docs/review/command-route-review/route-checks.json new file mode 100644 index 00000000..0b155ba2 --- /dev/null +++ b/docs/review/command-route-review/route-checks.json @@ -0,0 +1,58 @@ +[ + { + "run": "BP008-stage-4-rep-30-axis-32767-reduced-false-post-action-records.json", + "records": 336, + "pausedObservations": 21, + "pausedTicks": [ + 120 + ], + "pausedFrames": [ + 15 + ], + "unbackedNorthObservations": 104, + "dodgeObservations": 11, + "uniqueCandidateFrames": 16 + }, + { + "run": "BP008-stage-4-rep-30-axis-32767-reduced-true-post-action-records.json", + "records": 337, + "pausedObservations": 21, + "pausedTicks": [ + 120 + ], + "pausedFrames": [ + 15 + ], + "unbackedNorthObservations": 104, + "dodgeObservations": 11, + "uniqueCandidateFrames": 16 + }, + { + "run": "BP008-stage-4-rep-31-axis-32767-reduced-false-post-action-records.json", + "records": 348, + "pausedObservations": 21, + "pausedTicks": [ + 120 + ], + "pausedFrames": [ + 14 + ], + "unbackedNorthObservations": 101, + "dodgeObservations": 11, + "uniqueCandidateFrames": 16 + }, + { + "run": "BP008-stage-4-rep-31-axis-32767-reduced-true-post-action-records.json", + "records": 352, + "pausedObservations": 21, + "pausedTicks": [ + 120 + ], + "pausedFrames": [ + 14 + ], + "unbackedNorthObservations": 104, + "dodgeObservations": 11, + "uniqueCandidateFrames": 16 + } +] diff --git a/docs/review/command-route-review/route-record.json b/docs/review/command-route-review/route-record.json new file mode 100644 index 00000000..e99f2416 --- /dev/null +++ b/docs/review/command-route-review/route-record.json @@ -0,0 +1,82 @@ +{ + "initialPosition": [ + 224, + 704 + ], + "seed": 1, + "solid": "solid-01-residential-west", + "commands": [ + { + "ticks": [ + 1, + 30 + ], + "move": "west" + }, + { + "ticks": [ + 31, + 60 + ], + "move": "southwest" + }, + { + "ticks": [ + 61, + 120 + ], + "move": "south" + }, + { + "ticks": [ + 121, + 135 + ], + "move": "neutral" + }, + { + "ticks": [ + 136, + 150 + ], + "move": "north" + }, + { + "ticks": [ + 151, + 225 + ], + "move": "south", + "dodgeAt": 211 + }, + { + "ticks": [ + 226, + 240 + ], + "move": "neutral" + }, + { + "ticks": [ + 241, + 300 + ], + "move": "north" + }, + { + "ticks": [ + 301, + 330 + ], + "move": "neutral" + } + ], + "testScenePause": { + "tick": 120, + "durationSeconds": 0.35, + "catchUp": false + }, + "runtimeTestSHA256": "ee3be584b6cd3d27059594fc88725bdbc90bd03d018f547232e784b695806b88", + "specSHA256": "20af828d1beef19da432898cc4d5370e5dc556188ccbbde79cddff3a63d73765", + "status": "AUTOMATED_ROUTE_CHECKS_PASSED_VISUAL_AND_PERFORMANCE_OPEN" +} diff --git a/docs/review/connected-boot/README.md b/docs/review/connected-boot/README.md new file mode 100644 index 00000000..a6a3efb6 --- /dev/null +++ b/docs/review/connected-boot/README.md @@ -0,0 +1,13 @@ +# Connected boot and shaft source + +Status: connected source geometry candidate, not final art or runtime admission. + +The prior shoe and shaft were independently closed intersecting components. The new source removes a three-face top-vamp patch, uses its eight-edge boundary as the start of an ankle transition, and lofts it into four shaft rings with a top cap. Shoe and shaft are therefore one component before subdivision. The cloth tube remains separate and overlaps the cuff; it is not claimed as part of the boot topology. + +The existing two-pass refinement preserves authored sole/end constraints. Forward tongue material remains separate surface detail, using the retained source patch. Its mapping is not duplicated on the rear. The new ankle transition and ring positions are authored source choices, not measurements of concealed anatomy. + +Verification: material.py exported all 32 boot poses, exit 0. check_mesh.py independently verifies each boot is one connected component with two incident faces per edge, opposing edge traversal, Euler characteristic 2 and authored sole-plane deviation below 1e-9. These checks do not rule out self-intersections or prove anatomical/benchmark quality. The front/back contact sheet was inspected; the disconnected-component construction is removed, while material richness, precise boot silhouette and full-character cloth/depth integration remain open. + +Authority: SS-specs d602775 controlled-character-source.md/BP-002/BP-008 already require editable hidden surfaces and pose-range review. No new gameplay/presentation policy, active art, metadata, renderer code or spec pins changed. Latest core run remains 773 tests / 109 suites; no new device/simulator evidence. + +Reproduction: Python 3 + NumPy + Pillow; run material.py and check_mesh.py. source.zip contains exact geometry, refinement and material recipes, raw retained source/registration, all sampled poses and material outputs. Next is whole-character source integration and material/seam detailing; topology alone cannot admit this boot into the benchmark build. diff --git a/docs/review/connected-boot/hashes.json b/docs/review/connected-boot/hashes.json new file mode 100644 index 00000000..69599cb5 --- /dev/null +++ b/docs/review/connected-boot/hashes.json @@ -0,0 +1,68 @@ +{ + "material.py": "94808fa89bc19f78766370cf2ef9c83424f338e0d09235cd8816ff11da4d0590", + "assembled-key.png": "076356d883e31c6f8b74977fb33743e51138e949525d07e5e9a7933f0378cc26", + "mesh-verification.json": "1f609eef9ad0acb7fe80a3557dfab308baad06cd303cfd2ce7a8caf8cabdae19", + "check_mesh.py": "eeed404837c69b36c8528ccb93a3a6497aa19f2461557766d6912c5ee6f38d31", + "samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "material-surfaces.png": "de45028c2dd4c7375178c9f07a84ff1ba646f87a88d9dc353cd92468d38eae6c", + "registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "README.md": "f3450922811a6176ebe94bc97c60c4e52a8332b852b543e2eda95919e3937822", + "material-record.json": "c42e31d81b75e30c2b4346181c7688febe031253ca8d44c2993fad2b21507944", + "source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "material-cycle.gif": "308f52d24848e14edfa54e61c4a39fae9effdfe9196a52e88a3bba13402fc75a", + "source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "source/parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "source/orientation.py": "a915caed6159c605bd389830a4a66042213b9d375ec7e178ddd061b86ea1e33c", + "source/smooth.py": "2563ff9a6e234c4bcec250e69b8e79f2261a9efaa04937f27312c440b76d0c5c", + "source/boot_geometry.py": "071a44faa88718f6237274ebf8b0d0b4071572fcd4db6588d1a67ebe7e453d35", + "source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "frames/15-both.png": "16f3ef0b3c8617ee6fc55455f1cd284b5738822c298d3552e8b83b7f3e86ecfc", + "frames/14-both.png": "0dc6ca4cc762bc322392ed998a00573bfb4c110fcc00a949426eecb26e57db4c", + "frames/08-right.png": "efb256a0af1d2222393f83ae8969e3944888e043539ee7f5cb21a203cca0b20a", + "frames/05-left.png": "37990c42e099edfde909dda67dbf2709fcd9bf7cccbf08b3683b9b5ae9eda930", + "frames/04-left.png": "d72782defd37602efd229403db8de13ca20999b04837dbb8b872b03d1d3a7530", + "frames/11-right.png": "8b21c51f962097afdd6fe97fb8fb4886095807e5f346fb4e534c762e5561594e", + "frames/05-right.png": "9a8124e7700b97d082775a965188f72a2471b5e14fcb6b5b84707ea4ae2f5ef3", + "frames/02-both.png": "9d4b6ae878653de21e87bc3d7edb5e691f965bd6e4c7ce8e8e06d603f889933a", + "frames/03-both.png": "0981e7ee7268a719f750e9e6961a1e245309f7b75aac1cc3ac222b477bc061eb", + "frames/12-left.png": "e0c82b6cb70e8dcbab80fb5a638b2ae5abe9cdf99309c4b98235057a527df60b", + "frames/13-left.png": "b8017e5d04195b4deb6c6898760b30c27571932743e3c90376758ada04c73698", + "frames/08-both.png": "21e7739c46acc47da348b9c6497f0d2fd9789b8a330c8cd0fa5c9c42422f518d", + "frames/09-both.png": "5a489a3b6114d234530e2b23f8a432711be0d1b99f60896f895a649a89ffc4e6", + "frames/03-right.png": "98fb936afefa8bed20f11d8c5750bc903de7a26a5c23f496689cdf02250e4623", + "frames/05-both.png": "9ea3dd3d1f82b2b60d6c88e23ad1b8b0134bd8d4e630a5325a71bf1c4316c304", + "frames/04-both.png": "b542437e35229a42edae14d591294a1413ee25583c78921c495e6b02b143658c", + "frames/09-right.png": "eed9a7316886ab4e9314726685041569271195176e11c00133eabe8f75bcca1c", + "frames/15-left.png": "25304416742f22c6b15110c89b57ef0c8080159f9ffb0753f9fa8fa53d1b7fed", + "frames/14-left.png": "d355b5663445ffb64fc0efdd9cae364757bfd2c568313201b3f8899d9ac109eb", + "frames/04-right.png": "163e13e97ddc280bfd4171e11bf66530d017f9951ebabcfacd7508fdb3f22d3d", + "frames/10-right.png": "a2a038a7d95b59d27485d5c29aeaa2de5cca327925243cb4c7c91901cd067bac", + "frames/08-left.png": "db434710d0170df3e05d1cfa607cf9fc4fe45c8ec615b59cd3adf337b9a7cb4e", + "frames/09-left.png": "0c1415102acf7754dbb848cf3ee26e1809b0e7d58202aff32172ec8514ba0762", + "frames/12-both.png": "18d7ee3cce0666dfb4f2edc4bd85eb9415582cbe50f633ad9e97a366c8c86eb2", + "frames/13-both.png": "e99638f84d5bdd7bbe3efb8ab8acee0bc9bd373a19aaa045e03c1cd190bd0ddd", + "frames/02-right.png": "bec0cdb6468b27ad124de16ceee9d72fd2bb16e7255bcd6ee8815bc8fb253f51", + "frames/02-left.png": "d1c4aa0895c19bd2203998f10b3d56b440652ab3c19a015fa05a1e3d4c013826", + "frames/03-left.png": "0112e391d8bed7a385de3acfc65049a7cac64b670c436e0c3f064e29384ef632", + "frames/11-left.png": "7f426c33145d618ed6eaf0b0b8cb977eeb60e2c5fafad365a45467d4c665e0a3", + "frames/10-left.png": "52c7dc711b56350dfc47d9ab7f9225eb12723a0620c3a10bb584c3071c8b4726", + "frames/01-both.png": "75b17a41ef864a92223e6bf90d14a8c83fbc6e08813d407cfcef9e1c9dcb5ae1", + "frames/13-right.png": "0df71708febd5b4391b02a713394bb9d55bfe1e7587f3e13a82f1d37ee500b8e", + "frames/00-both.png": "aad82de37e1a1fe58770bb0067eafb75413b90ff7ff07bd61ad75afc21dedc22", + "frames/07-right.png": "2126c953ca3c6aaa13dd8615706ac1b3bcdc477dde3c702e3d5dcd994416bffa", + "frames/06-left.png": "aa72ac146ff0bb22d00588a404217c69c1f9355b6a8dfacc6f21d2b53afa5e7f", + "frames/07-left.png": "4b465d826b7cb44b0c3993e568165c9a6f20c7e8729bb3d2581e8f2a3d6f2acf", + "frames/15-right.png": "a3c8a9f6059cf96bf842b4b3dc7a0908bb55ada30c3b125056796a64a25aea78", + "frames/01-right.png": "9f6730d9ea671c6a8111e58b39ab1b46d74eb6e19980165b82534812e74a4bf6", + "frames/01-left.png": "dc3130cb53ee088f42f3b5f54772344d375ccdfa7aaa111274dd5c4e75159367", + "frames/00-left.png": "c6639c01fa7ec7f8ad874fd3b4c1d345fccb2b17ee7471d66b0b818b9c8e25fd", + "frames/06-right.png": "132bb38faa2441b313796125eb0f0b83fdd8a815253e324c471c15560bfbe7ea", + "frames/11-both.png": "bd2620e555e185eb7bd5bf3637c5cd121b7b89994559220f361d73d131c07056", + "frames/12-right.png": "c9eabc2875c0165fbd5d7b4ad5708cce7155e088fafba0012aac298b5dabf48d", + "frames/10-both.png": "0fb922a970dbdfb694f1298fb9c796d11445bfe1c907b9d00ed7f58f89761054", + "frames/06-both.png": "8b1830d3cf5e43ae26da03be7652c6919f5430fba7a275d130de8454ab8eb479", + "frames/07-both.png": "8c783eac7787d25dc875aa7e205bf4303ba5cf4de9b1b200506ee7931a314b45", + "frames/00-right.png": "73b20cad43f91f6bdd6aee7da0386ca0a17a6e02b2490af62586f70e21cfdbc6", + "frames/14-right.png": "96ea4d339a1fa999f3bd28451d8ebb41116576c697b2ce591950aec54fac6e5f" +} diff --git a/docs/review/connected-boot/material-cycle.gif b/docs/review/connected-boot/material-cycle.gif new file mode 100644 index 00000000..5084a499 Binary files /dev/null and b/docs/review/connected-boot/material-cycle.gif differ diff --git a/docs/review/connected-boot/material-surfaces.png b/docs/review/connected-boot/material-surfaces.png new file mode 100644 index 00000000..5c57d6f7 Binary files /dev/null and b/docs/review/connected-boot/material-surfaces.png differ diff --git a/docs/review/connected-boot/mesh-verification.json b/docs/review/connected-boot/mesh-verification.json new file mode 100644 index 00000000..4eb1099e --- /dev/null +++ b/docs/review/connected-boot/mesh-verification.json @@ -0,0 +1,322 @@ +[ + { + "time": 0.0, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 0.0 + }, + { + "time": 0.0, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 4.22470938477017e-15 + }, + { + "time": 0.03125, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 8.147862204105334e-16 + }, + { + "time": 0.03125, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 2.160268850017886e-15 + }, + { + "time": 0.0625, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 8.166424218781871e-16 + }, + { + "time": 0.0625, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 2.1506679273174882e-15 + }, + { + "time": 0.09375, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 2.625648553237788e-15 + }, + { + "time": 0.09375, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 5.02322203303848e-15 + }, + { + "time": 0.125, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 5.023842207619487e-15 + }, + { + "time": 0.125, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 1.4265756529593576e-14 + }, + { + "time": 0.15625, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 2.6509564614378866e-15 + }, + { + "time": 0.15625, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 8.836439408752324e-15 + }, + { + "time": 0.1875, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 1.897897557224399e-15 + }, + { + "time": 0.1875, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 8.138583250630835e-15 + }, + { + "time": 0.21875, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 7.78465813153338e-15 + }, + { + "time": 0.21875, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 1.423969072043279e-14 + }, + { + "time": 0.25, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 4.22470938477017e-15 + }, + { + "time": 0.25, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 0.0 + }, + { + "time": 0.28125, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 2.160268850017886e-15 + }, + { + "time": 0.28125, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 8.147862204105334e-16 + }, + { + "time": 0.3125, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 2.1506679273174882e-15 + }, + { + "time": 0.3125, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 8.166424218781871e-16 + }, + { + "time": 0.34375, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 5.02322203303848e-15 + }, + { + "time": 0.34375, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 2.625648553237788e-15 + }, + { + "time": 0.375, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 1.4265756529593576e-14 + }, + { + "time": 0.375, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 5.023842207619487e-15 + }, + { + "time": 0.40625, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 8.836439408752324e-15 + }, + { + "time": 0.40625, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 2.6509564614378866e-15 + }, + { + "time": 0.4375, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 8.138583250630835e-15 + }, + { + "time": 0.4375, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 1.897897557224399e-15 + }, + { + "time": 0.46875, + "side": "right", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 1.423969072043279e-14 + }, + { + "time": 0.46875, + "side": "left", + "bootConnectedComponents": 1, + "bootVertices": 1202, + "bootFaces": 1200, + "opposingEdgeWinding": true, + "eulerCharacteristic": 2, + "maxSolePlaneError": 7.78465813153338e-15 + } +] diff --git a/docs/review/connected-boot/source.zip b/docs/review/connected-boot/source.zip new file mode 100644 index 00000000..a224208b Binary files /dev/null and b/docs/review/connected-boot/source.zip differ diff --git a/docs/review/constrained-building/comparison.png b/docs/review/constrained-building/comparison.png new file mode 100644 index 00000000..eccc77e7 Binary files /dev/null and b/docs/review/constrained-building/comparison.png differ diff --git a/docs/review/constrained-building/geometry-guide.png b/docs/review/constrained-building/geometry-guide.png new file mode 100644 index 00000000..cc32538e Binary files /dev/null and b/docs/review/constrained-building/geometry-guide.png differ diff --git a/docs/review/constrained-building/guide.json b/docs/review/constrained-building/guide.json new file mode 100644 index 00000000..38623ae6 --- /dev/null +++ b/docs/review/constrained-building/guide.json @@ -0,0 +1,50 @@ +{ + "status": "PROPOSED_ART_CONSTRAINT", + "pixels": [ + 1024, + 1024 + ], + "groundCorners": [ + [ + 512, + 900 + ], + [ + 900, + 706 + ], + [ + 512, + 512 + ], + [ + 124, + 706 + ] + ], + "roofCorners": [ + [ + 512, + 480 + ], + [ + 900, + 286 + ], + [ + 512, + 92 + ], + [ + 124, + 286 + ] + ], + "worldFootprint": [ + 128, + 128 + ], + "projection": "two-to-one diamond, separate upright height", + "purpose": "authored rectangle constraint, not inferred footprint of previous art", + "notGameplayHeight": 420 +} diff --git a/docs/review/constrained-building/prompt.txt b/docs/review/constrained-building/prompt.txt new file mode 100644 index 00000000..33adc960 --- /dev/null +++ b/docs/review/constrained-building/prompt.txt @@ -0,0 +1 @@ +Use case: sketch-to-render. Create a game building asset using image1 as the EXACT geometric constraint and image2 as facade/material/style reference only. Keep a 1024x1024 canvas and exact orthographic projection and wall-ground contact line of image1: left base (124,706), front corner (512,900), right base (900,706). Roof plane follows image1, vertical walls stay vertical. Replace the block surfaces with detailed weathered San Francisco Victorian civic architecture, teal painted facade on left visible face, restrained brick on right, cream trim, coherent windows, doors at ground level. Retain source2's architectural character but simplify its mass into the rectangular footprint from image1. All ground-floor walls and doors are flush with those two base edges. Upper floor bay windows may project slightly but must not extend into ground contact. No external steps, sidewalk, garden, trees, plinth, border, shadow apron or separate ground layer. No diagrams, labels or pink lines in final. This is one isolated upright building sprite on true transparent alpha, full roof and base in frame, no glow or outline halo. Keep exact ground corners: do not recenter, rescale, rotate or crop the building. Texture detail should be readable and handmade rather than noisy. Reference2 supplies palette and craftsmanship, never its footprint. diff --git a/docs/review/constrained-building/registration.json b/docs/review/constrained-building/registration.json new file mode 100644 index 00000000..49aa441a --- /dev/null +++ b/docs/review/constrained-building/registration.json @@ -0,0 +1,36 @@ +{ + "sourceSHA256": "11816cfa7000811d947a0ee120fa735560c53da903285bc709e45863e197dbf5", + "exportSHA256": "086fa7c6f30ccb47c5df92f50e83a645fc0c4169935df39f5e71cdfc1499a22c", + "pixels": [ + 1254, + 1254 + ], + "alphaCleanup": "<=32 transparent, >=240 opaque, linear between", + "sourceGroundAnchor": [ + 653, + 1152 + ], + "sourceSideContactsApproximate": [ + [ + 161, + 910 + ], + [ + 1095, + 916 + ] + ], + "drawCanvasUnits": 243.03880869767693, + "worldAnchor": "solid minimum-x minimum-y corner, projected with the same ground matrix", + "leftContourFit": { + "slope": 0.4696925297, + "maxResidualPixels": 8.4541, + "rmsPixels": 4.4503 + }, + "rightContourFit": { + "slope": -0.5439010476, + "maxResidualPixels": 1.0804, + "rmsPixels": 0.4108 + }, + "status": "candidate; measured residuals, no passing tolerance selected; no warp" +} diff --git a/docs/review/constrained-building/review.md b/docs/review/constrained-building/review.md new file mode 100644 index 00000000..337b0494 --- /dev/null +++ b/docs/review/constrained-building/review.md @@ -0,0 +1,21 @@ +# Constrained building source and renderer registration + +Runtime parent095be8b; spec c773f960ee8f53ac429828767fcd09f4da0d7cb3. CAPTURED / REVIEWED_CANDIDATE, not production admission. + +## Source + +Built-in image_gen used geometry-guide.png as a geometric constraint and the existing benchmark building as a facade/material reference. Exact prompt in prompt.txt. It returned1254x1254 RGBA, rather than the requested1024 canvas. source.png is unmodified. building-registered.png remaps alpha only (<=32transparent, >=240opaque, linear between). No warp, rescale, repaint or collider change. registration.json records hashes, dimensions, contact annotation and deviations. + +The facade retains teal paint, cream trim, brick and roof equipment. Baked sidewalk, stairs, gardens and fences are removed. Ground-floor bay detailing still deviates slightly from the requested flat plane. Lower-contour fits on sampled source columns have slopes about0.470 and-0.544 versus guide slopes+/-0.5. Maximum local fit residuals are8.45 and1.08source pixels. These are diagnostic observations, not an accepted tolerance or proof of the unseen rear boundary. + +## Renderer + +Candidate texture lives only in AppTests/BenchmarkAssets. The test uses the existing real WorldRenderer scene and projection comparison. The visible near corner at source(653,1152) is placed at the projected world minimum-x/minimum-y corner of the existing128x128 obstacle. A uniform draw scale maps the approximate934-pixel side-to-side span to128*sqrt(2)logical units. Upright art is not compressed with the ground plane. The old art and new art are both captured at zoom1 andsqrt(2). + +OBSERVED: wall-ground contact is much closer to the magenta projected footprint, and the formerly obscured newsbox is visible. The roof and upper walls intentionally extend over ground behind their contacts. The overlay's rear edges run across the visible facade because the diagnostic overlay draws hidden geometry on top; this alone is not a wall-contact failure. + +Remaining: a small source/base mismatch; hidden-rear correspondence not established by this2Dsource; apparent building/player/camera scale; continuous street/curb/rail composition; depth sorting and front/rear/corner traversal; legal projectile and camera-field contact; quiet and dense animation review. Equal-area zoom still crops the camera. No projection/framing choice is accepted. Do not replace the shipping arena assets from these stills. + +## Validation + +Test-SSRuntime-2026.10.14_11-39-11--0700.xcresult: Passed87tests, zero failures/skips;89executions with dynamic cases. iPhone17Pro simulatoriOS26.5. No physical device run. Geometry invariants and transform assertions pass, but the capture does not exercise traversal, animation or legal encounters. Raw captures and manifest are retained in capture/. Generated local Xcode resource references were updated for this test without changing signing settings; generated project files are not committed. diff --git a/docs/review/constrained-building/source.png b/docs/review/constrained-building/source.png new file mode 100644 index 00000000..713bc877 Binary files /dev/null and b/docs/review/constrained-building/source.png differ diff --git a/docs/review/constrained-building/test-summary.json b/docs/review/constrained-building/test-summary.json new file mode 100644 index 00000000..ff09d278 --- /dev/null +++ b/docs/review/constrained-building/test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 89, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792003264.372, + "passedTests" : 87, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792003151.794, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "37% of duration", + "text" : "2 longest test runs with outlier durations exceeding 5.05s (three standard deviations)" + } + ], + "totalTestCount" : 87 +} diff --git a/docs/review/contact-key-repair/README.md b/docs/review/contact-key-repair/README.md new file mode 100644 index 00000000..c715f5b0 --- /dev/null +++ b/docs/review/contact-key-repair/README.md @@ -0,0 +1,23 @@ +# South contact key — lead-leg repair + +Status: REVISED SOURCE KEY, not an admitted sprite or completed gait. + +Authority: SS-specs d602775, controlled-character-source.md BP-002/BP-008. Those requirements already cover constrained pose correction, hidden surfaces, original costume preservation and source-space versus world-contact evidence. No new gameplay or design policy was required. Runtime parent 0cc0793. + +## What changed + +Built-in image_gen edited the previous retained-body contact key using the existing authored pose guide. The exact prompt is in prompt.txt; source.png is the unmodified output. The forward anatomical right leg (image left) previously ended above the proposed contact point. The correction extends the lower chain and revises its painted folds/boot while keeping the same costume direction. It does not generate sixteen independent poses. + +assemble.py applies one uniform registration using approximate hood-tip/belt landmarks, extracts the lead-leg polygon, retains the previous opposite leg and redraws original body/coat/arm layers over it. The complete original RGBA region above row 199 is copied exactly and checked byte-for-byte. No nonuniform stretch or alpha cleanup is used. registration.json records source/target points, transform, extraction polygon and approximate visible landmarks. baseline/ contains all inputs required to reproduce the assembly without another folder or image-generation call. + +## Review + +The lead knee and toe extend lower than in the previous key and better approach the existing pose guide. Approximate registered knee is (173.99,275.72) versus guide (172.31,280.24); toe is (169.17,378.62) versus guide (162,381). These are manual visible-feature annotations, not measured hidden anatomy, solver residuals, or an acceptance tolerance. The outline and boot material still require consistency review with other keys. + +The recovery ankle/heel remain concealed. This key cannot establish their shape or contact model, and does not prove a coherent full-body gait. Upper body remains neutral; arm/torso counter-motion is not authored. Next: author the concealed recovery surfaces and validate their attachment before support/push-off/opposite-step keys. Do not expand this patch into sixteen duplicated or independently generated poses. Retain actual world-travel, four-facing, full-source, renderer and device gates. + +## Reproduction and verification + +Python 3 + Pillow: `python3 assemble.py`. It writes registered source, isolated lead leg, assembled lower body, retained-body key, comparison and verification.json. Source hashes are recorded in sha256.json. The source archive contains editable masks/parameters and original component PNGs; this is still a partial painted source, not a complete rig. + +Verification passed: deterministic assembly and exact original upper-region preservation. No runtime code, active textures, metadata, spec pins or gameplay changed in this turn. The preceding simulator/core results are not art validation and are not claimed as newly run here. Physical-device testing remains deferred. diff --git a/docs/review/contact-key-repair/comparison.png b/docs/review/contact-key-repair/comparison.png new file mode 100644 index 00000000..73574e3a Binary files /dev/null and b/docs/review/contact-key-repair/comparison.png differ diff --git a/docs/review/contact-key-repair/prompt.txt b/docs/review/contact-key-repair/prompt.txt new file mode 100644 index 00000000..e2ab7fd6 --- /dev/null +++ b/docs/review/contact-key-repair/prompt.txt @@ -0,0 +1,4 @@ +Use case: precise-object-edit. Asset type: single transparent source key for an elevated top-down game animation, not a sprite sheet. +Input 1 is the edit target: existing painted hooded urban participant in a south-facing running contact pose. Input 2 is a geometry guide; use ONLY its right-hand diagram for leg placement, not as artwork. +Make one localized correction to the forward weight-bearing anatomical RIGHT leg (on image LEFT). Preserve the original upper body, head, hood, strap, pouches, coat silhouette, hands, lighting, materials, view and apparent body size. Preserve the raised anatomical LEFT recovery leg on image RIGHT, with its boot folded backward and partly occluded. +The input target is on a 384x416 logical source canvas. Keep the hood tip at approximately (192,40) and belt at (192,195). The corrected forward leg should read with hip at (179,203), knee center around (172,280), ankle around (162,350), heel around (162,351), and toe contact at (162,381). Paint a coherent leg and boot to this placement rather than stretching the whole figure. The current lead boot ends too high, near row360, and its knee is too high. Extend the visible lower chain to the guide while preserving natural pant folds, the existing knee pad, brown laced boot width and sole shape. Keep the lifted leg distinct; exactly two legs. No extra limbs, halo, outline, shadow, diagram, labels, background or props. One character only, whole hood and extended toe inside the canvas. Retain painterly urban street-theater style, no fantasy equipment. Transparent background. diff --git a/docs/review/contact-key-repair/registration.json b/docs/review/contact-key-repair/registration.json new file mode 100644 index 00000000..cd164f12 --- /dev/null +++ b/docs/review/contact-key-repair/registration.json @@ -0,0 +1,69 @@ +{ + "status": "single contact source key; not a gait", + "sourceReferencePoints": [ + [ + 602, + 130 + ], + [ + 602, + 612 + ] + ], + "targetReferencePoints": [ + [ + 192, + 40 + ], + [ + 192, + 195 + ] + ], + "uniformScale": 0.3215767634854772, + "translation": [ + -1.5892116182572806, + -1.8049792531120374 + ], + "annotationStatus": "manual hood-tip and belt landmarks; approximate", + "leadLegPolygon": [ + [ + 153, + 199 + ], + [ + 194, + 199 + ], + [ + 195, + 245 + ], + [ + 194, + 400 + ], + [ + 136, + 400 + ], + [ + 136, + 275 + ], + [ + 147, + 245 + ] + ], + "approximateSourceLandmarks": { + "knee": [ + 546, + 863 + ], + "toe": [ + 531, + 1183 + ] + } +} diff --git a/docs/review/contact-key-repair/sha256.json b/docs/review/contact-key-repair/sha256.json new file mode 100644 index 00000000..7a9a7312 --- /dev/null +++ b/docs/review/contact-key-repair/sha256.json @@ -0,0 +1,42 @@ +{ + "README.md": "5e00efdaf17024f6c2c3dfd9ff6e9c93fd2ad09f879d412d3ba68f3070f09967", + "assemble.py": "5a57c8267f49ba2889870aec365f820208b4d165004e21cd90e8e1501de3b61a", + "baseline/body-rig.json": "c1d53f25495c4e17bd3f1f4df1b0e0e87bd047872420625642a88b8cdc26530b", + "baseline/body-source/hood.png": "061546675424a684d3470974a611d886bdde8192b41d09c5eaf6604cd4bfd183", + "baseline/body-source/left_boot.png": "162f9554e7b38a3d33dd58683c4021a4da91a79ff0aaf1c4c2639b1de6b0f232", + "baseline/body-source/left_boot_hidden.png": "703a1b66afb35559cafd60231df1ba6439550fd4ef0da7e33e491b10004d56da", + "baseline/body-source/left_coat_tail.png": "932a93161bd638df053f33b58d82a57e722eaa60cbadc95a71274f8a42d948f4", + "baseline/body-source/left_elbow_hidden.png": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac", + "baseline/body-source/left_forearm_hand.png": "168ac896495617d0d076c40c0d297affd8bbf6e2c645b18b28d3362d37bd51a4", + "baseline/body-source/left_hip_hidden.png": "78648454e0f8abba6b1c4deb7880ed589a1baf35732e015733c851632812b49a", + "baseline/body-source/left_knee_hidden.png": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29", + "baseline/body-source/left_shin_boot.png": "58eb39c047ebb4f20aaae08ec63a6052624d54f5ea82bb2b7ca60f4847843593", + "baseline/body-source/left_shoulder_hidden.png": "635f66fb1d4198ea9b3d8ac719e1df8aacedd1cdc2b9e44c4c3c219b653fc1e5", + "baseline/body-source/left_thigh.png": "d56129dd205b54dcf6a8a55a65f2eba79bd6ed062fb03db85cea4a8a2aefc4bb", + "baseline/body-source/left_upper_arm.png": "47fd20562122a6358a1b0528fc12818a53c4868499d684cf6e7fdfe7b6680d24", + "baseline/body-source/right_boot.png": "60ecc1a390005e0ce07a622fac7e88da8d074b603e363549fd33eb35656e3559", + "baseline/body-source/right_boot_hidden.png": "e5f9d6d93d2baac11c0d3b72ecfb32ce36e921b084317a05687c25a4a3a63a52", + "baseline/body-source/right_coat_tail.png": "585f21888a103ec52d494d1de1c992cba654936215f097a7ae7ddc95e870339b", + "baseline/body-source/right_elbow_hidden.png": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4", + "baseline/body-source/right_forearm_hand.png": "64eeb0b1ce4c40176b84b4c9153e42f2bc2d341b4aa480fc879f9e1ebb6cffbe", + "baseline/body-source/right_hip_hidden.png": "5d541656fd4817ba5536f4fab469fecb42cde3ae2487a8e18ec6262da0afade1", + "baseline/body-source/right_knee_hidden.png": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288", + "baseline/body-source/right_shin_boot.png": "4105dea24e6add878d02a7b4afa77de277c48780ac7ea37c058d1802c49243c5", + "baseline/body-source/right_shoulder_hidden.png": "bc570fe28204d21d1924c8f416a5a2b5f058db9d3ac14ae452d59a27c170da7a", + "baseline/body-source/right_thigh.png": "92bb25e717a8704dd6147e3d42d61a039a16e0a3fd8953b6b4838b8171599085", + "baseline/body-source/right_upper_arm.png": "c033da2620b7cf8fab8d06c34a344005bfed86f8967004a5be0a33306c0c8690", + "baseline/body-source/torso_coat_equipment.png": "6fc702c5b5c4f1ad123d3862da795d539190dad9d609d49923f2bf3c9d952baf", + "baseline/contact-guide-points.json": "4eceb6c87b1ea4e5427f28b90cabdb36b774be4705031c4c44667cc1341b392b", + "baseline/contact-legs.png": "daa08cfde93643e9a6772525acb2e919ecd36fd76052624ba52177fc4150731c", + "baseline/retained-body-contact.png": "eddab3d2f084de1375c0c31b9dea7e91b3d393f06b615dfd8ac471b19605cff7", + "baseline/retained-neutral.png": "c3710d37281b43c1a1949472ae39ece353c8981be72acd42b94c432c4dc037fd", + "comparison.png": "c6507180031d8fc1b4bebd8cd11a2a4740f1ea256e8742f11962152ee86b355b", + "contact-legs.png": "bde2867d7aae24065a7fdc63b088ff020d65350d2745891ec495318447289272", + "lead-leg.png": "6010dd2f19ada4b4d5e36e244a93b2c9a682da3ef1bef938072988b33d09f912", + "prompt.txt": "7eb5743f964d2eb4ce19992e6de93adf21648282b0e2b7d4a544ca7d4cbb819b", + "registered.png": "c13fe734cb5d54b5b02a8ac7e0f3a58c777cd77e00268b7117268d5f1a3fc3c5", + "registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "verification.json": "1d792be4d42cc03c471f4a6d214684e16e9e1d44b35eea68456e65163286397a" +} diff --git a/docs/review/contact-key-repair/source.zip b/docs/review/contact-key-repair/source.zip new file mode 100644 index 00000000..8b5987aa Binary files /dev/null and b/docs/review/contact-key-repair/source.zip differ diff --git a/docs/review/contact-key-repair/verification.json b/docs/review/contact-key-repair/verification.json new file mode 100644 index 00000000..2d635127 --- /dev/null +++ b/docs/review/contact-key-repair/verification.json @@ -0,0 +1,35 @@ +{ + "upperRegionExactRGBA": true, + "measurementStatus": "manual visible-landmark estimates; not hidden anatomy or a pass threshold", + "landmarks": { + "knee": { + "registeredApproximation": [ + 173.99170124481327, + 275.7157676348548 + ], + "authoredGuide": [ + 172.30812571641474, + 280.2364047939651 + ], + "delta": [ + 1.683575528398535, + -4.520637159110322 + ] + }, + "toe": { + "registeredApproximation": [ + 169.16804979253112, + 378.6203319502075 + ], + "authoredGuide": [ + 162.0, + 381.0 + ], + "delta": [ + 7.1680497925311215, + -2.3796680497924854 + ] + } + }, + "sourceSHA256": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651" +} diff --git a/docs/review/controlled-source-pilot/remote-build.py b/docs/review/controlled-source-pilot/remote-build.py new file mode 100644 index 00000000..e9e754b2 --- /dev/null +++ b/docs/review/controlled-source-pilot/remote-build.py @@ -0,0 +1,69 @@ +"""BP-002 source scaffold, NOT character art. Run with Blender --background --python.""" +import bpy,json,hashlib +from mathutils import Vector +bpy.ops.object.select_all(action='SELECT');bpy.ops.object.delete(use_global=False) +arm=bpy.data.armatures.new('SS_Hooded_Source_Scaffold');obj=bpy.data.objects.new('SourceRig',arm) +bpy.context.collection.objects.link(obj);bpy.context.view_layer.objects.active=obj;obj.select_set(True) +bpy.ops.object.mode_set(mode='EDIT') +def bone(name,head,tail,parent=None): + b=arm.edit_bones.new(name);b.head=head;b.tail=tail + if parent:b.parent=arm.edit_bones[parent] + return b +bone('pelvis',(0,0,1),(0,0,1.15));bone('torso',(0,0,1.15),(0,0,1.55),'pelvis');bone('head',(0,0,1.55),(0,0,1.8),'torso') +for side,x in [('L',.14),('R',-.14)]: + bone('thigh.'+side,(x,0,1),(x,-.1,.57),'pelvis') + bone('shin.'+side,(x,-.1,.57),(x,0,.12),'thigh.'+side) + bone('footTarget.'+side,(x,0,.12),(x,-.2,.12)) + bone('foot.'+side,(x,0,.12),(x,-.2,.12),'shin.'+side) + bone('upperArm.'+side,(x*1.7,0,1.48),(x*2.3,-.02,1.18),'torso') + bone('forearm.'+side,(x*2.3,-.02,1.18),(x*2.6,-.1,.96),'upperArm.'+side) +bpy.ops.object.mode_set(mode='POSE') +for side in ['L','R']: + shin=obj.pose.bones['shin.'+side];ik=shin.constraints.new('IK');ik.name='FixedFootNoStretch';ik.target=obj;ik.subtarget='footTarget.'+side;ik.chain_count=2;ik.use_stretch=False + for key in ['thigh.','shin.']:obj.pose.bones[key+side].ik_stretch=0 + foot=obj.pose.bones['foot.'+side];copy=foot.constraints.new('COPY_ROTATION');copy.target=obj;copy.subtarget='footTarget.'+side;copy.target_space='WORLD';copy.owner_space='WORLD' +# Translation in the pelvis bone's local axes is deliberately modest and reachable. +pelvis=obj.pose.bones['pelvis'];torso=obj.pose.bones['torso'];torso.rotation_mode='XYZ' +for frame,compression,lean in [(1,0,0),(4,-.055,.07),(7,0,0)]: + pelvis.location=(0,compression,0);pelvis.keyframe_insert('location',frame=frame) + torso.rotation_euler=(lean,0,0);torso.keyframe_insert('rotation_euler',frame=frame) +bpy.ops.object.mode_set(mode='OBJECT') +scene=bpy.context.scene;scene.frame_start=1;scene.frame_end=7;scene.render.fps=60 +obj.show_in_front=True;arm.display_type='STICK' +# Technical camera only: fixed preview convention, not a selected production viewpoint. +bpy.ops.object.camera_add(location=(3,-4,4));camera=bpy.context.object +camera.rotation_euler=(Vector((0,0,.9))-camera.location).to_track_quat('-Z','Y').to_euler();camera.data.type='ORTHO';camera.data.ortho_scale=2.4;scene.camera=camera +rows=[] +for frame in range(1,8): + scene.frame_set(frame);bpy.context.view_layer.update();evaluated=obj.evaluated_get(bpy.context.evaluated_depsgraph_get()) + values={} + for side in ['L','R']: + thigh=evaluated.pose.bones['thigh.'+side];shin=evaluated.pose.bones['shin.'+side];target=evaluated.pose.bones['footTarget.'+side] + values[side]={'thighLength':float((thigh.tail-thigh.head).length),'shinLength':float((shin.tail-shin.head).length),'hip':list(thigh.head),'knee':list(shin.head),'ankle':list(shin.tail),'target':list(target.head),'targetResidual':float((shin.tail-target.head).length)} + rows.append({'frame':frame,'legs':values}) +scene.frame_set(1) + +# Visible technical bone proxies: explicitly not body/costume geometry. +for name in [b.name for b in arm.bones if not b.name.startswith('footTarget')]: + bpy.ops.mesh.primitive_uv_sphere_add(segments=12,ring_count=6,radius=1) + proxy=bpy.context.object + proxy.name='DEBUG_bone_'+name + for frame in range(1,8): + scene.frame_set(frame);bpy.context.view_layer.update() + b=obj.evaluated_get(bpy.context.evaluated_depsgraph_get()).pose.bones[name] + a=b.head.copy();z=b.tail.copy();direction=z-a + proxy.location=(a+z)/2 + proxy.rotation_mode='QUATERNION';proxy.rotation_quaternion=direction.to_track_quat('Z','Y') + proxy.scale=(.025,.025,direction.length/2) + proxy.keyframe_insert('location',frame=frame);proxy.keyframe_insert('rotation_quaternion',frame=frame);proxy.keyframe_insert('scale',frame=frame) +scene.frame_set(1) +camera.name='CAM_technical' +for name,kind,location,energy in [('LGT_key','SUN',(2,-3,4),2),('LGT_fill','POINT',(-2,-2,2),80)]: + data=bpy.data.lights.new(name,kind);data.energy=energy + light=bpy.data.objects.new(name,data);bpy.context.collection.objects.link(light);light.location=location + light.rotation_euler=(Vector((0,0,1))-light.location).to_track_quat('-Z','Y').to_euler() +scene.world=bpy.data.worlds.new('World') if scene.world is None else scene.world +scene.world.color=(.08,.08,.08) +scene.render.engine='BLENDER_EEVEE';scene.render.resolution_x=512;scene.render.resolution_y=512;scene.render.resolution_percentage=100 +result={'status':'technical rig only, no costume or accepted art','samples':rows,'maxTargetResidual':max(v['targetResidual'] for r in rows for v in r['legs'].values()),'bones':len(arm.bones),'cameraType':camera.data.type} + diff --git a/docs/review/controlled-source-pilot/remote-measurements.json b/docs/review/controlled-source-pilot/remote-measurements.json new file mode 100644 index 00000000..70729e75 --- /dev/null +++ b/docs/review/controlled-source-pilot/remote-measurements.json @@ -0,0 +1,393 @@ +{ + "status": "technical rig only, no costume or accepted art", + "samples": [ + { + "frame": 1, + "legs": { + "L": { + "thighLength": 0.44147494718320285, + "shinLength": 0.4609777283490129, + "hip": [ + 0.14000000059604645, + 0, + 1 + ], + "knee": [ + 0.14000000059604645, + -0.10000161081552505, + 0.5700002312660217 + ], + "ankle": [ + 0.14000000059604645, + 7.897615432739258e-7, + 0.12000024318695068 + ], + "target": [ + 0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 8.271486800601526e-7 + }, + "R": { + "thighLength": 0.44147494718320285, + "shinLength": 0.4609777283490129, + "hip": [ + -0.14000000059604645, + 0, + 1 + ], + "knee": [ + -0.14000000059604645, + -0.10000161081552505, + 0.5700002312660217 + ], + "ankle": [ + -0.14000000059604645, + 7.897615432739258e-7, + 0.12000024318695068 + ], + "target": [ + -0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 8.271486800601526e-7 + } + } + }, + { + "frame": 2, + "legs": { + "L": { + "thighLength": 0.44147512227752894, + "shinLength": 0.46097831222115476, + "hip": [ + 0.14000000059604645, + 0, + 0.9857407212257385 + ], + "knee": [ + 0.14000000059604645, + -0.12735962867736816, + 0.5630353689193726 + ], + "ankle": [ + 0.14000000059604645, + 2.5331974029541016e-7, + 0.11999985575675964 + ], + "target": [ + 0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 2.9019031068906855e-7 + }, + "R": { + "thighLength": 0.44147512227752894, + "shinLength": 0.46097831222115476, + "hip": [ + -0.14000000059604645, + 0, + 0.9857407212257385 + ], + "knee": [ + -0.14000000059604645, + -0.12735962867736816, + 0.5630353689193726 + ], + "ankle": [ + -0.14000000059604645, + 2.5331974029541016e-7, + 0.11999985575675964 + ], + "target": [ + -0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 2.9019031068906855e-7 + } + } + }, + { + "frame": 3, + "legs": { + "L": { + "thighLength": 0.4414753332344561, + "shinLength": 0.46097892437696614, + "hip": [ + 0.14000000059604645, + 0, + 0.9592592716217041 + ], + "knee": [ + 0.14000000059604645, + -0.16583700478076935, + 0.5501155853271484 + ], + "ankle": [ + 0.14000000059604645, + -5.960464477539062e-7, + 0.11999949812889099 + ], + "target": [ + 0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 7.774708520305867e-7 + }, + "R": { + "thighLength": 0.4414753332344561, + "shinLength": 0.46097892437696614, + "hip": [ + -0.14000000059604645, + 0, + 0.9592592716217041 + ], + "knee": [ + -0.14000000059604645, + -0.16583700478076935, + 0.5501155853271484 + ], + "ankle": [ + -0.14000000059604645, + -5.960464477539062e-7, + 0.11999949812889099 + ], + "target": [ + -0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 7.774708520305867e-7 + } + } + }, + { + "frame": 4, + "legs": { + "L": { + "thighLength": 0.4414754534798595, + "shinLength": 0.4609790637786709, + "hip": [ + 0.14000000059604645, + 0, + 0.9449999928474426 + ], + "knee": [ + 0.14000000059604645, + -0.182841494679451, + 0.543167233467102 + ], + "ankle": [ + 0.14000000059604645, + -0.0000010132789611816406, + 0.11999934911727905 + ], + "target": [ + 0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 0.0000012028707980671637 + }, + "R": { + "thighLength": 0.4414754534798595, + "shinLength": 0.4609790637786709, + "hip": [ + -0.14000000059604645, + 0, + 0.9449999928474426 + ], + "knee": [ + -0.14000000059604645, + -0.182841494679451, + 0.543167233467102 + ], + "ankle": [ + -0.14000000059604645, + -0.0000010132789611816406, + 0.11999934911727905 + ], + "target": [ + -0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 0.0000012028707980671637 + } + } + }, + { + "frame": 5, + "legs": { + "L": { + "thighLength": 0.4414753332344561, + "shinLength": 0.46097892437696614, + "hip": [ + 0.14000000059604645, + 0, + 0.9592592716217041 + ], + "knee": [ + 0.14000000059604645, + -0.16583700478076935, + 0.5501155853271484 + ], + "ankle": [ + 0.14000000059604645, + -5.960464477539062e-7, + 0.11999949812889099 + ], + "target": [ + 0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 7.774708520305867e-7 + }, + "R": { + "thighLength": 0.4414753332344561, + "shinLength": 0.46097892437696614, + "hip": [ + -0.14000000059604645, + 0, + 0.9592592716217041 + ], + "knee": [ + -0.14000000059604645, + -0.16583700478076935, + 0.5501155853271484 + ], + "ankle": [ + -0.14000000059604645, + -5.960464477539062e-7, + 0.11999949812889099 + ], + "target": [ + -0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 7.774708520305867e-7 + } + } + }, + { + "frame": 6, + "legs": { + "L": { + "thighLength": 0.44147512227752894, + "shinLength": 0.46097831222115476, + "hip": [ + 0.14000000059604645, + 0, + 0.9857407212257385 + ], + "knee": [ + 0.14000000059604645, + -0.12735962867736816, + 0.5630353689193726 + ], + "ankle": [ + 0.14000000059604645, + 2.5331974029541016e-7, + 0.11999985575675964 + ], + "target": [ + 0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 2.9019031068906855e-7 + }, + "R": { + "thighLength": 0.44147512227752894, + "shinLength": 0.46097831222115476, + "hip": [ + -0.14000000059604645, + 0, + 0.9857407212257385 + ], + "knee": [ + -0.14000000059604645, + -0.12735962867736816, + 0.5630353689193726 + ], + "ankle": [ + -0.14000000059604645, + 2.5331974029541016e-7, + 0.11999985575675964 + ], + "target": [ + -0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 2.9019031068906855e-7 + } + } + }, + { + "frame": 7, + "legs": { + "L": { + "thighLength": 0.44147494718320285, + "shinLength": 0.4609777283490129, + "hip": [ + 0.14000000059604645, + 0, + 1 + ], + "knee": [ + 0.14000000059604645, + -0.10000161081552505, + 0.5700002312660217 + ], + "ankle": [ + 0.14000000059604645, + 7.897615432739258e-7, + 0.12000024318695068 + ], + "target": [ + 0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 8.271486800601526e-7 + }, + "R": { + "thighLength": 0.44147494718320285, + "shinLength": 0.4609777283490129, + "hip": [ + -0.14000000059604645, + 0, + 1 + ], + "knee": [ + -0.14000000059604645, + -0.10000161081552505, + 0.5700002312660217 + ], + "ankle": [ + -0.14000000059604645, + 7.897615432739258e-7, + 0.12000024318695068 + ], + "target": [ + -0.14000000059604645, + 0, + 0.11999999731779099 + ], + "targetResidual": 8.271486800601526e-7 + } + } + } + ], + "maxTargetResidual": 0.0000012028707980671637, + "bones": 15, + "cameraType": "ORTHO" +} diff --git a/docs/review/controlled-source-pilot/review.md b/docs/review/controlled-source-pilot/review.md new file mode 100644 index 00000000..0e5f08fc --- /dev/null +++ b/docs/review/controlled-source-pilot/review.md @@ -0,0 +1,19 @@ +# BP-002 controlled-source pilot + +Specs deepened first at 679328f459b58f5027c32eb78bbc4a08f1c2a15d: controlled-character-source.md, benchmark-production, plan, tasks and acceptance. Runtime's four pin sources now adopt that commit. No production artwork, active clip version, gameplay identity or sprite renderer changed. + +Research: Blender IK exposes chain targets and stretch; Spine documents weighted meshes, IK and PNG-sequence export. The spec distinguishes documented mechanisms from the proposed 3D source pilot. Official sources and retrieval limitations are in controlled-character-source.md. This is source-authoring research; no new runtime engine or license purchase. + +OBSERVED local execution limitation: Blender 5.2.0 LTS printed its version, but background startup exited 139 before the Python script, with a crash in Metal GPU detection. The native application opened but its controls did not respond to the attempted automation. build.py is the local recipe, not proof of local execution; build.log records that failure. + +OBSERVED hosted execution: the Higgsfield 3D editor executed remote-build.py and committed revision 1 in project e428d4b6-3697-4c74-ae65-78764240abde. Editable source is stored by the service; scene-evidence.json records revision, artifact identifiers, sizes and etags, not local SHA-256 hashes. No AI image/video generation or catalog import was used in this step. + +[Editable source project](https://higgsfield.ai/3d-jutsu/e428d4b6-3697-4c74-ae65-78764240abde) + +The pilot has 15 named bones, independent foot targets, two-bone leg IK with stretch disabled, a restrained pelvis compression/torso lean and a fixed orthographic technical camera. Seven evaluated samples give a maximum ankle-target residual of 1.2028708e-06 source units. Thigh length range is 0.441474947–0.441475453; shin range is 0.460977728–0.460979064. Values are numerical solver evidence, not a visual slipping tolerance. Source units and technical camera are not approved game-world mapping. + +Visual inspection: 512×512 renders at frames 1, 4 and 7 were retrieved through the service and viewed in the browser. Full rig stays in frame; peak pose visibly bends knees while endpoints stay in place; final returns to rest. The displayed forms are deliberately debug bone proxies, not a body, costume, hands or character art. Only rest/peak/final renders were inspected; intermediate samples have numeric evidence only. GLB proxies carry sampled keys for inspection; they are not a skinned character and not a production export. + +OPEN: anatomical and costume mesh, deformation controls, pole/joint direction robustness beyond this small response, four distinct elevated facings, benchmark materials/lighting, source-to-game registration, 16-frame world-travel cycle, hurt-to-live-state transition, runtime scene and device acceptance. The technical pilot must not replace any of those requirements or lower the art target. A fixed foot in this stationary source does not establish contact during actor travel. + +Validation: specs validator passed (23 JSON, 7 schemas, 33 contracts, 55 indexed files); timing migration checker passed (59 clips, 218 facings, 14 malformed cases, 5 vectors); unchanged parity script passed against the local pinned Git object tree; 7 focused Swift contract-version/timing tests passed. No new full-core or simulator run was needed for this spec-pin/source-only change. Physical device was not used. diff --git a/docs/review/controlled-source-pilot/scene-evidence.json b/docs/review/controlled-source-pilot/scene-evidence.json new file mode 100644 index 00000000..4ae681ed --- /dev/null +++ b/docs/review/controlled-source-pilot/scene-evidence.json @@ -0,0 +1,46 @@ +{ + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "revision": 1, + "build": { + "projectId": "e428d4b6-3697-4c74-ae65-78764240abde", + "revision": 1, + "blend": { + "size": 831864, + "etag": "471773f0ddacb09de6be67510bd7d3c2" + }, + "glb": { + "size": 149492, + "etag": "a6bc9297b090010a2d48afcac94edd75" + }, + "generated": [] + }, + "render": [ + { + "size": 139511, + "etag": "532886dd8cd1f0539fcface883eef35f", + "id": "77f980a11d6a04a10ee29d70c3c4a863", + "name": "rig-frame-1.png", + "mediaType": "image/png", + "width": 512, + "height": 512 + }, + { + "size": 140296, + "etag": "de1676df840994cd57b5e3bae69fcf64", + "id": "7b0682ad22f0817c49d121621fdb774c", + "name": "rig-frame-4.png", + "mediaType": "image/png", + "width": 512, + "height": 512 + }, + { + "size": 139511, + "etag": "d982982ea7c2108182522f5e9f05164c", + "id": "228bf773b26c55bcc66c4ada57fc3329", + "name": "rig-frame-7.png", + "mediaType": "image/png", + "width": 512, + "height": 512 + } + ] +} diff --git a/docs/review/device-qa/README.md b/docs/review/device-qa/README.md new file mode 100644 index 00000000..df77d5d2 --- /dev/null +++ b/docs/review/device-qa/README.md @@ -0,0 +1,26 @@ +# Device presentation QA — issue #117 + +Intent accepted 2026-10-13. Baseline main: `6e42cb47e8be10cffcc8398cbf9e2fff5fbe7dac`. +Spec: `2377b99c6b6d1654e2cb976ee1b7e07b75c77e1a`. No gameplay, content, arena, or replay identity change. + +## Checks required + +| Area | Automated coverage | Physical check | +|---|---|---| +| Camera follow | CameraFollowTests: turn continuity, dead zone, vertical facing, bounds/reset | Turn in place, reverse while moving, arena edge | +| Surveillance fields | DevicePresentationRegressionTests: emitter position, clockwise convention, narrow occluders, cover changes | Approach cover; compare field boundary and Exposure | +| Animation lifecycle | Removed camera sprite reappears with action attached | Movement/idle/hurt/defeat and camera damage states | +| Performance | Frame timeline streak classification; core suite | Record frame percentiles with `-SSQA`, repeat baseline opening and full run | +| Controls | Existing SceneInputIntegrationTests in Debug and Release | Movement, Dodge, pause/resume, restart | +| Visual clipping | Geometry coverage; broader visual review pending | Cameras, walls, gates, actors, HUD and safe-area edges | +| Authority | Full core/replay golden suite | No claim that visual QA substitutes for deterministic tests | + +## Evidence and status + +- Baseline user playtest: FAIL (immediate stutter/jumps and rendering defects). +- [Baseline profile](baseline.md): renderer and name lookup dominate; outline generation is not the primary observed cost. +- Candidate core checks: 740 tests across 104 suites passed (528.067 seconds). Debug/Release app CI still running. +- Candidate physical playtest: FAIL. User reports broken camera and character animation, jumbled/unrecognizable assets, collision problems, and suspected hit-detection problems. See candidate-findings.md. +- C-003 p95 <=16.67 ms remains unproven. The connected iPhone 17 Pro is not the baseline iPhone 12; report actual hardware rather than relabel it. + +No release or full-QA pass is claimed. Further animation/clipping symptoms require reproduction on the candidate; issues remain open until verified. diff --git a/docs/review/device-qa/baseline.md b/docs/review/device-qa/baseline.md new file mode 100644 index 00000000..16ae7e3f --- /dev/null +++ b/docs/review/device-qa/baseline.md @@ -0,0 +1,15 @@ +# Device QA baseline — 2026-10-13 + +Runtime main 6e42cb47e8be10cffcc8398cbf9e2fff5fbe7dac, Release, debugger disabled. +Physical target confirmed by Instruments: iPhone 17 Pro, iOS 26.3.1 (23D8133). +User: immediate heavy stutter, animation defects, object clipping, surveillance cameras glitching, whole view jumps. Opening recorded, user played until death. + +Time Profiler recorded ~53 seconds, SSRuntime process only. Saved SS-baseline-device.trace under work/. +- Total sampled CPU weight: 24.24 s. +- Main thread: 21.53 s (88.8% of sampled CPU weight). +- SpriteKit renderer on heaviest stack: 15.63 s; flushRenderOps: 10.58 s. +- Filter GameScene.update: 4.63 s, redraw 3.09 s; SKNode name-search enumeration 1.94 s. +- Filter OutlineTextures: 23 ms total, outline method 20 ms; not the dominant baseline cost. +These are sampled CPU weights, not wall-frame times or p95 FPS measurements. No frame-time acceptance claimed from this trace. + +Source defects: camera smoothing/dead-zone missing; camera display used mount position, not fieldOrigin; camera cones had no solid occlusion; active clip token survived node removal; frame collector detected streaks after sorting the sample timeline. diff --git a/docs/review/device-qa/candidate-findings.md b/docs/review/device-qa/candidate-findings.md new file mode 100644 index 00000000..8d313f8c --- /dev/null +++ b/docs/review/device-qa/candidate-findings.md @@ -0,0 +1,22 @@ +# Candidate device QA: failed + +Build: 1135034 (b52b7fe adds baseline documentation only). Physical iPhone 17 Pro, iPhone18,1, iOS 26.3.1. User retest on 2026-10-13. + +## Findings + +1. **P1 — delivered camera animation frames contain separated fragments.** Visual inspection of actor_camera_operationalIdle_none_02@1x.png and frame 03 shows pieces at opposite image edges. The defect is present in the PNG files, before SpriteKit renders them. The renderer also layers a separate housing under the clip. The housing uses a centered anchor while the clip uses (32,88) in a 64x96 box. Composite registration and duplicated camera geometry require visual review. Do not claim smoothing fixes this. +2. **P1 — solid art leaves invisible blocking space.** renderSolids sizes each image to the authoritative AABB, but canvas dimensions are not the perceived solid base. env_solid_01_residential_west is 128x512 with nontransparent bounds (4,181)-(124,330); much of the blocking rectangle is visually empty. env_solid_13_phoenix_west is 64x256 with nontransparent bounds (5,102)-(59,153). This violates visual-assets.md section 6 (no transparent invitation into blocked space; footprint must not exceed perceived solid base). Preserve collision authority; repair presentation rather than deriving collision from alpha. +3. **P1 — asset readability and animation quality fail user acceptance.** User reports unrecognizable characters and broken animation. Static review confirms inconsistent fragments in several environment assets; temporal animation quality needs frame-sequence review. File coverage, hashes, dimensions, and attached actions are insufficient acceptance checks. +4. **Unresolved — hit detection.** User clarified the failure: taking damage when nothing visibly hits the player. Source review identifies contact overlap, armed mines, enemy/boss direct attacks, and swept projectiles as damage paths. No specific event or authority mismatch has yet been reproduced. Next reproduction must correlate playerDamaged sourceEntityId and tick with the visible source and warning; do not assume every hit should have a projectile or change combat rules without evidence. + +## Measurement + +Comparison Time Profiler Run 2 saved in local SS-baseline-device.trace: duration 3m17s, CPU weight approximately 1.28 min; main thread 1.11 min (86.9%); heaviest renderer stack 51.61s, flushRenderOps 35.55s. Different duration and uncontrolled gameplay prohibit a direct before/after performance claim. Rendering remains dominant. + +Candidate console samples during gameplay reached p99 58.28ms and worst 591.83ms (startup included). A near-16.67ms p95 does not establish absence of visible hitches. Profile overhead and startup require separate reporting. + +740 core tests in 104 suites passed. Physical QA remains failed regardless of automated results. PR #118 remains draft and issue #117 remains open. + +## Required next work + +Review complete frame sequences at gameplay scale; inspect asset delivery/source sheets and registration; establish readable solid footprints without changing authority; reproduce a reported hit event with visible authoritative geometry and event timing. Asset replacement is a separate content-quality decision from the camera-follow implementation. Do not mark existing art accepted solely because the ingestion script accepts PNG dimensions. diff --git a/docs/review/displayed-playback/core-tests.log b/docs/review/displayed-playback/core-tests.log new file mode 100644 index 00000000..c1315ade --- /dev/null +++ b/docs/review/displayed-playback/core-tests.log @@ -0,0 +1,1866 @@ +Building for debugging... +[0/4] Write sources +[1/4] Copying contracts +[2/5] Copying SPEC_PIN.txt +[3/5] Write swift-version--58304C5D6DBC2206.txt +[5/7] Emitting module SurveillanceCore +[6/7] Compiling SurveillanceCore ContractVersions.swift +[7/14] Compiling SurveillanceCore AssetCatalog.swift +[8/14] Compiling SurveillanceCore RunReceipt.swift +[9/14] Compiling SurveillanceCore ArenaManifest.swift +[10/14] Compiling SurveillanceCore ProceduralVFX.swift +[11/14] Compiling SurveillanceCore ReplayEnvelope.swift +[12/14] Compiling SurveillanceCore ReleaseCandidateEvidence.swift +[13/14] Compiling SurveillanceCore Simulation.swift +[14/26] Compiling SurveillanceCoreTests ProceduralVFXTests.swift +[15/27] Compiling SurveillanceCoreTests ReplayTests.swift +[16/27] Compiling SurveillanceCoreTests ReadabilityFinishTests.swift +[17/27] Compiling SurveillanceCoreTests CameraPlacementTests.swift +[18/27] Compiling SurveillanceCoreTests DailyRunGhostTests.swift +[19/27] Compiling SurveillanceCoreTests AssetCatalogTests.swift +[20/27] Compiling SurveillanceCoreTests ClipMetadataTests.swift +[21/27] Compiling SurveillanceCoreTests ReleaseCandidateEvidenceTests.swift +[22/27] Compiling SurveillanceCoreTests AmbientMotionTests.swift +[23/27] Compiling SurveillanceCoreTests ArenaAndSimulationTests.swift +[24/27] Emitting module SurveillanceCoreTests +[25/27] Compiling SurveillanceCoreTests ContractVersionsTests.swift +[25/27] Write Objects.LinkFileList +[26/27] Linking SSRuntimePackageTests +Build complete! (20.34s) +Test Suite 'All tests' started at 2026-10-14 20:43:34.964. +Test Suite 'All tests' passed at 2026-10-14 20:43:34.967. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.003) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite CombatVisibilityTests started. +◇ Suite StealthTextureTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite DeterminismTests started. +◇ Suite RunCardTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite HUDMappingTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite ReplayTests started. +◇ Suite AwarenessTests started. +◇ Suite MedalTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite D021CeilingsTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite KernelVectorTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite EventCatalogTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite DaemonClipTests started. +◇ Suite CaptainCameraTests started. +◇ Suite CommitClipTests started. +◇ Suite PacingProbeTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite GameFeelTests started. +◇ Suite ConeOrientationTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite ApproximateCueTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite CameraFairnessTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite ClipTimingTests started. +◇ Suite ContractVectorTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite DamageOrderingTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite TamperFloorTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite ProceduralVFXTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite QuietApproachTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite VisualLanguageTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite AmbientMotionTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite RunTelemetryTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite CameraFollowTests started. +◇ Suite SilhouetteTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite CameraHUDTests started. +◇ Suite AssetCatalogTests started. +◇ Suite ClipMetadataTests started. +◇ Suite GhostSettingTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite DefectRegistryTests started. +◇ Suite HUDPresentationTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite OriginalArtTests started. +◇ Suite DailyFlavourTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite CourtClimaxTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite CombatCausalityTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite GhostRunTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite CaptainClipTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite TransitPatrolTests started. +◇ Suite CameraPlacementTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite OpeningTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite ContractVersionsTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite GateVerificationTests started. +◇ Suite CameraPresentationTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite AudioProjectorTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite SimulationClockTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite ArenaReachabilityTests started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test sha256KnownVector() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test daemonHasClips() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test exactMigrationVectors() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test originalsAreAdmitted() started. +◇ Test ghostIsOnByDefault() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test currentIdentityIsCompatible() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 9.059 seconds. +✔ Test sha256KnownVector() passed after 9.060 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 9.059 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 9.060 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 9.061 seconds. +✔ Test anUnawareKillIsATakedown() passed after 9.065 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 9.065 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 9.065 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 9.065 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 9.065 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 9.065 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 9.065 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 9.065 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 9.065 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 9.065 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 9.065 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 9.065 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 9.065 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 9.065 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 9.065 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 9.065 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 9.065 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 9.077 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 9.077 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 9.077 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 9.077 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 9.077 seconds. +✔ Test mappedElementsScaleProportionally() passed after 9.077 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 9.077 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 9.077 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 9.077 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 9.077 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 9.077 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 9.078 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 9.078 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 9.078 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 9.078 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 9.078 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 9.078 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 9.078 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 9.078 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 9.078 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 9.078 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 9.078 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 9.079 seconds. +✔ Test daemonHasClips() passed after 9.078 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 9.078 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 9.078 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 9.078 seconds. +✔ Test exactMigrationVectors() passed after 9.078 seconds. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 10.501 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 10.502 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 10.501 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 10.502 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 10.501 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 10.502 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 10.501 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 10.501 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 10.501 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 10.501 seconds. +✔ Test aFreshRunStartsQuiet() passed after 10.501 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 10.501 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 10.502 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 10.502 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 10.502 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 10.502 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 10.502 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 10.576 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 10.577 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 10.577 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 10.577 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 10.577 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 10.577 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 10.577 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 10.577 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 10.577 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 10.577 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 10.577 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 10.578 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 10.577 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 10.578 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 10.577 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 10.577 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 10.578 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 10.578 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 10.578 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 10.578 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 10.578 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 10.578 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 10.578 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 10.578 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 10.578 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 10.579 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 10.578 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 10.578 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 10.578 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 10.578 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 10.578 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 10.578 seconds. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 10.578 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 10.579 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 10.579 seconds. +✔ Test originalsAreAdmitted() passed after 10.579 seconds. +✔ Test ghostIsOnByDefault() passed after 10.579 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 10.579 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 10.579 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 10.579 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 10.579 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 10.579 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 10.579 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 10.581 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 10.579 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 10.579 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 10.579 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 10.580 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 10.579 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 10.579 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 10.579 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 10.580 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 10.580 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 10.580 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 10.580 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 10.580 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 10.580 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 10.580 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 10.580 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 10.580 seconds. +✔ Test currentIdentityIsCompatible() passed after 10.580 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 10.582 seconds. +✔ Test attackStatesAreUnchanged() passed after 10.580 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 10.580 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 10.580 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 10.580 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 10.580 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 10.568 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 10.568 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 10.568 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 10.568 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 10.566 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 9.951 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 9.951 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 9.878 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 9.868 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 8.601 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Suite ExposureFinalizationTests passed after 10.596 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 10.596 seconds. +✔ Suite ClipMetadataV2Tests passed after 10.596 seconds. +✔ Suite ClipTimingTests passed after 10.595 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Suite CameraFollowTests passed after 11.898 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 11.898 seconds. +✔ Suite DefectRegistryTests passed after 11.898 seconds. +✔ Suite DailyFlavourTests passed after 11.898 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 11.894 seconds. +✔ Suite CanonicalArenaZonesTests passed after 11.898 seconds. +✔ Suite CombatFeedbackTests passed after 11.898 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 11.896 seconds. +◇ Test successRowsWithNoStoredBest() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test nodeAndCopyAgree() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test playingIsNotTerminal() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite PlaytestEvidenceLoaderTests passed after 12.772 seconds. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 2.707 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 2.707 seconds. +✔ Test nodeAndCopyAgree() passed after 2.707 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 2.707 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 2.707 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 2.707 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 14.604 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 2.707 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 2.707 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 2.707 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 2.733 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 2.733 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 2.733 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 2.733 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 2.733 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 2.733 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 14.629 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 2.733 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 2.733 seconds. +✔ Test captainArtIsAllOrNothing() passed after 2.733 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 2.733 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 2.733 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 2.733 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 2.733 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 2.734 seconds. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 2.733 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 2.733 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 2.734 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 14.630 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 2.733 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 2.733 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 2.733 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 2.733 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 2.733 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 2.733 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 2.733 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 2.733 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 2.733 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 2.733 seconds. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 2.749 seconds. +✔ Test seedIsDeterministicForADate() passed after 2.748 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 2.748 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 2.748 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 2.748 seconds. +✔ Test playingIsNotTerminal() passed after 2.748 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 2.748 seconds. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 2.748 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 2.748 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 2.749 seconds. +✔ Test familiesMapToDistinctAssets() passed after 2.748 seconds. +✔ Test aCompleteGroupIsBacked() passed after 2.748 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 2.748 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 2.748 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 2.748 seconds. +✔ Test successRowsWithNoStoredBest() passed after 2.750 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 2.748 seconds. +✔ Test musicAssetIdsAreReachable() passed after 2.748 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 2.748 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 2.748 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 2.748 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 2.748 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 2.748 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 14.647 seconds. +✔ Test windowsMatchTheD090Table() passed after 2.748 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 2.749 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 2.748 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 2.748 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 2.748 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 2.748 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 2.748 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 2.748 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 2.748 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 2.748 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 2.748 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 2.748 seconds. +✔ Test unknownIdentityFailsClosed() passed after 2.746 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 2.748 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 2.746 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 2.746 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 2.746 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 2.787 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 2.353 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 2.353 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 2.353 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 2.915 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 2.487 seconds. +✔ Suite ObjectiveProjectionTests passed after 14.829 seconds. +✔ Suite CivicSeamIdentityTests passed after 14.829 seconds. +✔ Suite CameraMountSolidTests passed after 14.829 seconds. +✔ Suite VisualLanguageTests passed after 14.828 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 14.828 seconds. +✔ Suite SilhouetteTests passed after 14.828 seconds. +✔ Suite AssetCatalogTests passed after 14.828 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.178 seconds. +✔ Suite ContractVersionsTests passed after 14.828 seconds. +✔ Suite SimulationClockTests passed after 14.828 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Suite ReceiptArchiveTests passed after 14.855 seconds. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test identityMismatchIsRejected() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 14.853 seconds. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 2.951 seconds. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test patrolSlipSearch() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 3.562 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 3.562 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 3.562 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 3.562 seconds. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 6.517 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 3.562 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 5.223 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 3.562 seconds. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 3.562 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 3.670 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 3.671 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 3.671 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 3.671 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 3.671 seconds. +✔ Test identityMismatchIsRejected() passed after 3.671 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 3.671 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 3.671 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 3.672 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 3.671 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 3.671 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 3.671 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 3.671 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 3.671 seconds. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 3.671 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 3.671 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 3.671 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 6.625 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 3.671 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 3.671 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 3.671 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 3.671 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 3.671 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 17.245 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 3.671 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 3.671 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 3.671 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 3.671 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 3.671 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 3.671 seconds. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 3.671 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 3.671 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 3.671 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 3.671 seconds. +✔ Test groupsAreBackedIndependently() passed after 3.671 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 3.671 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 3.671 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 3.671 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 3.671 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 3.671 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 3.671 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 3.671 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 3.671 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 3.671 seconds. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 18.525 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 3.671 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 3.670 seconds. +✔ Test patrolSlipSearch() passed after 3.670 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 3.670 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 3.671 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 3.670 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 3.670 seconds. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 3.671 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 3.670 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test encounterEN013MobCNeverAppends() passed after 3.670 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 3.671 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 3.670 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 3.662 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 6.627 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 3.662 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 3.662 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 3.662 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 18.612 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 3.640 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 3.640 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 0.200 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 3.762 seconds. +✔ Suite EventCatalogTests passed after 18.619 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Suite MusicBedCoverageTests passed after 18.619 seconds. +✔ Suite TerminalShareGeometryTests passed after 18.619 seconds. +◇ Test encounterEN018MobCSpawnsAware() started. +✔ Suite HUDPresentationTests passed after 18.618 seconds. +✔ Suite CameraHousingArtTests passed after 18.619 seconds. +✔ Suite DeviceRunEvidenceTests passed after 18.619 seconds. +✔ Suite PatrolSlipSearch passed after 18.619 seconds. +✔ Suite EnvironmentContractTests passed after 18.619 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.090 seconds. +✔ Suite CameraPresentationTests passed after 18.618 seconds. +✔ Suite D021CeilingsTests passed after 18.620 seconds. +✔ Suite ArenaAndSimulationTests passed after 18.619 seconds. +✔ Suite ExpansionGateDecisionTests passed after 18.619 seconds. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +✔ Test headingsAdvanceClockwise() passed after 0.070 seconds. +◇ Test lockdownOutranksExtraction() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 3.832 seconds. +◇ Test profileT406AggregateReportIsStable() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 1.931 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 1.931 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 1.931 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 1.931 seconds. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 1.931 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 5.754 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 5.647 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 1.931 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 1.931 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 2.090 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 2.090 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 2.090 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 2.090 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 2.090 seconds. +✔ Test lockdownOutranksExtraction() passed after 2.090 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 2.090 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 2.091 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 2.091 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 2.090 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 2.090 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 2.090 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 2.090 seconds. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 2.090 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 2.090 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 2.162 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 5.923 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 2.090 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 2.090 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 2.090 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 2.090 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 2.091 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 5.923 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 2.090 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 2.090 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 2.090 seconds. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 2.090 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 2.090 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 2.090 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 2.091 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 2.091 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 2.091 seconds. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 2.091 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 2.091 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 2.092 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 2.091 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 2.090 seconds. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 2.090 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 2.090 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 2.090 seconds. +✔ Test audioCoverageIsMeasurable() passed after 2.091 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 2.096 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 2.096 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 2.096 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 2.096 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 2.096 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 2.096 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 2.096 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 2.096 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 2.204 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 2.071 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 0.450 seconds. +✔ Suite CaptainClipTests passed after 21.070 seconds. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 0.291 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite CombatAuthorityReceiptTests passed after 21.071 seconds. +✔ Suite CaptainCameraTests passed after 21.072 seconds. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +✔ Suite CameraHUDTests passed after 21.071 seconds. +✔ Suite ApproximateCueTests passed after 21.072 seconds. +✔ Suite AudioProjectorSmokeTests passed after 21.071 seconds. +✔ Suite GhostSettingTests passed after 21.071 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 2.381 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 0.283 seconds. +✔ Suite AssetIntakeChecks passed after 21.071 seconds. +✔ Suite TutorialCardDurationTests passed after 21.071 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test correlatorCommitStaysAStateClip() started. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test awarenessHintUsesTheNewView() started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 2.416 seconds. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 0.035 seconds. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test anyTouchSkips() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +DAILY-RUN-400 distinct=400 salted=0 +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 2.549 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 2.549 seconds. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 2.549 seconds. +✔ Test correlatorCommitStaysAStateClip() passed after 2.548 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 2.548 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 2.548 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 2.548 seconds. +✔ Test exposureEX010SingleStateJumpEvent() passed after 2.652 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 2.652 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 2.652 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 5.066 seconds. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 2.652 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 2.652 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 2.652 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 2.652 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 5.069 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 2.653 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 2.652 seconds. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 2.652 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 2.652 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 2.652 seconds. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 2.652 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 2.652 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 2.652 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 2.652 seconds. +✔ Suite RunTelemetryTests passed after 23.759 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 5.068 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 2.652 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 2.652 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 2.652 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 2.652 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 2.652 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 2.652 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 2.652 seconds. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 2.652 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 2.652 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 2.652 seconds. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 2.652 seconds. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 2.652 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 2.652 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 2.652 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 2.652 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 2.652 seconds. +✔ Test anyTouchSkips() passed after 2.652 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 2.652 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 2.652 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 2.652 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 2.652 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test tamperedCommandIsRejected() passed after 2.655 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 1.982 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 0.253 seconds. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 2.802 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.149 seconds. +✔ Suite TutorialPreemptionTests passed after 23.908 seconds. +✔ Suite TamperFloorTests passed after 23.908 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 0.148 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 23.907 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.148 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Suite ReplayMatrixTests passed after 23.927 seconds. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +✔ Suite ReplayTests passed after 23.929 seconds. +◇ Test informantContactHitShowsItsCommit() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test noTwoPhasesShareABed() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test tamperedDigestIsRejected() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 0.864 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 0.864 seconds. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 0.864 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 3.687 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 3.015 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 0.864 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 0.864 seconds. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 0.984 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 0.984 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 0.984 seconds. +✔ Test informantContactHitShowsItsCommit() passed after 0.985 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 0.984 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 0.984 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 0.984 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 0.984 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 0.984 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 0.984 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 0.984 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 0.984 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 3.807 seconds. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 0.984 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 0.984 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 0.984 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 0.984 seconds. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 0.984 seconds. +✔ Test noTwoPhasesShareABed() passed after 0.985 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 0.984 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 0.984 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 0.984 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 0.985 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 0.984 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 0.984 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 0.984 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 0.985 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 0.985 seconds. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 0.985 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 0.985 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 0.986 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 0.985 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 0.985 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 0.985 seconds. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 0.985 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 0.986 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 0.985 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 0.985 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 10.061 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 0.933 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Suite DeterminismTests passed after 25.029 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.115 seconds. +✔ Suite QuietApproachPresentationTests passed after 25.029 seconds. +✔ Suite DamageOrderingTests passed after 25.029 seconds. +✔ Suite CameraDestructionReceiptTests passed after 25.029 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 1.120 seconds. +✔ Suite BossPhaseMusicTests passed after 25.029 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 0.113 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 1.098 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.112 seconds. +✔ Suite ObjectiveGraphTests passed after 25.029 seconds. +✔ Suite AudioProjectorTests passed after 25.028 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test playerPC003HalfMagnitude() started. +✔ Suite HUDMappingTests passed after 25.031 seconds. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 3.959 seconds. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test labelFormat() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +✔ Suite DaemonClipTests passed after 25.034 seconds. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 1.538 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 1.538 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 1.538 seconds. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 1.538 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 1.538 seconds. +✔ Test playerPC003HalfMagnitude() passed after 1.591 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 1.591 seconds. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 1.591 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 1.591 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 1.591 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 1.591 seconds. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 1.590 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 1.590 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 1.590 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 1.590 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 1.590 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 1.590 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 1.590 seconds. +✔ Test labelFormat() passed after 1.590 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 1.590 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 1.590 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 1.590 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 1.590 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 1.590 seconds. +✔ Test runtimeMountSolidsHaveNoArt() passed after 1.590 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 1.590 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 1.590 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 1.590 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 1.590 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 1.593 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 1.590 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 1.590 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 1.590 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 1.590 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 1.590 seconds. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +✔ Test tamperedDigestIsRejected() passed after 2.640 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 1.590 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 1.590 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 11.766 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Suite EnemyBehaviourTests passed after 26.679 seconds. +✔ Suite ArenaReachabilityTests passed after 26.678 seconds. +✔ Suite DailyRunSeedTests passed after 26.679 seconds. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.056 seconds. +✔ Suite ExtractionCountdownTests passed after 26.678 seconds. +✔ Suite ProceduralVFXTests passed after 26.679 seconds. +✔ Suite RunOutcomeTerminalTests passed after 26.679 seconds. +✔ Suite TerminalPrecedenceTests passed after 26.679 seconds. +✔ Suite RuntimeBundleTests passed after 26.679 seconds. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.056 seconds. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +◇ Test peakDetectionIsTheHighestReached() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.061 seconds. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test groundTilesAreUniform() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +✔ Suite CombatCausalityTests passed after 26.741 seconds. +◇ Test tamperedTicksAreRejected() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 0.961 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 0.961 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 0.961 seconds. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 0.961 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 1.498 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 1.498 seconds. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 1.498 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 1.614 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 1.498 seconds. +✔ Suite ConeOrientationTests passed after 28.239 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 1.505 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 1.505 seconds. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 1.505 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 1.505 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 1.505 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 1.505 seconds. +✔ Test quietRestoreFailsClosed() passed after 1.504 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 1.505 seconds. +✔ Test theLatchIsInTheDigest() passed after 1.505 seconds. +✔ Test coverageCountsOnlyDeclaredIds() passed after 1.504 seconds. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 1.585 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 1.585 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 1.585 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 1.585 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 1.585 seconds. +✔ Test groundTilesAreUniform() passed after 1.585 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 1.585 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 1.585 seconds. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 1.585 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 3.293 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 1.553 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 9.516 seconds. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.168 seconds. +✔ Suite EnvironmentLibraryTests passed after 28.414 seconds. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 3.383 seconds. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test resetClearsCommits() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test swiftIsUnderFiveThirty() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test bossSpawnsWithTenDpsContact() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test musicIsNotAnEffectCue() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 0.894 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 0.894 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 0.894 seconds. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 0.894 seconds. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test t3CompletesOnFirstImpact() passed after 0.997 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 0.997 seconds. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 0.997 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 0.997 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 2.646 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 1.003 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 1.003 seconds. +✔ Test resetClearsCommits() passed after 1.003 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 1.003 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 1.003 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 1.003 seconds. +✔ Test patrolBlockFailsClosed() passed after 1.003 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Test rs024GhostIsExactlyTheLatch() passed after 1.004 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 1.108 seconds. +✔ Test coneSightNeedsAClearLine() passed after 1.108 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 1.108 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 10.834 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 1.108 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 1.108 seconds. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 1.108 seconds. +✔ Test tamperedTicksAreRejected() passed after 2.783 seconds. +✔ Test musicIsNotAnEffectCue() passed after 1.108 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 1.108 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 1.072 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test theEliteIsFullyBacked() passed after 1.122 seconds. +✔ Suite StealthTextureTests passed after 29.589 seconds. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.168 seconds. +✔ Suite CameraPlacementTests passed after 29.587 seconds. +✔ Suite AudioDeliveryTests passed after 29.588 seconds. +✔ Test damageToANonEnemyIsIgnored() passed after 0.063 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test sightRangeIsInclusive() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +◇ Test rs021AFailedRunEarnsNothing() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test playerBlockFailsClosed() started. +✔ Suite CompleteRunVectorTests passed after 29.599 seconds. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 1.183 seconds. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +✔ Test sightRangeIsInclusive() passed after 1.118 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 1.118 seconds. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 1.118 seconds. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 1.118 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 1.118 seconds. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 1.118 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 2.302 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 1.118 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 1.118 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 1.118 seconds. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 1.118 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 1.118 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 1.118 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 1.118 seconds. +✔ Test playerBlockFailsClosed() passed after 1.118 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 30.718 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 1.118 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 1.528 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 1.528 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 1.528 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 1.528 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 1.528 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 1.528 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 1.528 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 1.498 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 1.198 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 1.081 seconds. +✔ Suite RunCardTests passed after 31.130 seconds. +✔ Suite SpawnFairnessTests passed after 31.130 seconds. +✔ Suite CommitClipTests passed after 31.130 seconds. +✔ Suite QuietApproachTests passed after 31.129 seconds. +✔ Suite AmbientMotionTests passed after 31.129 seconds. +✔ Suite ClipMetadataTests passed after 31.129 seconds. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.001 seconds. +✔ Suite OpeningTests passed after 31.129 seconds. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test recordRoundTripsThroughJSON() started. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +✔ Test encounterEN020SolidBlocksSight() passed after 2.131 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 2.131 seconds. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 2.131 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 2.131 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 2.131 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 2.131 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 2.131 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 2.131 seconds. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 2.131 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 2.131 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 2.131 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 2.131 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 2.564 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 2.564 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 2.563 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 2.563 seconds. +◇ Test resetClearsEveryReaction() started. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 2.490 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 2.564 seconds. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite TutorialStateMachineTests passed after 34.142 seconds. +✔ Suite ClipAlignmentTests passed after 34.142 seconds. +✔ Suite CombatContentFailClosedTests passed after 34.142 seconds. +✔ Suite LegacyAdmissionTests passed after 34.143 seconds. +✔ Suite PresentationSettingsTests passed after 34.142 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 2.876 seconds. +✔ Test resetClearsEveryReaction() passed after 0.446 seconds. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +✔ Suite ReactionClipTrackerTests passed after 34.144 seconds. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +◇ Test lockstepMatchesALiveReplay() started. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 1.099 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 1.099 seconds. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 1.099 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 1.099 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 1.099 seconds. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 1.099 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 1.099 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 5.642 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 1.099 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 2.905 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 2.905 seconds. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 2.895 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 10.194 seconds. +✔ Suite KernelVectorTests passed after 37.225 seconds. +✔ Suite PeakDensityProfilerTests passed after 37.224 seconds. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test crossfadeTakesOneSecond() started. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 0.702 seconds. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 0.327 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 0.327 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 0.327 seconds. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 0.327 seconds. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 0.326 seconds. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 0.326 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 1.762 seconds. +✔ Test crossfadeTakesOneSecond() passed after 1.762 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 1.756 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 4.562 seconds. +✔ Suite CombatVisibilityTests passed after 39.591 seconds. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 1.840 seconds. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +◇ Test allyAlertsNeverChain() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 14.619 seconds. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +✔ Test allyAlertsNeverChain() passed after 0.280 seconds. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.280 seconds. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.293 seconds. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.293 seconds. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.293 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 0.505 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.433 seconds. +✔ Suite ExpansionGateReportTests passed after 40.096 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.684 seconds. +✔ Test patrolEN035MovingPastHoldsFire() passed after 0.694 seconds. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.415 seconds. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test aDirectionNeverBorrowsFromAnother() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.526 seconds. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +✔ Test bossPhaseBO002HealthBands() passed after 0.526 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.531 seconds. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.531 seconds. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.531 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 0.537 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.537 seconds. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.531 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.515 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.014 seconds. +✔ Suite CameraDestructionOrderTests passed after 40.898 seconds. +◇ Test damageTakesPrecedenceOverSight() started. +✔ Suite TargetingPriorityTests passed after 40.899 seconds. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test coverageIsWhatTheRecordSays() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +✔ Test damageTakesPrecedenceOverSight() passed after 0.363 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.363 seconds. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.364 seconds. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.364 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.364 seconds. +✔ Test trackerUsesReducedPalettes() passed after 0.364 seconds. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.357 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.356 seconds. +✔ Suite OriginalArtTests passed after 41.263 seconds. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +◇ Test playerIntegrityComesFromContent() started. +✔ Test unawareEnemyDealsNoContactDamage() passed after 0.451 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.451 seconds. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.454 seconds. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.454 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.483 seconds. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.156 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.032 seconds. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test lockdownTintNeverBrightens() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 0.388 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 0.387 seconds. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 13.710 seconds. +✔ Test lockdownTintNeverBrightens() passed after 0.395 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 0.409 seconds. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 0.402 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.022 seconds. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test heatBlockDecodesFromTheBundledContract() started. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +◇ Test patrolIsOutsideHeat() started. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.023 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 0.023 seconds. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.031 seconds. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.031 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.046 seconds. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.038 seconds. +✔ Test patrolIsOutsideHeat() passed after 0.035 seconds. +✔ Suite CourtClimaxTests passed after 42.204 seconds. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +◇ Test heatBlockFailsClosed() started. +◇ Test snapshotNamesEveryGate() started. +◇ Test encounterEN001WaveTotals() started. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.025 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 0.025 seconds. +✔ Test heatBlockFailsClosed() passed after 0.027 seconds. +✔ Test snapshotNamesEveryGate() passed after 0.027 seconds. +✔ Test encounterEN001WaveTotals() passed after 2.144 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 4.670 seconds. +◇ Test awarenessIsDigested() started. +◇ Test tutorialLockdownPreemptsCopy() started. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test actorContrastValues() started. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +◇ Test ghostStopsAtItsTerminalTick() started. +✔ Test awarenessIsDigested() passed after 0.017 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.017 seconds. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.029 seconds. +✔ Test actorContrastValues() passed after 0.029 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 3.033 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 3.026 seconds. +✔ Suite GrayscaleSystemsTests passed after 47.410 seconds. +✔ Suite ReadabilityFinishTests passed after 47.410 seconds. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.004 seconds. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.008 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 2.933 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 12.478 seconds. +◇ Test awarenessBlockFailsClosed() started. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +✔ Test awarenessBlockFailsClosed() passed after 0.023 seconds. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.023 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.001 seconds. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.001 seconds. +✔ Suite ReleaseCandidateEvidenceTests passed after 50.371 seconds. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.007 seconds. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.007 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.001 seconds. +✔ Suite HeatReinforcementTests passed after 50.378 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test ghostFadesAfterItsTerminalTick() passed after 2.966 seconds. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.010 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.009 seconds. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.789 seconds. +✔ Suite ContractVectorTests passed after 51.180 seconds. +✔ Suite AwarenessTests passed after 51.181 seconds. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 6.086 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 1.231 seconds. +✔ Suite GhostRunTests passed after 57.708 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 38.431 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.012 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.125 seconds. +✔ Suite GateVerificationTests passed after 63.500 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 51.714 seconds. +✔ Suite PacingSegmentsTests passed after 72.821 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 117.066 seconds. +✔ Suite CameraFairnessTests passed after 117.068 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 137.911 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 5.899 seconds. +✔ Suite GameFeelTests passed after 185.560 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 214.571 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 219.422 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 248.064 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 43.151 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 257.726 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 241.382 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 265.496 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 299.642 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 93.259 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.016 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 1.633 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.065 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.010 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.079 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.007 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.003 seconds. +✔ Suite TransitPatrolTests passed after 378.690 seconds. +✔ Test run with 773 tests in 109 suites passed after 378.692 seconds. diff --git a/docs/review/displayed-playback/parity.log b/docs/review/displayed-playback/parity.log new file mode 100644 index 00000000..845775d0 --- /dev/null +++ b/docs/review/displayed-playback/parity.log @@ -0,0 +1,2 @@ +parity: pin is 521aec30cbb926938591d1ffb22233b24102732c +parity: OK — every bundled contract and fixture byte-matches SS-specs@521aec30cbb926938591d1ffb22233b24102732c diff --git a/docs/review/displayed-playback/review.md b/docs/review/displayed-playback/review.md new file mode 100644 index 00000000..1deb8bef --- /dev/null +++ b/docs/review/displayed-playback/review.md @@ -0,0 +1,15 @@ +# BP-008 displayed-playback specification adoption + +Adopts SS-specs 521aec30cbb926938591d1ffb22233b24102732c across SPEC_BASELINE.md, ContractVersions, SPEC_PIN and asset-catalog specificationCommit. This clarifies evidence requirements, not gait, controller speed, contact tolerance, frame count, new artwork admission or phase behavior. Active clip delivery remains v1. + +Source audit at runtime e6db65d: +- SpriteLibrary.texture selects event-driven textures by ClipTiming.frameIndex(atTickOffset:). +- SpriteLibrary.animation builds ordinary playback through sequence(textures:timing:), using SpriteKit action intervals and repeatForever for loops. +- WorldRenderer.playClip replaces actions when the clip/direction token changes. The benchmark review-art branch selects a static texture and removes actions. +- GameScene.renderBenchmark installs art, which resets WorldRenderer, then renders with Reduced Motion. This remains valid composition evidence only. +- GameScene.didEvaluateActions already aligns outlines after action evaluation; the moving evidence path should observe displayed texture there rather than guessing its frame index from simulation ticks. +- GameScene.redraw obtains session.snapshot and passes it to WorldRenderer. Authoritative simulation position and rendered node position must remain separately recorded, especially for diagnostic projected-world comparisons. + +Required implementation remains open: optional moving candidate installation once, ordinary action timing, post-action frame identity, simulation/rendered/root records, changing-texture sanity evidence and the existing BP-008 motion-case matrix. No static capture or source solver closes these requirements. Current painted contact key remains a source study, not a cycle. + +Parity evidence is in parity.log. Core suite passed: 773 tests in 109 suites, 378.692 seconds; process exit 0. See core-tests.log. Neither check establishes artwork quality, moving capture coverage or device readiness. diff --git a/docs/review/feel-optimization/README.md b/docs/review/feel-optimization/README.md new file mode 100644 index 00000000..44fb08c0 --- /dev/null +++ b/docs/review/feel-optimization/README.md @@ -0,0 +1,9 @@ +# Feel presentation snapshot removal — measured candidate + +FeelPassPresenter now queries only copy/visibility inputs instead of constructing a complete PresentationSnapshot. Patrol cone origin checks retain live/unaware membership and the zero-facing exclusion without ray-casting outlines. The snapshot API for encounter labels remains supported. Near-miss calculation is unchanged. + +Validation: 61 targeted core tests pass (including four new parity/diagnostic tests). Coverage includes 360 viewport/membership/priority combinations, mixed patrol/general hints, 760 ticks of encounter/queue transitions, expiry, rewind and reset. Fresh iOS Simulator app suite Test-SSRuntime-2026.10.15_20-30-02--0700: 117 named tests / 119 executions, zero failures. This includes lower-recovery animation coverage in both motion modes and shared traversal. Specs validation and diff checks pass. + +Same 240-step session-stage scenario against the preceding awareness-only build: hudCaptionsQuietFeel median fell from 1.7405 to 0.0575 ms (control-first) and 1.7630 to 0.0570 ms (measured-first), approximately 96.7% lower. The stage includes HUD/captions/quiet/feel, not just FeelPassPresenter. Per-tick digest/events and final command log still match the untimed control. Samples and both execution orders are retained. Separate host paired timings are diagnostic only and were collected during the targeted suite; they are not device or frame-rate measurements. + +No artwork, knee amplitude, movement speed, cadence, visibility rules, outline policy or acceptance threshold changed in this optimization. Source design remains proposed. The previous recorded 15/16 frame miss remains open until the recording-load scenario is rerun; this unrecorded passing suite does not replace it. Release/device performance and visual contact/seam review remain pending. diff --git a/docs/review/feel-optimization/app-summary.json b/docs/review/feel-optimization/app-summary.json new file mode 100644 index 00000000..b5ea9fc0 --- /dev/null +++ b/docs/review/feel-optimization/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 119, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792121832.21, + "passedTests" : 117, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792121402.725, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "41% of duration", + "text" : "2 longest test runs with outlier durations exceeding 30.69s (three standard deviations)" + } + ], + "totalTestCount" : 117 +} diff --git a/docs/review/feel-optimization/core-validation.log b/docs/review/feel-optimization/core-validation.log new file mode 100644 index 00000000..e31f3fce --- /dev/null +++ b/docs/review/feel-optimization/core-validation.log @@ -0,0 +1,154 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/3] Write sources +[1/3] Write swift-version--58304C5D6DBC2206.txt +[3/5] Emitting module SurveillanceCoreTests +[4/5] Compiling SurveillanceCoreTests FeelProjectionParityTests.swift +[4/6] Write Objects.LinkFileList +[5/6] Linking SSRuntimePackageTests +Build complete! (9.64s) +Test Suite 'Selected tests' started at 2026-10-15 20:28:17.620. +Test Suite 'SSRuntimePackageTests.xctest' started at 2026-10-15 20:28:17.622. +Test Suite 'SSRuntimePackageTests.xctest' passed at 2026-10-15 20:28:17.622. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds +Test Suite 'Selected tests' passed at 2026-10-15 20:28:17.622. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.002) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite AwarenessTests started. +◇ Suite FeelProjectionParityTests started. +◇ Suite OpeningTests started. +◇ Suite ReadabilityFinishTests started. +◇ Test viewportPatrolMembershipAndCopyPriorityMatchSnapshot() started. +◇ Test lifecycleEncounterTransitionsExpiryRewindAndResetMatchSnapshot() started. +◇ Test isolatedObservationTiming() started. +◇ Test mixedHintsKeepPatrolBeforeGeneralAwareness() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 0.001 seconds. +◇ Test fieldsAreDarkUntilTheirTurn() started. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 0.001 seconds. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 0.001 seconds. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 0.001 seconds. +◇ Test anyTouchSkips() started. +✔ Test anyTouchSkips() passed after 0.001 seconds. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 0.001 seconds. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 0.001 seconds. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +✔ Test arenaFourCarriesTheD094Viewport() passed after 0.010 seconds. +◇ Test presentationCameraShowsTheManifestViewport() started. +✔ Test mixedHintsKeepPatrolBeforeGeneralAwareness() passed after 0.015 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 0.004 seconds. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 0.014 seconds. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 0.032 seconds. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 0.002 seconds. +◇ Test awarenessHintUsesTheNewView() started. +✔ Test awarenessHintUsesTheNewView() passed after 0.003 seconds. +◇ Test safetyClassFollowsTheD094List() started. +✔ Test safetyClassFollowsTheD094List() passed after 0.001 seconds. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 0.001 seconds. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 0.001 seconds. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 0.001 seconds. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 0.001 seconds. +◇ Test captionsArriveWithEffectsOff() started. +✔ Test captionsArriveWithEffectsOff() passed after 0.001 seconds. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 0.001 seconds. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 0.020 seconds. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.011 seconds. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.008 seconds. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.001 seconds. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.001 seconds. +◇ Test lockdownTintNeverBrightens() started. +✔ Test lockdownTintNeverBrightens() passed after 0.001 seconds. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.002 seconds. +◇ Test snapshotNamesEveryGate() started. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 0.089 seconds. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 0.001 seconds. +✔ Suite OpeningTests passed after 0.107 seconds. +✔ Test snapshotNamesEveryGate() passed after 0.004 seconds. +◇ Test actorContrastValues() started. +✔ Test actorContrastValues() passed after 0.001 seconds. +✔ Suite ReadabilityFinishTests passed after 0.109 seconds. +✔ Test viewportPatrolMembershipAndCopyPriorityMatchSnapshot() passed after 0.170 seconds. +FEEL_PROJECTION_TIMING {"directFirst":false,"directMs":[0.036582999999999997,0.047958000000000001,0.030665999999999999,0.026792,0.040709000000000002,0.024209000000000001,0.025499999999999998,0.025125000000000001,0.039333,0.034542000000000003,0.042333000000000003,0.031290999999999999,0.036957999999999998,0.032458000000000001,0.028625000000000001,0.029125000000000002,0.037416999999999999,0.041458000000000002,0.044707999999999998,0.042541000000000002,0.039416,0.042000000000000003,0.28908299999999998,0.037583999999999999,0.038709,0.038959000000000001,0.037083999999999999,0.034250000000000003,0.046249999999999999,0.0465,0.075499999999999998,0.054375,0.043499999999999997,0.057333000000000002,0.054958,0.053584,0.054875,0.050916999999999997,0.072124999999999995,0.058458999999999997,0.053290999999999998,0.067792000000000005,0.059916999999999998,0.053166999999999999,0.059665999999999997,0.0545,0.042375000000000003,0.049666000000000002,0.053457999999999999,0.046040999999999999,0.042208000000000002,0.066291000000000003,0.047500000000000001,0.047542000000000001,0.041167000000000002,0.036624999999999998,0.034667000000000003,0.041791000000000002,0.045749999999999999,0.039542000000000001,0.041750000000000002,0.043416000000000003,0.040583000000000001,0.048500000000000001,0.037959,0.036416999999999998,0.037665999999999998,0.040292000000000001,0.038917,0.038875,0.037291999999999999,0.040333000000000001,0.035499999999999997,0.038709,0.035749999999999997,0.036124999999999997,0.033917000000000003,0.038665999999999999,0.034458000000000003,0.034958999999999997,0.036583999999999998,0.035208999999999997,0.039125,0.040000000000000001,0.037082999999999998,0.034375000000000003,0.038958,0.036124999999999997,0.036082999999999997,0.042833000000000003,0.040917000000000002,0.063042000000000001,0.043333000000000003,0.036207999999999997,0.045707999999999999,0.037374999999999999,0.035582999999999997,0.034916999999999997,0.039667000000000001,0.055041],"legacyMs":[2.1633330000000002,2.3424999999999998,2.2340409999999999,2.149375,2.1350410000000002,1.907084,1.859,1.8283750000000001,2.0866250000000002,2.0552920000000001,2.3899159999999999,2.2335410000000002,2.3435000000000001,2.0227499999999998,1.926625,2.0205419999999998,2.1612909999999999,2.8620410000000001,2.668625,2.994459,2.7456659999999999,2.6094170000000001,2.5264579999999999,2.7998750000000001,2.463292,2.490208,2.4122089999999998,2.2065000000000001,5.7126669999999997,2.9935,2.791334,2.7432500000000002,2.8215409999999999,3.4834589999999999,3.1379999999999999,3.3764590000000001,3.4916659999999999,3.6387909999999999,3.522208,3.2280410000000002,3.3632919999999999,4.3732920000000002,3.9082089999999998,3.6912910000000001,3.724958,3.3821249999999998,3.1858330000000001,2.5198749999999999,2.6174170000000001,2.4140419999999998,2.4485420000000002,2.7814589999999999,2.605,2.738375,2.600708,2.380916,2.1737500000000001,2.3021250000000002,2.6491669999999998,2.852042,2.7367089999999998,2.735417,2.7475420000000002,2.6000000000000001,2.2347079999999999,2.2173750000000001,2.494583,2.5102920000000002,2.164917,2.2657500000000002,2.4253339999999999,2.5400830000000001,2.2784580000000001,2.3802500000000002,2.2234579999999999,2.3772090000000001,2.2490830000000002,2.5305409999999999,2.3736250000000001,2.326667,2.3474170000000001,2.158417,2.4387500000000002,2.8366250000000002,2.7807919999999999,2.4021659999999998,2.6097920000000001,2.3097500000000002,2.5947079999999998,2.5267499999999998,2.4839579999999999,3.7933750000000002,3.3344580000000001,2.387375,3.3475000000000001,2.1928749999999999,2.0754999999999999,2.0502500000000001,2.1128330000000002,2.7675000000000001]} +FEEL_PROJECTION_TIMING {"directFirst":true,"directMs":[0.045208999999999999,0.037834,0.096000000000000002,0.037540999999999998,0.033375000000000002,0.033750000000000002,0.048959000000000003,0.039208,0.053917,0.035624999999999997,0.053666999999999999,0.063917000000000002,0.053749999999999999,0.034209000000000003,0.034916000000000003,0.034125000000000003,0.037707999999999998,0.032667000000000002,0.032625000000000001,0.036458999999999998,0.044291999999999998,0.045166999999999999,0.032584000000000002,0.032625000000000001,0.033042000000000002,0.040917000000000002,0.034458000000000003,0.036124999999999997,0.034458000000000003,0.040625000000000001,0.037999999999999999,0.036999999999999998,0.034250000000000003,0.033625000000000002,0.045415999999999998,0.038040999999999998,0.041000000000000002,0.032750000000000001,0.030917,0.033375000000000002,0.032417000000000001,0.038625,0.045458999999999999,0.032916000000000001,0.054082999999999999,0.035000000000000003,0.044458999999999999,0.059624999999999997,0.039458,0.043499999999999997,0.040417000000000002,0.048834000000000002,0.034791999999999997,0.032000000000000001,0.039875000000000001,0.053541999999999999,0.037874999999999999,0.042125000000000003,0.035957999999999997,0.035000000000000003,0.034916999999999997,0.039583,0.035083000000000003,0.039416,0.038249999999999999,0.048250000000000001,0.034958999999999997,0.042958999999999997,0.036082999999999997,0.038917,0.035541999999999997,0.041834000000000003,0.053499999999999999,0.049500000000000002,0.035791000000000003,0.036124999999999997,0.047166,0.046834000000000001,0.037541999999999999,0.039459000000000001,0.041791000000000002,0.038834,0.038834,0.039042,0.035291000000000003,0.034750000000000003,0.033875000000000002,0.032334000000000002,0.058125000000000003,0.041000000000000002,0.045749999999999999,0.063209000000000001,0.037332999999999998,0.047500000000000001,0.033916000000000002,0.084625000000000006,0.032250000000000001,0.031,0.035166000000000003,0.036374999999999998],"legacyMs":[3.3772090000000001,2.6034999999999999,2.470583,1.9459580000000001,1.9408339999999999,2.4813329999999998,2.4959579999999999,2.4117920000000002,2.2664580000000001,2.0772499999999998,2.7742499999999999,3.6022080000000001,2.928417,2.2883749999999998,2.0198749999999999,2.5375420000000002,1.9473750000000001,1.939959,1.9799169999999999,2.4589590000000001,2.3783340000000002,2.13375,1.992958,2.0400830000000001,2.5619160000000001,2.2475420000000002,2.1031249999999999,2.160625,2.1088330000000002,2.2306659999999998,2.679792,2.2473329999999998,1.9782919999999999,4.0905420000000001,2.1390419999999999,2.1622080000000001,2.397834,1.906917,1.9834579999999999,1.9833339999999999,2.5843340000000001,2.2666249999999999,2.115875,2.1564160000000001,2.613416,3.2755830000000001,2.7413340000000002,2.272208,2.3440829999999999,2.4159169999999999,2.7069999999999999,2.7429169999999998,2.0484170000000002,2.2745419999999998,2.5207079999999999,2.700666,2.2154590000000001,2.4616669999999998,2.3639999999999999,2.1914579999999999,2.322209,2.1599170000000001,2.1643750000000002,2.6720839999999999,3.2227079999999999,2.613791,2.2765420000000001,2.293542,3.5394999999999999,2.0962079999999998,2.302292,2.657,3.6651250000000002,2.423292,3.8270420000000001,3.2392500000000002,2.929792,3.8973330000000002,4.5051670000000001,2.0053749999999999,2.6692499999999999,2.9686249999999998,2.4387910000000002,2.406666,2.6440000000000001,1.994208,2.6433330000000002,2.9223750000000002,2.4637090000000001,2.1547499999999999,3.2386249999999999,2.296459,2.1285829999999999,2.1540840000000001,2.2721659999999999,2.2375419999999999,1.9563330000000001,2.1280420000000002,2.2155,2.6969159999999999]} +✔ Test isolatedObservationTiming() passed after 0.560 seconds. +✔ Test lifecycleEncounterTransitionsExpiryRewindAndResetMatchSnapshot() passed after 1.774 seconds. +✔ Suite FeelProjectionParityTests passed after 1.774 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 3.976 seconds. +◇ Test encounterEN017TrackedSpawnIsAware() started. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 0.155 seconds. +◇ Test encounterEN018MobCSpawnsAware() started. +✔ Test encounterEN018MobCSpawnsAware() passed after 0.311 seconds. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 0.802 seconds. +◇ Test spawnRuleCoversEveryCause() started. +✔ Test spawnRuleCoversEveryCause() passed after 0.001 seconds. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 0.007 seconds. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 0.005 seconds. +◇ Test sightRangeIsInclusive() started. +✔ Test sightRangeIsInclusive() passed after 0.007 seconds. +◇ Test encounterEN020SolidBlocksSight() started. +✔ Test encounterEN020SolidBlocksSight() passed after 0.039 seconds. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 0.005 seconds. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 0.005 seconds. +◇ Test allyAlertsNeverChain() started. +✔ Test allyAlertsNeverChain() passed after 0.005 seconds. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.003 seconds. +◇ Test damageTakesPrecedenceOverSight() started. +✔ Test damageTakesPrecedenceOverSight() passed after 0.003 seconds. +◇ Test unawareEnemyDealsNoContactDamage() started. +✔ Test unawareEnemyDealsNoContactDamage() passed after 0.176 seconds. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 0.005 seconds. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.005 seconds. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.010 seconds. +◇ Test awarenessIsDigested() started. +✔ Test awarenessIsDigested() passed after 0.009 seconds. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.001 seconds. +◇ Test awarenessBlockFailsClosed() started. +✔ Test awarenessBlockFailsClosed() passed after 0.017 seconds. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.003 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.002 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.473 seconds. +◇ Test directHintVisibilityMatchesSnapshotAtViewportAndStateBoundaries() started. +✔ Test directHintVisibilityMatchesSnapshotAtViewportAndStateBoundaries() passed after 0.056 seconds. +◇ Test directHintRetainsLatchExpiryRewindAndReset() started. +✔ Test directHintRetainsLatchExpiryRewindAndReset() passed after 0.004 seconds. +✔ Suite AwarenessTests passed after 6.102 seconds. +✔ Test run with 61 tests in 4 suites passed after 6.103 seconds. diff --git a/docs/review/feel-optimization/host-comparison.json b/docs/review/feel-optimization/host-comparison.json new file mode 100644 index 00000000..bcf691c2 --- /dev/null +++ b/docs/review/feel-optimization/host-comparison.json @@ -0,0 +1,19 @@ +{ + "scope": "Debug macOS core paired observations during targeted test run; not simulator session or frame-rate measurement", + "results": [ + { + "directFirst": false, + "directMedianMs": 0.0398335, + "legacyMedianMs": 2.5024375, + "reductionPercent": 98.40821199330652, + "samplesPerPath": 100 + }, + { + "directFirst": true, + "directMedianMs": 0.0379375, + "legacyMedianMs": 2.333146, + "reductionPercent": 98.37397659640675, + "samplesPerPath": 100 + } + ] +} diff --git a/docs/review/feel-optimization/host-samples.json b/docs/review/feel-optimization/host-samples.json new file mode 100644 index 00000000..3b042454 --- /dev/null +++ b/docs/review/feel-optimization/host-samples.json @@ -0,0 +1,416 @@ +[ + { + "directFirst": false, + "directMs": [ + 0.036583, + 0.047958, + 0.030666, + 0.026792, + 0.040709, + 0.024209, + 0.0255, + 0.025125, + 0.039333, + 0.034542, + 0.042333, + 0.031291, + 0.036958, + 0.032458, + 0.028625, + 0.029125, + 0.037417, + 0.041458, + 0.044708, + 0.042541, + 0.039416, + 0.042, + 0.289083, + 0.037584, + 0.038709, + 0.038959, + 0.037084, + 0.03425, + 0.04625, + 0.0465, + 0.0755, + 0.054375, + 0.0435, + 0.057333, + 0.054958, + 0.053584, + 0.054875, + 0.050917, + 0.072125, + 0.058459, + 0.053291, + 0.067792, + 0.059917, + 0.053167, + 0.059666, + 0.0545, + 0.042375, + 0.049666, + 0.053458, + 0.046041, + 0.042208, + 0.066291, + 0.0475, + 0.047542, + 0.041167, + 0.036625, + 0.034667, + 0.041791, + 0.04575, + 0.039542, + 0.04175, + 0.043416, + 0.040583, + 0.0485, + 0.037959, + 0.036417, + 0.037666, + 0.040292, + 0.038917, + 0.038875, + 0.037292, + 0.040333, + 0.0355, + 0.038709, + 0.03575, + 0.036125, + 0.033917, + 0.038666, + 0.034458, + 0.034959, + 0.036584, + 0.035209, + 0.039125, + 0.04, + 0.037083, + 0.034375, + 0.038958, + 0.036125, + 0.036083, + 0.042833, + 0.040917, + 0.063042, + 0.043333, + 0.036208, + 0.045708, + 0.037375, + 0.035583, + 0.034917, + 0.039667, + 0.055041 + ], + "legacyMs": [ + 2.163333, + 2.3425, + 2.234041, + 2.149375, + 2.135041, + 1.907084, + 1.859, + 1.828375, + 2.086625, + 2.055292, + 2.389916, + 2.233541, + 2.3435, + 2.02275, + 1.926625, + 2.020542, + 2.161291, + 2.862041, + 2.668625, + 2.994459, + 2.745666, + 2.609417, + 2.526458, + 2.799875, + 2.463292, + 2.490208, + 2.412209, + 2.2065, + 5.712667, + 2.9935, + 2.791334, + 2.74325, + 2.821541, + 3.483459, + 3.138, + 3.376459, + 3.491666, + 3.638791, + 3.522208, + 3.228041, + 3.363292, + 4.373292, + 3.908209, + 3.691291, + 3.724958, + 3.382125, + 3.185833, + 2.519875, + 2.617417, + 2.414042, + 2.448542, + 2.781459, + 2.605, + 2.738375, + 2.600708, + 2.380916, + 2.17375, + 2.302125, + 2.649167, + 2.852042, + 2.736709, + 2.735417, + 2.747542, + 2.6, + 2.234708, + 2.217375, + 2.494583, + 2.510292, + 2.164917, + 2.26575, + 2.425334, + 2.540083, + 2.278458, + 2.38025, + 2.223458, + 2.377209, + 2.249083, + 2.530541, + 2.373625, + 2.326667, + 2.347417, + 2.158417, + 2.43875, + 2.836625, + 2.780792, + 2.402166, + 2.609792, + 2.30975, + 2.594708, + 2.52675, + 2.483958, + 3.793375, + 3.334458, + 2.387375, + 3.3475, + 2.192875, + 2.0755, + 2.05025, + 2.112833, + 2.7675 + ] + }, + { + "directFirst": true, + "directMs": [ + 0.045209, + 0.037834, + 0.096, + 0.037541, + 0.033375, + 0.03375, + 0.048959, + 0.039208, + 0.053917, + 0.035625, + 0.053667, + 0.063917, + 0.05375, + 0.034209, + 0.034916, + 0.034125, + 0.037708, + 0.032667, + 0.032625, + 0.036459, + 0.044292, + 0.045167, + 0.032584, + 0.032625, + 0.033042, + 0.040917, + 0.034458, + 0.036125, + 0.034458, + 0.040625, + 0.038, + 0.037, + 0.03425, + 0.033625, + 0.045416, + 0.038041, + 0.041, + 0.03275, + 0.030917, + 0.033375, + 0.032417, + 0.038625, + 0.045459, + 0.032916, + 0.054083, + 0.035, + 0.044459, + 0.059625, + 0.039458, + 0.0435, + 0.040417, + 0.048834, + 0.034792, + 0.032, + 0.039875, + 0.053542, + 0.037875, + 0.042125, + 0.035958, + 0.035, + 0.034917, + 0.039583, + 0.035083, + 0.039416, + 0.03825, + 0.04825, + 0.034959, + 0.042959, + 0.036083, + 0.038917, + 0.035542, + 0.041834, + 0.0535, + 0.0495, + 0.035791, + 0.036125, + 0.047166, + 0.046834, + 0.037542, + 0.039459, + 0.041791, + 0.038834, + 0.038834, + 0.039042, + 0.035291, + 0.03475, + 0.033875, + 0.032334, + 0.058125, + 0.041, + 0.04575, + 0.063209, + 0.037333, + 0.0475, + 0.033916, + 0.084625, + 0.03225, + 0.031, + 0.035166, + 0.036375 + ], + "legacyMs": [ + 3.377209, + 2.6035, + 2.470583, + 1.945958, + 1.940834, + 2.481333, + 2.495958, + 2.411792, + 2.266458, + 2.07725, + 2.77425, + 3.602208, + 2.928417, + 2.288375, + 2.019875, + 2.537542, + 1.947375, + 1.939959, + 1.979917, + 2.458959, + 2.378334, + 2.13375, + 1.992958, + 2.040083, + 2.561916, + 2.247542, + 2.103125, + 2.160625, + 2.108833, + 2.230666, + 2.679792, + 2.247333, + 1.978292, + 4.090542, + 2.139042, + 2.162208, + 2.397834, + 1.906917, + 1.983458, + 1.983334, + 2.584334, + 2.266625, + 2.115875, + 2.156416, + 2.613416, + 3.275583, + 2.741334, + 2.272208, + 2.344083, + 2.415917, + 2.707, + 2.742917, + 2.048417, + 2.274542, + 2.520708, + 2.700666, + 2.215459, + 2.461667, + 2.364, + 2.191458, + 2.322209, + 2.159917, + 2.164375, + 2.672084, + 3.222708, + 2.613791, + 2.276542, + 2.293542, + 3.5395, + 2.096208, + 2.302292, + 2.657, + 3.665125, + 2.423292, + 3.827042, + 3.23925, + 2.929792, + 3.897333, + 4.505167, + 2.005375, + 2.66925, + 2.968625, + 2.438791, + 2.406666, + 2.644, + 1.994208, + 2.643333, + 2.922375, + 2.463709, + 2.15475, + 3.238625, + 2.296459, + 2.128583, + 2.154084, + 2.272166, + 2.237542, + 1.956333, + 2.128042, + 2.2155, + 2.696916 + ] + } +] diff --git a/docs/review/feel-optimization/revision.json b/docs/review/feel-optimization/revision.json new file mode 100644 index 00000000..8893860a --- /dev/null +++ b/docs/review/feel-optimization/revision.json @@ -0,0 +1,5 @@ +{ + "Sources/SurveillanceCore/Presentation/FeelPassPresenter.swift": "3bd48e07b2978c77204de80020a88701b88323e1a67e82acf28c8897c64be36f", + "Sources/SurveillanceCore/Presentation/Opening.swift": "eab77c1907cf01af1edec7579d47603788a124bba389cf967b2aabf89e0a5f5f", + "Tests/SurveillanceCoreTests/FeelProjectionParityTests.swift": "968413010bfcd0c771cc033c2f8c6a88466330409ee9e9562c967010e8b9453e" +} diff --git a/docs/review/feel-optimization/session-stage-samples.json b/docs/review/feel-optimization/session-stage-samples.json new file mode 100644 index 00000000..8438ebdf --- /dev/null +++ b/docs/review/feel-optimization/session-stage-samples.json @@ -0,0 +1,3362 @@ +[ + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.193450927734375e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 6.103515625e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.0016330480575561523, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 1 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.996227264404297e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020960569381713867, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 2 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.002716064453125e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 7.987022399902344e-06, + "hudCaptionsQuietFeel": 6.496906280517578e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.0021849870681762695, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 3 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.496906280517578e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.00212705135345459, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 4 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 4.00543212890625e-05, + "awarenessSnapshotAndHint": 6.9141387939453125e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.5033950805664062e-05, + "hudCaptionsQuietFeel": 0.0001289844512939453, + "reactions": 2.5033950805664062e-05, + "simulation": 0.0027159452438354492, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 5 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.9073486328125e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 7.033348083496094e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.888938903808594e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020949840545654297, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 6 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.0022410154342651367, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 7 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.9073486328125e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 6.079673767089844e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.198883056640625e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.0020979642868041992, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 8 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.300739288330078e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 7.987022399902344e-06, + "hudCaptionsQuietFeel": 7.200241088867188e-05, + "reactions": 7.987022399902344e-06, + "simulation": 0.002174973487854004, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 9 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.300739288330078e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 6.794929504394531e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.002187967300415039, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 10 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002047896385192871, + "terminalReceipt": 3.0994415283203125e-06 + }, + "tick": 11 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.0020780563354492188, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 12 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.602836608886719e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.002054929733276367, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 13 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.193450927734375e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 6.401538848876953e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.0020869970321655273, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 14 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 5.0067901611328125e-06, + "commandAndFeelBefore": 6.079673767089844e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.008148193359375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0021479129791259766, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 15 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 3.0994415283203125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.4955482482910156e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020520687103271484, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 16 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.205371856689453e-05, + "awarenessSnapshotAndHint": 5.0067901611328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 1.1920928955078125e-05, + "hudCaptionsQuietFeel": 7.200241088867188e-05, + "reactions": 1.0013580322265625e-05, + "simulation": 0.002151012420654297, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 17 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002050042152404785, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 18 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.008148193359375e-05, + "reactions": 4.887580871582031e-06, + "simulation": 0.0020591020584106445, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 19 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020600557327270508, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 20 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.09808349609375e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 6.401538848876953e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.0020689964294433594, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 21 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.09808349609375e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 7.033348083496094e-06, + "hudCaptionsQuietFeel": 6.401538848876953e-05, + "reactions": 7.987022399902344e-06, + "simulation": 0.002156972885131836, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 22 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020449161529541016, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 23 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020450353622436523, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 24 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.0020639896392822266, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 25 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020389556884765625, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 26 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.6941299438476562e-05, + "awarenessSnapshotAndHint": 5.0067901611328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 6.9141387939453125e-06, + "hudCaptionsQuietFeel": 8.0108642578125e-05, + "reactions": 7.987022399902344e-06, + "simulation": 0.0022230148315429688, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 27 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020400285720825195, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 28 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020470619201660156, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 29 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.887580871582031e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0019720792770385742, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 30 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.696846008300781e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017169713973999023, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 31 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 3.0994415283203125e-06, + "commandAndFeelBefore": 7.033348083496094e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.3048133850097656e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017910003662109375, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 32 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017119646072387695, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 33 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001728057861328125, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 34 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 6.079673767089844e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017479658126831055, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 35 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 2.9802322387695312e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017130374908447266, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 36 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001716017723083496, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 37 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.609325408935547e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.2928924560546875e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017589330673217773, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 38 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001732945442199707, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 39 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017180442810058594, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 40 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.0067901611328125e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017399787902832031, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 41 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017310380935668945, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 42 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017219781875610352, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 43 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.609325408935547e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017050504684448242, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 44 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017260313034057617, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 45 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.0994415283203125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017039775848388672, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 46 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017230510711669922, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 47 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017150640487670898, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 48 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017119646072387695, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 49 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.1021575927734375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017379522323608398, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 50 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017249584197998047, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 51 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017309188842773438, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 52 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017060041427612305, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 53 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.001714944839477539, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 54 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017230510711669922, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 55 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017110109329223633, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 56 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017229318618774414, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 57 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001710057258605957, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 58 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017199516296386719, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 59 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.0994415283203125e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017338991165161133, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 60 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 1.1920928955078125e-05, + "hudCaptionsQuietFeel": 7.402896881103516e-05, + "reactions": 1.0013580322265625e-05, + "simulation": 0.0018150806427001953, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 61 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 6.079673767089844e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017299652099609375, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 62 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.001726984977722168, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 63 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 1.0967254638671875e-05, + "hudCaptionsQuietFeel": 5.996227264404297e-05, + "reactions": 1.5020370483398438e-05, + "simulation": 0.0017420053482055664, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 64 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.1021575927734375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017249584197998047, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 65 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017219781875610352, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 66 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 6.198883056640625e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.0018030405044555664, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 67 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017290115356445312, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 68 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017200708389282227, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 69 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.0994415283203125e-06, + "hudCaptionsQuietFeel": 4.696846008300781e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017319917678833008, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 70 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017099380493164062, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 71 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 2.9802322387695312e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017180442810058594, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 72 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.1975250244140625e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.001752018928527832, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 73 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.001728057861328125, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 74 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 5.3048133850097656e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017660856246948242, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 75 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017499923706054688, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 76 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 2.9802322387695312e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.001728057861328125, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 77 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 2.9802322387695312e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.710124969482422e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017440319061279297, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 78 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 1.0013580322265625e-05, + "diagnosticsAndCommandLog": 4.887580871582031e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002097010612487793, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 79 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.602836608886719e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020738840103149414, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 80 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.300739288330078e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 6.079673767089844e-06, + "hudCaptionsQuietFeel": 7.402896881103516e-05, + "reactions": 6.9141387939453125e-06, + "simulation": 0.0021829605102539062, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 81 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.0020600557327270508, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 82 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020589828491210938, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 83 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.990795135498047e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 6.008148193359375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020509958267211914, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 84 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 6.401538848876953e-05, + "reactions": 4.887580871582031e-06, + "simulation": 0.00203704833984375, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 85 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0021419525146484375, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 86 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.887580871582031e-06, + "hudCaptionsQuietFeel": 5.602836608886719e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020290613174438477, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 87 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002035975456237793, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 88 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.996227264404297e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002062082290649414, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 89 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020769834518432617, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 90 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020630359649658203, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 91 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020599365234375, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 92 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 7.987022399902344e-06, + "hudCaptionsQuietFeel": 6.306171417236328e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.002061009407043457, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 93 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020520687103271484, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 94 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.887580871582031e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020580291748046875, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 95 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.996227264404297e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0021049976348876953, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 96 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 6.103515625e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020399093627929688, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 97 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.300739288330078e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 0.00017499923706054688, + "reactions": 7.033348083496094e-06, + "simulation": 0.0020589828491210938, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 98 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.602836608886719e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002042055130004883, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 99 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020439624786376953, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 100 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.990795135498047e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.887580871582031e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.401538848876953e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.0020641088485717773, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 101 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.008148193359375e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.0020560026168823242, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 102 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.002716064453125e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.29425048828125e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.002164006233215332, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 103 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020450353622436523, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 104 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.710124969482422e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.002035975456237793, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 105 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002064943313598633, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 106 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.990795135498047e-05, + "awarenessSnapshotAndHint": 3.0994415283203125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 6.9141387939453125e-06, + "hudCaptionsQuietFeel": 6.401538848876953e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.002079010009765625, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 107 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.205371856689453e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.592273712158203e-05, + "reactions": 8.106231689453125e-06, + "simulation": 0.0022389888763427734, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 108 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.602836608886719e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002071976661682129, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 109 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 4.887580871582031e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.008148193359375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002061009407043457, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 110 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020599365234375, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 111 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.103515625e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.002093076705932617, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 112 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.008148193359375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020639896392822266, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 113 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.888938903808594e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020400285720825195, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 114 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.9921531677246094e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 0.00011098384857177734, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002043008804321289, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 115 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020380020141601562, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 116 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 6.079673767089844e-06, + "hudCaptionsQuietFeel": 6.890296936035156e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.002362966537475586, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 117 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.002084016799926758, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 118 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 4.7087669372558594e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 0.00022292137145996094, + "reactions": 6.079673767089844e-06, + "simulation": 0.0021439790725708008, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 119 + }, + { + "measuredFirst": false, + "seconds": { + "audioAndCaptionBoard": 2.09808349609375e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 7.092952728271484e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.0022950172424316406, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 120 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.9921531677246094e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 7.033348083496094e-06, + "diagnosticsAndCommandLog": 2.5033950805664062e-05, + "hudCaptionsQuietFeel": 9.202957153320312e-05, + "reactions": 3.3020973205566406e-05, + "simulation": 0.0016379356384277344, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 1 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.09808349609375e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 7.987022399902344e-06, + "diagnosticsAndCommandLog": 6.9141387939453125e-06, + "hudCaptionsQuietFeel": 6.604194641113281e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.0021680593490600586, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 2 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002035975456237793, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 3 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.002048969268798828, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 4 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 6.079673767089844e-06, + "diagnosticsAndCommandLog": 4.887580871582031e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0020380020141601562, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 5 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.002716064453125e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.887580871582031e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.602836608886719e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002044081687927246, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 6 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.09808349609375e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.0021910667419433594, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 7 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.696846008300781e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017009973526000977, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 8 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.696846008300781e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017020702362060547, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 9 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.9073486328125e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 1.0967254638671875e-05, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017889738082885742, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 10 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017470121383666992, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 11 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 3.0994415283203125e-06, + "commandAndFeelBefore": 8.106231689453125e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.0017409324645996094, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 12 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 3.0994415283203125e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.0017780065536499023, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 13 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001847982406616211, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 14 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.888938903808594e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020639896392822266, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 15 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.002716064453125e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.887580871582031e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.198883056640625e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.0020470619201660156, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 16 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 4.887580871582031e-06, + "simulation": 0.002031087875366211, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 17 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.193450927734375e-05, + "awarenessSnapshotAndHint": 6.079673767089844e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 7.033348083496094e-06, + "hudCaptionsQuietFeel": 6.604194641113281e-05, + "reactions": 8.940696716308594e-06, + "simulation": 0.002079010009765625, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 18 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.602836608886719e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002023935317993164, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 19 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020329952239990234, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 20 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 4.0531158447265625e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020189285278320312, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 21 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 1.2993812561035156e-05, + "simulation": 0.0017000436782836914, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 22 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 8.940696716308594e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 6.198883056640625e-05, + "reactions": 9.059906005859375e-06, + "simulation": 0.0018100738525390625, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 23 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 3.0994415283203125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.1021575927734375e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017330646514892578, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 24 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.0994415283203125e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017209053039550781, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 25 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.205371856689453e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 7.033348083496094e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.29425048828125e-05, + "reactions": 7.987022399902344e-06, + "simulation": 0.0017690658569335938, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 26 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.609325408935547e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017129182815551758, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 27 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017099380493164062, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 28 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 6.008148193359375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017499923706054688, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 29 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 6.198883056640625e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017309188842773438, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 30 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.2928924560546875e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0018320083618164062, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 31 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.3048133850097656e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017049312591552734, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 32 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017219781875610352, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 33 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.001703023910522461, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 34 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.609325408935547e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 7.033348083496094e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.4955482482910156e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017440319061279297, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 35 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017349720001220703, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 36 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017240047454833984, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 37 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.001728057861328125, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 38 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017300844192504883, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 39 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.0067901611328125e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.001716017723083496, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 40 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.001721024513244629, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 41 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017189979553222656, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 42 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.6927719116210938e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 1.2993812561035156e-05, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 9.059906005859375e-06, + "simulation": 0.001726984977722168, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 43 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.3048133850097656e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001762986183166504, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 44 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017619132995605469, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 45 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 5.1021575927734375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001734018325805664, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 46 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.001743912696838379, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 47 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017540454864501953, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 48 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 9.059906005859375e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 1.3947486877441406e-05, + "simulation": 0.0018010139465332031, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 49 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017369985580444336, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 50 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001734018325805664, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 51 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.396106719970703e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 1.1920928955078125e-05, + "hudCaptionsQuietFeel": 8.702278137207031e-05, + "reactions": 9.059906005859375e-06, + "simulation": 0.001829981803894043, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 52 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 5.1021575927734375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017279386520385742, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 53 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017180442810058594, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 54 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.609325408935547e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.5909156799316406e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.001813054084777832, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 55 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.0994415283203125e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.001707911491394043, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 56 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017169713973999023, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 57 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017501115798950195, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 58 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017080307006835938, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 59 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017250776290893555, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 60 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.609325408935547e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 6.99758529663086e-05, + "reactions": 1.3947486877441406e-05, + "simulation": 0.0017349720001220703, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 61 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017170906066894531, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 62 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001716017723083496, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 63 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017249584197998047, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 64 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017219781875610352, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 65 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017189979553222656, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 66 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.9073486328125e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 7.987022399902344e-06, + "simulation": 0.0017789602279663086, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 67 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017490386962890625, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 68 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017380714416503906, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 69 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.1021575927734375e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017380714416503906, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 70 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017189979553222656, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 71 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.001716017723083496, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 72 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 2.9802322387695312e-06, + "hudCaptionsQuietFeel": 5.3048133850097656e-05, + "reactions": 1.5974044799804688e-05, + "simulation": 0.0017430782318115234, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 73 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.3947486877441406e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017479658126831055, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 74 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5974044799804688e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.1021575927734375e-05, + "reactions": 3.933906555175781e-06, + "simulation": 0.0017230510711669922, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 75 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 4.8041343688964844e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.001714944839477539, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 76 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 1.0728836059570312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017219781875610352, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 77 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.5020370483398438e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.887580871582031e-06, + "hudCaptionsQuietFeel": 4.9948692321777344e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017200708389282227, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 78 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4901161193847656e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.0531158447265625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 4.8995018005371094e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0017219781875610352, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 79 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.4066696166992188e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 4.792213439941406e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0017170906066894531, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 80 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 3.933906555175781e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.00197601318359375, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 81 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.002055048942565918, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 82 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.002068042755126953, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 83 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.306171417236328e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.0020710229873657227, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 84 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020439624786376953, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 85 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 8.296966552734375e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.198883056640625e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.002054929733276367, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 86 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020319223403930664, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 87 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020200014114379883, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 88 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.887580871582031e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0021229982376098633, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 89 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.9073486328125e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.00209200382232666, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 90 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.990795135498047e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 6.9141387939453125e-06, + "hudCaptionsQuietFeel": 6.306171417236328e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.002171039581298828, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 91 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 9.5367431640625e-07, + "commandAndFeelBefore": 4.887580871582031e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.805492401123047e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020380020141601562, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 92 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.9073486328125e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.99758529663086e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.00229799747467041, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 93 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 4.887580871582031e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.996227264404297e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020880699157714844, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 94 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 3.0994415283203125e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 7.033348083496094e-06, + "diagnosticsAndCommandLog": 1.800060272216797e-05, + "hudCaptionsQuietFeel": 0.00010907649993896484, + "reactions": 1.6927719116210938e-05, + "simulation": 0.002315044403076172, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 95 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.09808349609375e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.496906280517578e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.002256035804748535, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 96 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 1.0013580322265625e-05, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 6.091594696044922e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0023270845413208008, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 97 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.002716064453125e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 1.0013580322265625e-05, + "diagnosticsAndCommandLog": 5.9604644775390625e-06, + "hudCaptionsQuietFeel": 6.496906280517578e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.0022259950637817383, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 98 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 4.0531158447265625e-06, + "hudCaptionsQuietFeel": 5.698204040527344e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020380020141601562, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 99 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 3.802776336669922e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 9.059906005859375e-06, + "diagnosticsAndCommandLog": 1.2993812561035156e-05, + "hudCaptionsQuietFeel": 0.00010001659393310547, + "reactions": 1.800060272216797e-05, + "simulation": 0.0023899078369140625, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 100 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020940303802490234, + "terminalReceipt": 1.0728836059570312e-06 + }, + "tick": 101 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 3.2901763916015625e-05, + "awarenessSnapshotAndHint": 3.0994415283203125e-06, + "commandAndFeelBefore": 1.2993812561035156e-05, + "diagnosticsAndCommandLog": 1.0967254638671875e-05, + "hudCaptionsQuietFeel": 9.310245513916016e-05, + "reactions": 1.2993812561035156e-05, + "simulation": 0.0024039745330810547, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 102 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.704692840576172e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.9604644775390625e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 5.900859832763672e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020830631256103516, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 103 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 4.303455352783203e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.0040740966796875e-05, + "hudCaptionsQuietFeel": 0.00014197826385498047, + "reactions": 2.8967857360839844e-05, + "simulation": 0.0021649599075317383, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 104 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.002716064453125e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 1.0967254638671875e-05, + "diagnosticsAndCommandLog": 4.887580871582031e-06, + "hudCaptionsQuietFeel": 9.40561294555664e-05, + "reactions": 7.033348083496094e-06, + "simulation": 0.0021181106567382812, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 105 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 5.793571472167969e-05, + "reactions": 4.0531158447265625e-06, + "simulation": 0.0020350217819213867, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 106 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.491474151611328e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 1.2993812561035156e-05, + "diagnosticsAndCommandLog": 1.800060272216797e-05, + "hudCaptionsQuietFeel": 7.402896881103516e-05, + "reactions": 9.059906005859375e-06, + "simulation": 0.0025169849395751953, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 107 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.895427703857422e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 7.033348083496094e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.306171417236328e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.002054929733276367, + "terminalReceipt": 9.5367431640625e-07 + }, + "tick": 108 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 5.0067901611328125e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 1.895427703857422e-05, + "diagnosticsAndCommandLog": 2.110004425048828e-05, + "hudCaptionsQuietFeel": 0.00014293193817138672, + "reactions": 2.5987625122070312e-05, + "simulation": 0.002434968948364258, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 109 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.990795135498047e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 5.0067901611328125e-06, + "hudCaptionsQuietFeel": 6.401538848876953e-05, + "reactions": 6.079673767089844e-06, + "simulation": 0.002308964729309082, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 110 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 4.410743713378906e-05, + "awarenessSnapshotAndHint": 3.933906555175781e-06, + "commandAndFeelBefore": 1.5974044799804688e-05, + "diagnosticsAndCommandLog": 2.09808349609375e-05, + "hudCaptionsQuietFeel": 0.00013697147369384766, + "reactions": 2.5033950805664062e-05, + "simulation": 0.0023889541625976562, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 111 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 4.208087921142578e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 1.5020370483398438e-05, + "diagnosticsAndCommandLog": 2.300739288330078e-05, + "hudCaptionsQuietFeel": 0.00016796588897705078, + "reactions": 2.5987625122070312e-05, + "simulation": 0.0026630163192749023, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 112 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 4.9948692321777344e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 1.4901161193847656e-05, + "diagnosticsAndCommandLog": 2.09808349609375e-05, + "hudCaptionsQuietFeel": 0.0001430511474609375, + "reactions": 2.8014183044433594e-05, + "simulation": 0.0024770498275756836, + "terminalReceipt": 4.0531158447265625e-06 + }, + "tick": 113 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.396106719970703e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 7.987022399902344e-06, + "diagnosticsAndCommandLog": 6.079673767089844e-06, + "hudCaptionsQuietFeel": 7.200241088867188e-05, + "reactions": 8.940696716308594e-06, + "simulation": 0.002164006233215332, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 114 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 3.802776336669922e-05, + "awarenessSnapshotAndHint": 2.9802322387695312e-06, + "commandAndFeelBefore": 1.5020370483398438e-05, + "diagnosticsAndCommandLog": 1.2993812561035156e-05, + "hudCaptionsQuietFeel": 0.00010395050048828125, + "reactions": 1.5020370483398438e-05, + "simulation": 0.0023980140686035156, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 115 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.110004425048828e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 6.9141387939453125e-06, + "diagnosticsAndCommandLog": 6.079673767089844e-06, + "hudCaptionsQuietFeel": 6.496906280517578e-05, + "reactions": 5.9604644775390625e-06, + "simulation": 0.002102971076965332, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 116 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 4.494190216064453e-05, + "awarenessSnapshotAndHint": 3.0994415283203125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 2.193450927734375e-05, + "hudCaptionsQuietFeel": 0.0001430511474609375, + "reactions": 2.5987625122070312e-05, + "simulation": 0.002315998077392578, + "terminalReceipt": 1.9073486328125e-06 + }, + "tick": 117 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.396106719970703e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 6.079673767089844e-06, + "diagnosticsAndCommandLog": 7.033348083496094e-06, + "hudCaptionsQuietFeel": 7.49826431274414e-05, + "reactions": 7.987022399902344e-06, + "simulation": 0.002187967300415039, + "terminalReceipt": 2.9802322387695312e-06 + }, + "tick": 118 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 1.800060272216797e-05, + "awarenessSnapshotAndHint": 1.9073486328125e-06, + "commandAndFeelBefore": 5.0067901611328125e-06, + "diagnosticsAndCommandLog": 3.933906555175781e-06, + "hudCaptionsQuietFeel": 6.008148193359375e-05, + "reactions": 5.0067901611328125e-06, + "simulation": 0.0020639896392822266, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 119 + }, + { + "measuredFirst": true, + "seconds": { + "audioAndCaptionBoard": 2.09808349609375e-05, + "awarenessSnapshotAndHint": 2.0265579223632812e-06, + "commandAndFeelBefore": 8.940696716308594e-06, + "diagnosticsAndCommandLog": 7.033348083496094e-06, + "hudCaptionsQuietFeel": 8.702278137207031e-05, + "reactions": 6.9141387939453125e-06, + "simulation": 0.002547025680541992, + "terminalReceipt": 2.0265579223632812e-06 + }, + "tick": 120 + } +] diff --git a/docs/review/feel-optimization/stage-comparison.json b/docs/review/feel-optimization/stage-comparison.json new file mode 100644 index 00000000..0cbf2bec --- /dev/null +++ b/docs/review/feel-optimization/stage-comparison.json @@ -0,0 +1,114 @@ +[ + { + "stage": "audioAndCaptionBoard", + "measuredFirst": false, + "beforeMedianMS": 0.06103515625, + "afterMedianMS": 0.01704692840576172, + "changePercent": -72.0703125 + }, + { + "stage": "awarenessSnapshotAndHint", + "measuredFirst": false, + "beforeMedianMS": 0.0059604644775390625, + "afterMedianMS": 0.0020265579223632812, + "changePercent": -65.99999999999999 + }, + { + "stage": "commandAndFeelBefore", + "measuredFirst": false, + "beforeMedianMS": 0.010013580322265625, + "afterMedianMS": 0.0050067901611328125, + "changePercent": -50.0 + }, + { + "stage": "diagnosticsAndCommandLog", + "measuredFirst": false, + "beforeMedianMS": 0.02491474151611328, + "afterMedianMS": 0.0040531158447265625, + "changePercent": -83.73205741626795 + }, + { + "stage": "hudCaptionsQuietFeel", + "measuredFirst": false, + "beforeMedianMS": 1.7404556274414062, + "afterMedianMS": 0.05751848220825195, + "changePercent": -96.69520547945206 + }, + { + "stage": "reactions", + "measuredFirst": false, + "beforeMedianMS": 0.024497509002685547, + "afterMedianMS": 0.0050067901611328125, + "changePercent": -79.56204379562044 + }, + { + "stage": "simulation", + "measuredFirst": false, + "beforeMedianMS": 2.4974942207336426, + "afterMedianMS": 2.042531967163086, + "changePercent": -18.216749003603727 + }, + { + "stage": "terminalReceipt", + "measuredFirst": false, + "beforeMedianMS": 0.0029802322387695312, + "afterMedianMS": 0.0020265579223632812, + "changePercent": -31.999999999999996 + }, + { + "stage": "audioAndCaptionBoard", + "measuredFirst": true, + "beforeMedianMS": 0.05900859832763672, + "afterMedianMS": 0.01704692840576172, + "changePercent": -71.11111111111111 + }, + { + "stage": "awarenessSnapshotAndHint", + "measuredFirst": true, + "beforeMedianMS": 0.0050067901611328125, + "afterMedianMS": 0.0020265579223632812, + "changePercent": -59.523809523809526 + }, + { + "stage": "commandAndFeelBefore", + "measuredFirst": true, + "beforeMedianMS": 0.014066696166992188, + "afterMedianMS": 0.0050067901611328125, + "changePercent": -64.40677966101696 + }, + { + "stage": "diagnosticsAndCommandLog", + "measuredFirst": true, + "beforeMedianMS": 0.025033950805664062, + "afterMedianMS": 0.0040531158447265625, + "changePercent": -83.80952380952381 + }, + { + "stage": "hudCaptionsQuietFeel", + "measuredFirst": true, + "beforeMedianMS": 1.7630457878112793, + "afterMedianMS": 0.05698204040527344, + "changePercent": -96.76797728117921 + }, + { + "stage": "reactions", + "measuredFirst": true, + "beforeMedianMS": 0.025033950805664062, + "afterMedianMS": 0.0050067901611328125, + "changePercent": -80.0 + }, + { + "stage": "simulation", + "measuredFirst": true, + "beforeMedianMS": 2.5194883346557617, + "afterMedianMS": 1.7839670181274414, + "changePercent": -29.193281286964744 + }, + { + "stage": "terminalReceipt", + "measuredFirst": true, + "beforeMedianMS": 0.0029802322387695312, + "afterMedianMS": 0.0020265579223632812, + "changePercent": -31.999999999999996 + } +] diff --git a/docs/review/field-contrast/README.md b/docs/review/field-contrast/README.md new file mode 100644 index 00000000..7a07f505 --- /dev/null +++ b/docs/review/field-contrast/README.md @@ -0,0 +1,11 @@ +# Field boundary comparison — research, spec and runtime review + +The researched requirements are now in SS-specs d859658; all four runtime pin sources adopt that commit. Both spec validators pass. Exact local parity passes for all 22 bundled JSON contracts/fixtures (the documented asset-catalog pin exception only). Four ContractVersions/AssetCatalog tests pass. Prior complete core run: 773 tests/109 suites, exit 0; since then only the specification identity changed in core. Current app changes are DEBUG review controls and evidence fixtures. + +Final simulator run Test-SSRuntime-2026.10.14_22-30-42--0700.xcresult: 105 executions, no failures. Field-path checks cover standard/Captain exact path equality, child reuse/no growth, control restoration, field removal and reset. Shared-scene captures compare control/dark/paired at each integrity under Reduced Motion, with actual HUD and candidate scene art. The renderer and simulation geometry remain unchanged in ordinary play; comparison controls are DEBUG-only. + +Initial run failed the existing camera live-capture progress assertion: the 0.8s idle phase could finish with just one observed texture. Issue https://github.com/Zero-State-LLC/SS-runtime/issues/127 was filed before repair. Completion now requires both elapsed time and multiple actual post-action texture identities. Assertion, real callbacks and timeout remain unchanged. Initial evidence is retained under initial/; final/ contains the passing rerun. + +Visual findings: both contours make the field boundary visible on pale paving in grayscale. Dark-only resembles a physical line more strongly; paired is the stronger candidate for further comparison. This is an observer judgment, not production selection. Ground fill remains weak; no contour solves the Player outline, repeated paving or missing street composition. Dark ground, shadow, busy terrain, clipped corners, overlapping fields, Captain visuals, detecting-state differentiation, normal motion, legal/dense encounters and user testing remain outstanding. No numeric accessibility compliance or performance acceptance is claimed. + +research.md records sources and authored parameters. Final PNG captures are 2112×978 at 704×326 points/3×. Comparison sheets reduce each to native logical dimensions and preserve the same scene. Half-size/grayscale images are diagnostics. No physical-device testing or production art admission occurred. diff --git a/docs/review/field-contrast/adoption-tests.log b/docs/review/field-contrast/adoption-tests.log new file mode 100644 index 00000000..e6e569f0 --- /dev/null +++ b/docs/review/field-contrast/adoption-tests.log @@ -0,0 +1,55 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/4] Write sources +[1/4] Copying contracts +[2/5] Copying SPEC_PIN.txt +[3/5] Write swift-version--58304C5D6DBC2206.txt +[5/7] Compiling SurveillanceCore ContractVersions.swift +[6/7] Emitting module SurveillanceCore +[7/14] Compiling SurveillanceCore RunReceipt.swift +[8/14] Compiling SurveillanceCore ProceduralVFX.swift +[9/14] Compiling SurveillanceCore ReplayEnvelope.swift +[10/14] Compiling SurveillanceCore AssetCatalog.swift +[11/14] Compiling SurveillanceCore ArenaManifest.swift +[12/14] Compiling SurveillanceCore ReleaseCandidateEvidence.swift +[13/14] Compiling SurveillanceCore Simulation.swift +[14/26] Compiling SurveillanceCoreTests ClipMetadataTests.swift +[15/26] Compiling SurveillanceCoreTests ContractVersionsTests.swift +[16/26] Compiling SurveillanceCoreTests ReleaseCandidateEvidenceTests.swift +[17/26] Compiling SurveillanceCoreTests ProceduralVFXTests.swift +[18/26] Compiling SurveillanceCoreTests AssetCatalogTests.swift +[19/27] Compiling SurveillanceCoreTests ReplayTests.swift +[20/27] Compiling SurveillanceCoreTests CameraPlacementTests.swift +[21/27] Compiling SurveillanceCoreTests DailyRunGhostTests.swift +[22/27] Compiling SurveillanceCoreTests ReadabilityFinishTests.swift +[23/27] Emitting module SurveillanceCoreTests +[24/27] Compiling SurveillanceCoreTests AmbientMotionTests.swift +[25/27] Compiling SurveillanceCoreTests ArenaAndSimulationTests.swift +[25/27] Write Objects.LinkFileList +[26/27] Linking SSRuntimePackageTests +Build complete! (24.62s) +Test Suite 'Selected tests' started at 2026-10-14 22:23:57.803. +Test Suite 'SSRuntimePackageTests.xctest' started at 2026-10-14 22:23:57.808. +Test Suite 'SSRuntimePackageTests.xctest' passed at 2026-10-14 22:23:57.808. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds +Test Suite 'Selected tests' passed at 2026-10-14 22:23:57.808. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.005) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite AssetCatalogTests started. +◇ Suite ContractVersionsTests started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test currentIdentityIsCompatible() started. +✔ Test currentIdentityIsCompatible() passed after 0.001 seconds. +◇ Test unknownIdentityFailsClosed() started. +✔ Test unknownIdentityFailsClosed() passed after 0.001 seconds. +✔ Suite ContractVersionsTests passed after 0.001 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 0.273 seconds. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 0.081 seconds. +✔ Suite AssetCatalogTests passed after 0.355 seconds. +✔ Test run with 4 tests in 2 suites passed after 0.355 seconds. diff --git a/docs/review/field-contrast/final/BP004-candidate-integrity-0.png b/docs/review/field-contrast/final/BP004-candidate-integrity-0.png new file mode 100644 index 00000000..900fd5a0 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-candidate-integrity-0.png differ diff --git a/docs/review/field-contrast/final/BP004-candidate-integrity-1.png b/docs/review/field-contrast/final/BP004-candidate-integrity-1.png new file mode 100644 index 00000000..e557cb64 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-candidate-integrity-1.png differ diff --git a/docs/review/field-contrast/final/BP004-candidate-integrity-2.png b/docs/review/field-contrast/final/BP004-candidate-integrity-2.png new file mode 100644 index 00000000..9a406771 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-candidate-integrity-2.png differ diff --git a/docs/review/field-contrast/final/BP004-candidate-integrity-3.png b/docs/review/field-contrast/final/BP004-candidate-integrity-3.png new file mode 100644 index 00000000..231edb35 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-candidate-integrity-3.png differ diff --git a/docs/review/field-contrast/final/BP004-candidate-post-action-records.json b/docs/review/field-contrast/final/BP004-candidate-post-action-records.json new file mode 100644 index 00000000..2f16aa75 --- /dev/null +++ b/docs/review/field-contrast/final/BP004-candidate-post-action-records.json @@ -0,0 +1,330 @@ +[ + { + "actualFrame" : "camera_operational_idle#1", + "displayTime" : 170180.85189775005, + "fieldPresent" : true, + "integrity" : 3, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_operational_idle#3", + "displayTime" : 170181.86869966669, + "fieldPresent" : true, + "integrity" : 3, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#1", + "displayTime" : 170182.08937895836, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#2", + "displayTime" : 170182.15400250003, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#2", + "displayTime" : 170182.21300150003, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_hit#2", + "displayTime" : 170182.23333333337, + "fieldPresent" : true, + "integrity" : 2, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 170182.28826587505, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 170182.31666666671, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 170182.33333333337, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 170182.35000000003, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#1", + "displayTime" : 170182.3666666667, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 170182.38333333336, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 170182.42987008338, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#2", + "displayTime" : 170182.45000000004, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 170182.4666666667, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 170182.48333333337, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 170182.50000000003, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 170182.51666666669, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 170182.53333333338, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_critical_enter#3", + "displayTime" : 170182.55000000005, + "fieldPresent" : true, + "integrity" : 1, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 170182.61587075004, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 170182.63333333336, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 170182.65000000002, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 170182.66666666672, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#1", + "displayTime" : 170182.68333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 170182.70000000004, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 170182.7166666667, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 170182.73333333337, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 170182.75000000003, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#2", + "displayTime" : 170182.76666666669, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 170182.78333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 170182.80000000005, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 170182.81666666671, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 170182.83333333337, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#3", + "displayTime" : 170182.85000000003, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 170182.8666666667, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 170182.88333333336, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 170182.90000000002, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 170182.91666666672, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroy#4", + "displayTime" : 170182.93333333338, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + }, + { + "actualFrame" : "camera_destroyed_idle#2", + "displayTime" : 170182.95000000004, + "fieldPresent" : false, + "integrity" : 0, + "x" : 640, + "y" : 256 + } +] \ No newline at end of file diff --git a/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-0.png b/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-0.png new file mode 100644 index 00000000..e803a5d1 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-0.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-1.png b/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-1.png new file mode 100644 index 00000000..c61027a2 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-1.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-2.png b/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-2.png new file mode 100644 index 00000000..9f000cf9 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-2.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-3.png b/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-3.png new file mode 100644 index 00000000..782415af Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-control-integrity-3.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-0.png b/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-0.png new file mode 100644 index 00000000..e803a5d1 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-0.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-1.png b/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-1.png new file mode 100644 index 00000000..1f6b9a8a Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-1.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-2.png b/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-2.png new file mode 100644 index 00000000..46816140 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-2.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-3.png b/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-3.png new file mode 100644 index 00000000..ce08efd9 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-dark-integrity-3.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-0.png b/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-0.png new file mode 100644 index 00000000..e803a5d1 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-0.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-1.png b/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-1.png new file mode 100644 index 00000000..fcc58503 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-1.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-2.png b/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-2.png new file mode 100644 index 00000000..ac9013ee Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-2.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-3.png b/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-3.png new file mode 100644 index 00000000..80281db5 Binary files /dev/null and b/docs/review/field-contrast/final/BP004-shared-scene-paired-integrity-3.png differ diff --git a/docs/review/field-contrast/final/BP004-shared-scene-record.txt b/docs/review/field-contrast/final/BP004-shared-scene-record.txt new file mode 100644 index 00000000..48857ade --- /dev/null +++ b/docs/review/field-contrast/final/BP004-shared-scene-record.txt @@ -0,0 +1,7 @@ +Actual GameScene/WorldRenderer/HUD; 704x326 logical viewport. Complete camera +candidates use the production integrity policy, with Reduced Motion settled +frames. Painted neutral player and constrained building are review assets. +Explicit composition placements; not a legal encounter or animation capture. +Geometry mapping and player locomotion remain unaccepted. Native frame scale +must be read from the exported pixel dimensions. Camera texture filtering is +nearest; other high-resolution composition sources use linear filtering. \ No newline at end of file diff --git a/docs/review/field-contrast/final/comparison-grayscale.png b/docs/review/field-contrast/final/comparison-grayscale.png new file mode 100644 index 00000000..e652aa59 Binary files /dev/null and b/docs/review/field-contrast/final/comparison-grayscale.png differ diff --git a/docs/review/field-contrast/final/comparison-half.png b/docs/review/field-contrast/final/comparison-half.png new file mode 100644 index 00000000..952198d5 Binary files /dev/null and b/docs/review/field-contrast/final/comparison-half.png differ diff --git a/docs/review/field-contrast/final/comparison-native.png b/docs/review/field-contrast/final/comparison-native.png new file mode 100644 index 00000000..263fcc73 Binary files /dev/null and b/docs/review/field-contrast/final/comparison-native.png differ diff --git a/docs/review/field-contrast/final/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json b/docs/review/field-contrast/final/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json new file mode 100644 index 00000000..221ea850 --- /dev/null +++ b/docs/review/field-contrast/final/completeCameraCandidatesUseShippingIntegrityPolicy-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.7399568557739258" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "completeCameraCandidatesUseShippingIntegrityPolicy()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/final/criticalIntegrityWinsOverTransientHitClip-summary.json b/docs/review/field-contrast/final/criticalIntegrityWinsOverTransientHitClip-summary.json new file mode 100644 index 00000000..182e52f0 --- /dev/null +++ b/docs/review/field-contrast/final/criticalIntegrityWinsOverTransientHitClip-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "1.0525200366973877" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/criticalIntegrityWinsOverTransientHitClip()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/criticalIntegrityWinsOverTransientHitClip()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "criticalIntegrityWinsOverTransientHitClip()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/final/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json b/docs/review/field-contrast/final/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json new file mode 100644 index 00000000..c222db23 --- /dev/null +++ b/docs/review/field-contrast/final/destructionSurvivesNextSnapshotAndDropsFieldImmediately-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.7461860179901123" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "destructionSurvivesNextSnapshotAndDropsFieldImmediately()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/final/fieldContrastCandidatesRetainClippedPathsAndClearWithFields-summary.json b/docs/review/field-contrast/final/fieldContrastCandidatesRetainClippedPathsAndClearWithFields-summary.json new file mode 100644 index 00000000..40752be6 --- /dev/null +++ b/docs/review/field-contrast/final/fieldContrastCandidatesRetainClippedPathsAndClearWithFields-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.6914119720458984" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/fieldContrastCandidatesRetainClippedPathsAndClearWithFields()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/fieldContrastCandidatesRetainClippedPathsAndClearWithFields()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "fieldContrastCandidatesRetainClippedPathsAndClearWithFields()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/final/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json b/docs/review/field-contrast/final/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json new file mode 100644 index 00000000..442f2f32 --- /dev/null +++ b/docs/review/field-contrast/final/incompleteCameraCandidateFamilyCannotReplaceTextures-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.3019709587097168" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "incompleteCameraCandidateFamilyCannotReplaceTextures()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/final/manifest.json b/docs/review/field-contrast/final/manifest.json new file mode 100644 index 00000000..8f817df5 --- /dev/null +++ b/docs/review/field-contrast/final/manifest.json @@ -0,0 +1,110 @@ +[ + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-control-integrity-3", + "uti": "public.png", + "path": "BP004-shared-scene-control-integrity-3.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-control-integrity-2", + "uti": "public.png", + "path": "BP004-shared-scene-control-integrity-2.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-control-integrity-1", + "uti": "public.png", + "path": "BP004-shared-scene-control-integrity-1.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-control-integrity-0", + "uti": "public.png", + "path": "BP004-shared-scene-control-integrity-0.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-dark-integrity-3", + "uti": "public.png", + "path": "BP004-shared-scene-dark-integrity-3.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-dark-integrity-2", + "uti": "public.png", + "path": "BP004-shared-scene-dark-integrity-2.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-dark-integrity-1", + "uti": "public.png", + "path": "BP004-shared-scene-dark-integrity-1.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-dark-integrity-0", + "uti": "public.png", + "path": "BP004-shared-scene-dark-integrity-0.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-paired-integrity-3", + "uti": "public.png", + "path": "BP004-shared-scene-paired-integrity-3.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-paired-integrity-2", + "uti": "public.png", + "path": "BP004-shared-scene-paired-integrity-2.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-paired-integrity-1", + "uti": "public.png", + "path": "BP004-shared-scene-paired-integrity-1.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-paired-integrity-0", + "uti": "public.png", + "path": "BP004-shared-scene-paired-integrity-0.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()", + "name": "BP004-shared-scene-record", + "uti": "public.plain-text", + "path": "BP004-shared-scene-record.txt" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-3", + "uti": "public.png", + "path": "BP004-candidate-integrity-3.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-2", + "uti": "public.png", + "path": "BP004-candidate-integrity-2.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-1", + "uti": "public.png", + "path": "BP004-candidate-integrity-1.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-integrity-0", + "uti": "public.png", + "path": "BP004-candidate-integrity-0.png" + }, + { + "test": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()", + "name": "BP004-candidate-post-action-records", + "uti": "public.json", + "path": "BP004-candidate-post-action-records.json" + } +] diff --git a/docs/review/field-contrast/final/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json b/docs/review/field-contrast/final/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json new file mode 100644 index 00000000..702b4691 --- /dev/null +++ b/docs/review/field-contrast/final/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "0.7643458843231201" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "newerIntegrityCancelsOlderResponseWithoutRecreatingTheNode()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/final/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json b/docs/review/field-contrast/final/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json new file mode 100644 index 00000000..350281e6 --- /dev/null +++ b/docs/review/field-contrast/final/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse-summary.json @@ -0,0 +1,41 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "1.0938291549682617" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CameraPlaybackTests/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/CameraPlaybackTests/reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "reducedMotionImmediatelySettlesEveryIntegrityAndCancelsRunningResponse()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/final/result.json b/docs/review/field-contrast/final/result.json new file mode 100644 index 00000000..0f7e825e --- /dev/null +++ b/docs/review/field-contrast/final/result.json @@ -0,0 +1,608 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~9KSjolt1Xk8xYuQhpT0Pl85pVNwB3AudeXtYmqPaGDzjHl1VsNPOeEs7dMJGyp3CScq924swQvoJykqhj6FO-w==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~BcGbntzOqWwQnf85BiwVv_IVE65N5RpoFee82Ue1R3ecazYBv21BX23Tyi2ONCrJ1yNFYe3AVXLMgdKaiLTd6Q==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "105" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~OhYzlfm2gZBHi9qV6EQT6uSWiB4pK-uOoRYWlNw4os-91JQlUqh2zMfFpKwVFc1AXTwX0gdy1wz0--Pv5IiUVA==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~PzA3BvUdOgf74Xcm-_TJX6RjDcisjG1uVCZBDJWx_WhXijgNImJ06yyMZzFXkkWnIEF2D5gE_GnqyuqtV3XZgQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:33:50.853-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:30:42.217-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~RaLnAIckONR-IeBydflAqBD4k3iFGsGOwO6YZh6I-rwI7UIKmPFg2cuzY5_sFv2VAIje_y9q1OEpL9pgO5I5Qw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "105" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/field-contrast/final/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json b/docs/review/field-contrast/final/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json new file mode 100644 index 00000000..06a6ed31 --- /dev/null +++ b/docs/review/field-contrast/final/testCameraCandidatesActuallyPlayAndSettleInPresentedScene-summary.json @@ -0,0 +1,664 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "activitySummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-3_0_74B0D6DD-B2A4-4D4E-8FA9-127B13A260C1.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-3" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~QlG2ytoBubuaH8nrulBrvY0K94cJgeNH_GWSuo5RHkMTorXdzrlafz1_O-JWtbl6H0pkj_Z9e3zZL6VzZq48AA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "38127" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.914-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "2DA50AB6-6255-4CC5-8AFC-0DC9F0B5336E" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.915-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.914-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-3'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "74B0D6DD-B2A4-4D4E-8FA9-127B13A260C1" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-2_0_6951B094-929A-4F4B-B7DE-7945B9368AB0.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-2" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~pvGRTNDixVd4G0syvxjJ1leZhT5jb1VLlwBzvp2GAww4yD2iiUwgtsTWJLFH04jTyUGD73gD5iJVoe8dss-xYw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "38688" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.918-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "BDDDCE1C-0F13-467E-BBF2-95C8CF9A0295" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.919-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.918-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-2'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "6951B094-929A-4F4B-B7DE-7945B9368AB0" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-1_0_30AF5AAB-6647-449D-8311-CF643DC71C66.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-1" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~EfygaFbTxjXKS4ovAUqiSLSSXEmxTAjCC393basqmOM9xJKw96wcCY85u55zYloX3AJUWDybGCWaGUQ6hN1vkQ==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "40165" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.922-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "00F279AE-863A-4D25-87DF-68868DD24D86" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.923-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.922-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-1'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "30AF5AAB-6647-449D-8311-CF643DC71C66" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-0_0_0C312304-C5E6-4A41-A191-0E911DDA7AC0.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-integrity-0" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~mxIgaoPR0Ak_MMKAm-pnHtequhOuBEqRE86C3oDmurf5U3IeMquex4egG3EmmeKYlypg4VTsR_Cf4gPEF3QIkg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "40501" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.926-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "763AFF5F-FAA3-43EB-BB35-2625F961CCA3" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.927-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.926-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-integrity-0'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "0C312304-C5E6-4A41-A191-0E911DDA7AC0" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-post-action-records_0_4CDA906C-A5B5-4064-BF61-E060E40C967D.json" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-candidate-post-action-records" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~n4tc2CMAJCmbKj1V1z47j3JuA16PmM-UH8ITGAthfHHBDUso4AcAS8qSPXaDftaV6vcSLIdwnF1wPU3mDjfOQg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "6932" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.929-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.json" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "DA8D48A7-9EEF-42F0-B143-CC089E660125" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.930-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:32:56.929-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-candidate-post-action-records'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "4CDA906C-A5B5-4064-BF61-E060E40C967D" + } + } + ] + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "2.206212043762207" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testCameraCandidatesActuallyPlayAndSettleInPresentedScene" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "testCameraCandidatesActuallyPlayAndSettleInPresentedScene()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/final/testCaptureCompleteCameraCandidatesInSharedScene-summary.json b/docs/review/field-contrast/final/testCaptureCompleteCameraCandidatesInSharedScene-summary.json new file mode 100644 index 00000000..a53e4f0d --- /dev/null +++ b/docs/review/field-contrast/final/testCaptureCompleteCameraCandidatesInSharedScene-summary.json @@ -0,0 +1,1696 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "activitySummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-control-integrity-3_0_72E0BB31-B333-404F-B8CD-16C7C954B492.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-control-integrity-3" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~x9Fw_Cc61p2k1XIOY2vxT0t65o2SCTMe-1Jf2iQsxiHUHCq5WhrFLH3nlB1GQI37lfn9SBs9GHsMjlEf02-LEg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1217883" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:39.285-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "762C50BB-4994-418F-A29C-E87CCDCE8E98" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:39.290-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:39.286-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-control-integrity-3'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "72E0BB31-B333-404F-B8CD-16C7C954B492" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-control-integrity-2_0_5448A6AD-6BAE-47D5-8F51-9D64328C5FB6.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-control-integrity-2" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~NKjL5eMmVmIu8hNQ13LjjY_Cxvf_Yds380kfQw-u20tNqncr8f9mWabcFpQbMJPoTZ1ZYnxJqaFnjazbwwPmmA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1218468" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:39.683-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "3C92AC20-8C54-495E-9E06-CE1C34AFF748" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:39.684-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:39.683-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-control-integrity-2'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "5448A6AD-6BAE-47D5-8F51-9D64328C5FB6" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-control-integrity-1_0_286B2850-B785-46CE-8D5C-5D8B62EE32D0.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-control-integrity-1" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~Xy-ZCh2wQQ7m9F6r5Wv7WMGHbq8JKFOX8wEJ4_uk2HTnzaMROiXpC79IEAdcFnp8SrBbAqLrEkl8dBFUcXE2QQ==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1219721" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.025-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "5975A7A6-FCAA-41FE-AEEF-D68D55D71C38" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.027-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.026-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-control-integrity-1'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "286B2850-B785-46CE-8D5C-5D8B62EE32D0" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-control-integrity-0_0_2E01810B-C67D-4997-93A8-40129D00F403.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-control-integrity-0" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~E8z15k9atC1xE88F_HlMTqZ1vcL9FBnL8e2GIXXNrC9dzPkpF9nU1lEI8a2riUrp53iCms-kUhePpHPhIPnAqw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1201918" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.375-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "4B428DAA-EBCA-4621-8359-27B3927E56E8" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.377-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.376-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-control-integrity-0'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "2E01810B-C67D-4997-93A8-40129D00F403" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-dark-integrity-3_0_DF6DEDA9-C04F-42C3-87DF-FD25326060C4.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-dark-integrity-3" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~Jw5Oq13QcL5zXK4izg34V53RRRbJlhQhXQEJSSamr1Aw4Au86KEqYHZEQlqsgSz9CxTpi-pudQcaGG-vXNJSJA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1236534" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.711-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "55F565B7-51ED-481B-85BC-82CE7232134A" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.712-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:40.711-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-dark-integrity-3'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "DF6DEDA9-C04F-42C3-87DF-FD25326060C4" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-dark-integrity-2_0_FB358F07-702C-4E9C-A5B7-E4296C76A1C4.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-dark-integrity-2" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~eyKZC-p0NthOWSzeP5hZwE7hgA6W137qhkqjpBmoRvz-9XL_2RXUJmKQjnUmjE2lG85DMqesSzzhHvNp0WbGmg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1237050" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.022-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "D5266E3B-19CC-4DF7-B923-68D924DCD300" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.023-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.022-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-dark-integrity-2'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "FB358F07-702C-4E9C-A5B7-E4296C76A1C4" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-dark-integrity-1_0_9793CE31-7507-45CD-B0E4-12AE99358D34.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-dark-integrity-1" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~XdBgN65hCQvcwHkInIBx-03sVhzKMnFJdWlYvYQjKfKSls10OoF-RKWpz8oRRrHaAVu7zC63K256Nrs3LiU8cw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1238297" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.388-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "B337ABA4-C617-493B-A77D-2CF53372E419" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.390-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.389-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-dark-integrity-1'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "9793CE31-7507-45CD-B0E4-12AE99358D34" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-dark-integrity-0_0_0B03ECDD-71F6-4D01-B9B9-1908F88A236F.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-dark-integrity-0" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~E8z15k9atC1xE88F_HlMTqZ1vcL9FBnL8e2GIXXNrC9dzPkpF9nU1lEI8a2riUrp53iCms-kUhePpHPhIPnAqw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1201918" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.709-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "C92D5725-9D78-4BF5-B589-E507904621C4" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.710-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:41.710-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-dark-integrity-0'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "0B03ECDD-71F6-4D01-B9B9-1908F88A236F" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-paired-integrity-3_0_57B8FD60-2711-40FD-B6A6-73F06F7318A3.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-paired-integrity-3" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~E3cmij6-kUmekcMsbtqLRzvFBFxvYf2r5fC29M1pDoQUAWw8gwdDcTWS0Gq08HNTW1dUAsb18Na1nEJ8z5DBUw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1253911" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.127-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "7320D35B-DF3F-4C80-8326-51FE3F4CAE01" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.129-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.128-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-paired-integrity-3'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "57B8FD60-2711-40FD-B6A6-73F06F7318A3" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-paired-integrity-2_0_BD566D7B-7381-41EC-B7A7-4052C08063A9.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-paired-integrity-2" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~DKfgu79ibLYxXAl0aZX9xtKa1UB0ctb5uKg6jpb3OWRiV1s2cIDPzOInuOybQnZ3Eib8YE97eYa3dhnanAfUZQ==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1254464" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.504-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "232DB086-D6E6-4B8F-8578-1E973D7B8102" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.505-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.504-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-paired-integrity-2'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "BD566D7B-7381-41EC-B7A7-4052C08063A9" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-paired-integrity-1_0_D81FD381-4C3F-4C66-9019-AAFD85E5509C.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-paired-integrity-1" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~QDxq5cEyqOSH8NWUoz8XJkjih0c6wD-XX4bQCSHIo0QqlDObs4W2ZVVtnSaGJTcpjut9tPzylMDh8A6lTCRCTw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1255617" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.780-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "296887B5-CA94-4BD4-A66F-8F237DB224E1" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.781-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:42.781-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-paired-integrity-1'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "D81FD381-4C3F-4C66-9019-AAFD85E5509C" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-paired-integrity-0_0_E1DF4188-6942-45E1-8DC1-010EFAA4838B.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-paired-integrity-0" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~E8z15k9atC1xE88F_HlMTqZ1vcL9FBnL8e2GIXXNrC9dzPkpF9nU1lEI8a2riUrp53iCms-kUhePpHPhIPnAqw==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "1201918" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:43.113-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "D654197F-86EF-4E13-A923-C3E387FC89EA" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:43.114-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:43.113-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-paired-integrity-0'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "E1DF4188-6942-45E1-8DC1-010EFAA4838B" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-record_0_1636D642-CD37-4B95-930B-A110FDA60E98.txt" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP004-shared-scene-record" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~TEOz_x80XOMcp5XsgQ5UuIBaXaDfI01H9_XJcpZtrH9U42QERSIFy8X5jOpMAGKnZZ2F7bTG1gtBy9OmTN1Qew==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "532" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:43.115-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.plain-text" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "A2FBC136-C3FD-4E56-96DA-575D0F7955DD" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:43.116-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:31:43.115-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP004-shared-scene-record'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "1636D642-CD37-4B95-930B-A110FDA60E98" + } + } + ] + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "8.292657971382141" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/BenchmarkCaptureTests/testCaptureCompleteCameraCandidatesInSharedScene" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "testCaptureCompleteCameraCandidatesInSharedScene()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/field-contrast/initial-failed-result.json b/docs/review/field-contrast/initial-failed-result.json new file mode 100644 index 00000000..8f819877 --- /dev/null +++ b/docs/review/field-contrast/initial-failed-result.json @@ -0,0 +1,720 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~vDWLANYxSUIVEnLUKuRbQPKUykArvIlch_5ic5KDRrx2QfJv5UqaIqQEpSosQ55SfAKL2CxJLH3GWkTXIcTYFg==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "testFailureSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "TestFailureIssueSummary", + "_supertype": { + "_name": "IssueSummary" + } + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/AppTests/DisplayedPlaybackTests.swift#EndingLineNumber=250&StartingLineNumber=250" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Uncategorized" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "XCTAssertGreaterThan failed: (\"1\") is not greater than (\"1\")" + }, + "testCaseName": { + "_type": { + "_name": "String" + }, + "_value": "DisplayedPlaybackTests.testCameraCandidatesActuallyPlayAndSettleInPresentedScene()" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~Wm0ZxxnsVg3Zako0kJdjjoRwfahmHu9dWEPwP-MplqE_ACGGi_vsFdARVgLK0EW586h3YTRgUgP10IfG9uWVvQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "105" + }, + "testsFailedCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "failed" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~0cS4Tfiv8017vX_TAVhLc1NmCT8Ly_0nNrMw7QJwf_hoouHkxY-foFY1zPFa_BePPL52T8sGOR2wcxnzAJnlXg==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~omRYLhSUqoHCY_QoDWkU8Xm5p0v6dH2oXQ-Aumzmjf4vghaw5hOhKvFK6S1zwuS_5EPdw6ZcyM_hk-grNYM4Uw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:29:30.314-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:26:12.041-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "testFailureSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "TestFailureIssueSummary", + "_supertype": { + "_name": "IssueSummary" + } + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/AppTests/DisplayedPlaybackTests.swift#EndingLineNumber=250&StartingLineNumber=250" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Uncategorized" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "XCTAssertGreaterThan failed: (\"1\") is not greater than (\"1\")" + }, + "testCaseName": { + "_type": { + "_name": "String" + }, + "_value": "DisplayedPlaybackTests.testCameraCandidatesActuallyPlayAndSettleInPresentedScene()" + } + } + ] + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~I6TzmVc-5mdvadvTcRnbd3Qfd6arWUXnGJ4eLT2An7r6lS1N6wA9TOq9GP2bg2CXhGxFzJkOwViPKERe0DkA0w==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "105" + }, + "testsFailedCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/field-contrast/parity.txt b/docs/review/field-contrast/parity.txt new file mode 100644 index 00000000..ed935feb --- /dev/null +++ b/docs/review/field-contrast/parity.txt @@ -0,0 +1 @@ +PASS: 22 bundled JSON contracts/fixtures match exact local SS-specs commit d859658dc4029a3453c247c9b0d792229c1130fc; only documented asset catalog specificationCommit difference. Remote CI parity not claimed. diff --git a/docs/review/field-contrast/research.md b/docs/review/field-contrast/research.md new file mode 100644 index 00000000..7501adb9 --- /dev/null +++ b/docs/review/field-contrast/research.md @@ -0,0 +1,14 @@ +# Camera field contrast research and comparison + +Specification: SS-specs d859658dc4029a3453c247c9b0d792229c1130fc, BP-001/BP-010, D-104 / T1045–T1046. The accepted visual-coherence intent covers this repair; no new gameplay or setting is introduced. + +Observed baseline: ecac1ef shared-scene grayscale captures lose much of the pale field fill against paving. Geometry tests do not establish visibility. + +Primary guidance checked 2026-10-14: +- Microsoft XAG 102: https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/102 supports borders and discusses dark/light outline examples for cues on changing backdrops. +- Microsoft XAG 103: https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/103 calls for non-colour signifiers and distinguishes simulated filters from user testing. +- W3C G209: https://www.w3.org/WAI/WCAG21/Techniques/general/G209 describes contrasting boundaries between adjoining graphical regions. Its web criterion is not adopted as a blanket game-playability score. + +Authored comparison parameters: control retains existing field fill and clear stroke; dark uses gray 0.08 at width 1.5 logical world units; paired uses gray 0.08 at width 3 with gray 0.95 at width 1 on the same clipped path. These are candidate parameters, not research-derived constants or approved production values. Solid-clipped paths, origin, heading, fills and authority stay fixed. Shape thickness extends around the centreline visually and does not expand the simulation field. + +Review-only controls are excluded from Release. Both standard and Captain paths use the helper, and field removal deletes child contours with their parent. Tests exercise exact path equality, reuse, no child growth, restoration to control, destruction and reset. Quiet shared-scene captures compare all three styles at all four standard-camera integrity states with the actual GameScene/HUD. Further backdrop/encounter/motion-mode evidence remains required before selection. diff --git a/docs/review/field-encounter/BP010-field-encounter-commands-seed-1.json b/docs/review/field-encounter/BP010-field-encounter-commands-seed-1.json new file mode 100644 index 00000000..fdb5e5dc --- /dev/null +++ b/docs/review/field-encounter/BP010-field-encounter-commands-seed-1.json @@ -0,0 +1 @@ +{"replaySchemaVersion":"runtime-kernel-001","ticks":461,"seed":1,"arenaVersion":"civic-seam-arena-004","commands":[{"x":32767,"y":0,"t":1,"d":false},{"x":32767,"y":0,"t":2,"d":false},{"x":32767,"y":0,"t":3,"d":false},{"x":32767,"y":0,"t":4,"d":false},{"x":32767,"y":0,"t":5,"d":false},{"x":32767,"y":0,"t":6,"d":false},{"x":32767,"y":0,"t":7,"d":false},{"x":32767,"y":0,"t":8,"d":false},{"x":32767,"y":0,"t":9,"d":false},{"x":32767,"y":0,"t":10,"d":false},{"x":32767,"y":0,"t":11,"d":false},{"x":32767,"y":0,"t":12,"d":false},{"x":32767,"y":0,"t":13,"d":false},{"x":32767,"y":0,"t":14,"d":false},{"x":32767,"y":0,"t":15,"d":false},{"x":32767,"y":0,"t":16,"d":false},{"x":32767,"y":0,"t":17,"d":false},{"x":32767,"y":0,"t":18,"d":false},{"x":32767,"d":false,"y":0,"t":19},{"x":32767,"d":false,"y":0,"t":20},{"x":32767,"d":false,"y":0,"t":21},{"x":32767,"d":false,"y":0,"t":22},{"x":32767,"d":false,"y":0,"t":23},{"x":32767,"d":false,"y":0,"t":24},{"x":32767,"d":false,"y":0,"t":25},{"x":32767,"d":false,"y":0,"t":26},{"x":32767,"d":false,"y":0,"t":27},{"x":32767,"d":false,"y":0,"t":28},{"x":32767,"d":false,"y":0,"t":29},{"x":32767,"d":false,"y":0,"t":30},{"x":32767,"d":false,"y":0,"t":31},{"x":32767,"d":false,"y":0,"t":32},{"x":32767,"d":false,"y":0,"t":33},{"x":32767,"d":false,"y":0,"t":34},{"x":32767,"d":false,"y":0,"t":35},{"x":32767,"d":false,"y":0,"t":36},{"x":29308,"d":false,"y":14654,"t":37},{"x":29104,"d":false,"y":15054,"t":38},{"x":29071,"d":false,"y":15117,"t":39},{"x":29308,"d":false,"y":14654,"t":40},{"x":29308,"d":false,"y":14654,"t":41},{"x":26315,"d":false,"y":19524,"t":42},{"x":25865,"d":false,"y":20117,"t":43},{"x":25691,"d":false,"y":20339,"t":44},{"x":26064,"d":false,"y":19858,"t":45},{"x":25865,"d":false,"y":20117,"t":46},{"x":26423,"d":false,"y":19377,"t":47},{"x":24442,"d":false,"y":21823,"t":48},{"x":24599,"d":false,"y":21647,"t":49},{"x":24246,"d":false,"y":22041,"t":50},{"x":24419,"d":false,"y":21849,"t":51},{"x":24660,"d":false,"y":21577,"t":52},{"x":24077,"d":false,"y":22225,"t":53},{"x":23620,"d":false,"y":22711,"t":54},{"d":false,"x":23679,"y":22649,"t":55},{"d":false,"x":23756,"y":22568,"t":56},{"d":false,"x":23170,"y":23170,"t":57},{"d":false,"x":23170,"y":23170,"t":58},{"d":false,"x":23170,"y":23170,"t":59},{"d":false,"x":24490,"y":21769,"t":60},{"d":false,"x":25172,"y":20977,"t":61},{"d":false,"x":32321,"y":5387,"t":62},{"d":false,"x":32480,"y":4331,"t":63},{"d":false,"x":32238,"y":5862,"t":64},{"d":false,"x":7741,"y":-31840,"t":65},{"d":false,"x":8461,"y":-31656,"t":66},{"d":false,"x":9040,"y":-31495,"t":67},{"d":false,"x":9636,"y":31318,"t":68},{"d":false,"x":9429,"y":-31381,"t":69},{"d":false,"x":10141,"y":-31158,"t":70},{"d":false,"x":10668,"y":-30982,"t":71},{"d":false,"x":11361,"y":-30734,"t":72},{"d":false,"x":12094,"y":-30453,"t":73},{"d":false,"x":-4634,"y":32438,"t":74},{"d":false,"x":12395,"y":-30332,"t":75},{"d":false,"x":-5967,"y":32219,"t":76},{"d":false,"x":-5614,"y":32282,"t":77},{"d":false,"x":12144,"y":-30433,"t":78},{"d":false,"x":12820,"y":-30155,"t":79},{"d":false,"x":-8223,"y":31718,"t":80},{"d":false,"x":12943,"y":-30103,"t":81},{"d":false,"x":13526,"y":-29845,"t":82},{"d":false,"x":13995,"y":-29628,"t":83},{"d":false,"x":14594,"y":-29338,"t":84},{"d":false,"x":15136,"y":-29062,"t":85},{"d":false,"x":15626,"y":-28801,"t":86},{"d":false,"x":16123,"y":-28526,"t":87},{"d":false,"x":16627,"y":-28235,"t":88},{"d":false,"x":17253,"y":-27857,"t":89},{"d":false,"x":17768,"y":-27532,"t":90},{"x":18176,"d":false,"y":-27264,"t":91},{"x":18890,"d":false,"y":-26774,"t":92},{"x":19312,"d":false,"y":-26471,"t":93},{"x":19848,"d":false,"y":-26072,"t":94},{"x":20365,"d":false,"y":-25670,"t":95},{"x":20909,"d":false,"y":-25229,"t":96},{"x":21540,"d":false,"y":-24692,"t":97},{"x":22085,"d":false,"y":-24206,"t":98},{"x":22441,"d":false,"y":-23877,"t":99},{"x":-23170,"d":false,"y":-23170,"t":100},{"x":23079,"d":false,"y":-23260,"t":101},{"x":-23170,"d":false,"y":-23170,"t":102},{"x":23529,"d":false,"y":-22805,"t":103},{"x":-23170,"d":false,"y":-23170,"t":104},{"x":24056,"d":false,"y":-22248,"t":105},{"x":-23170,"d":false,"y":-23170,"t":106},{"x":-23170,"d":false,"y":-23170,"t":107},{"x":24400,"d":false,"y":-21870,"t":108},{"x":-23170,"d":false,"y":-23170,"t":109},{"x":24917,"d":false,"y":-21280,"t":110},{"x":-23170,"d":false,"y":-23170,"t":111},{"x":-23170,"d":false,"y":-23170,"t":112},{"x":25320,"d":false,"y":-20799,"t":113},{"x":-23170,"d":false,"y":-23170,"t":114},{"x":25658,"d":false,"y":-20380,"t":115},{"x":-23170,"d":false,"y":-23170,"t":116},{"x":-23170,"d":false,"y":-23170,"t":117},{"x":26039,"d":false,"y":-19891,"t":118},{"x":-23170,"d":false,"y":-23170,"t":119},{"x":26366,"d":false,"y":-19456,"t":120},{"x":-23170,"d":false,"y":-23170,"t":121},{"x":26749,"d":false,"y":-18925,"t":122},{"x":-23170,"d":false,"y":-23170,"t":123},{"x":-23170,"d":false,"y":-23170,"t":124},{"x":27038,"d":false,"y":-18510,"t":125},{"x":-23170,"d":false,"y":-23170,"t":126},{"t":127,"x":27264,"y":-18176,"d":false},{"t":128,"x":-23170,"y":-23170,"d":false},{"t":129,"x":-23170,"y":-23170,"d":false},{"t":130,"x":27539,"y":-17756,"d":false},{"t":131,"x":-23170,"y":-23170,"d":false},{"t":132,"x":-23170,"y":-23170,"d":false},{"t":133,"x":27756,"y":-17415,"d":false},{"t":134,"x":-23170,"y":-23170,"d":false},{"t":135,"x":27968,"y":-17072,"d":false},{"t":136,"x":-23170,"y":-23170,"d":false},{"t":137,"x":-23170,"y":-23170,"d":false},{"t":138,"x":28177,"y":-16725,"d":false},{"t":139,"x":-23170,"y":-23170,"d":false},{"t":140,"x":-23170,"y":-23170,"d":false},{"t":141,"x":28427,"y":-16296,"d":false},{"t":142,"x":-23170,"y":-23170,"d":false},{"t":143,"x":28703,"y":-15805,"d":false},{"t":144,"x":-23170,"y":-23170,"d":false},{"t":145,"x":-23170,"y":-23170,"d":false},{"t":146,"x":28745,"y":-15729,"d":false},{"t":147,"x":-23170,"y":-23170,"d":false},{"t":148,"x":-23170,"y":-23170,"d":false},{"t":149,"x":28937,"y":-15373,"d":false},{"t":150,"x":-32767,"y":0,"d":false},{"t":151,"x":-32767,"y":0,"d":false},{"t":152,"x":-32767,"y":0,"d":false},{"t":153,"x":-32767,"y":0,"d":false},{"t":154,"x":-32767,"y":0,"d":false},{"t":155,"x":-32767,"y":0,"d":false},{"t":156,"x":-32767,"y":0,"d":false},{"t":157,"x":-32767,"y":0,"d":false},{"t":158,"x":-32767,"y":0,"d":false},{"t":159,"x":-32767,"y":0,"d":false},{"t":160,"x":-32767,"y":0,"d":false},{"t":161,"x":-32767,"y":0,"d":false},{"t":162,"x":27748,"y":-17427,"d":false},{"x":27909,"d":false,"t":163,"y":-17168},{"x":28105,"d":false,"t":164,"y":-16846},{"x":28260,"d":false,"t":165,"y":-16584},{"x":28450,"d":false,"t":166,"y":-16257},{"x":-28599,"d":false,"t":167,"y":15992},{"x":-28408,"d":false,"t":168,"y":16330},{"x":-28269,"d":false,"t":169,"y":16569},{"x":-28090,"d":false,"t":170,"y":16871},{"x":-27906,"d":false,"t":171,"y":17173},{"x":-27757,"d":false,"t":172,"y":17413},{"x":-27540,"d":false,"t":173,"y":17754},{"x":-27317,"d":false,"t":174,"y":18095},{"x":-27156,"d":false,"t":175,"y":18337},{"x":-26950,"d":false,"t":176,"y":18638},{"x":-26782,"d":false,"t":177,"y":18879},{"x":-26580,"d":false,"t":178,"y":19162},{"x":-26330,"d":false,"t":179,"y":19504},{"x":-26107,"d":false,"t":180,"y":19802},{"x":-25889,"d":false,"t":181,"y":20086},{"x":-25700,"d":false,"t":182,"y":20327},{"x":-25472,"d":false,"t":183,"y":20612},{"x":-25276,"d":false,"t":184,"y":20852},{"x":-25038,"d":false,"t":185,"y":21137},{"x":-24834,"d":false,"t":186,"y":21377},{"x":-24586,"d":false,"t":187,"y":21661},{"x":-24287,"d":false,"t":188,"y":21996},{"x":-24070,"d":false,"t":189,"y":22233},{"x":-23807,"d":false,"t":190,"y":22515},{"x":-23537,"d":false,"t":191,"y":22796},{"x":-23309,"d":false,"t":192,"y":23030},{"x":-23029,"d":false,"t":193,"y":23309},{"x":-22745,"d":false,"t":194,"y":23587},{"x":-22454,"d":false,"t":195,"y":23864},{"x":-22206,"d":false,"t":196,"y":24095},{"x":-21904,"d":false,"t":197,"y":24370},{"x":-21597,"d":false,"t":198,"y":24642},{"d":false,"t":199,"y":24831,"x":-21380},{"d":false,"t":200,"y":25101,"x":-21062},{"d":false,"t":201,"y":25369,"x":-20739},{"d":false,"t":202,"y":25596,"x":-20458},{"d":false,"t":203,"y":25812,"x":-20184},{"d":false,"t":204,"y":26037,"x":-19893},{"d":false,"t":205,"y":26261,"x":-19597},{"d":false,"t":206,"y":26564,"x":-19185},{"d":false,"t":207,"y":26783,"x":-18877},{"d":false,"t":208,"y":26969,"x":-18610},{"d":false,"t":209,"y":27172,"x":-18313},{"d":false,"t":210,"y":27432,"x":-17921},{"d":false,"t":211,"y":27644,"x":-17592},{"d":false,"t":212,"y":27899,"x":-17184},{"d":false,"t":213,"y":28062,"x":-16918},{"d":false,"t":214,"y":28240,"x":-16618},{"d":false,"t":215,"y":28512,"x":-16147},{"d":false,"t":216,"y":28644,"x":-15913},{"d":false,"t":217,"y":28883,"x":-15473},{"d":false,"t":218,"y":29054,"x":-15150},{"d":false,"t":219,"y":29245,"x":-14779},{"d":false,"t":220,"y":29432,"x":-14403},{"d":false,"t":221,"y":29655,"x":-13937},{"d":false,"t":222,"y":29797,"x":-13631},{"d":false,"t":223,"y":29973,"x":-13239},{"d":false,"t":224,"y":30145,"x":-12843},{"d":false,"t":225,"y":30334,"x":-12390},{"d":false,"t":226,"y":30446,"x":-12114},{"d":false,"t":227,"y":30627,"x":-11647},{"d":false,"t":228,"y":30782,"x":-11233},{"d":false,"t":229,"y":30941,"x":-10786},{"d":false,"t":230,"y":31042,"x":-10493},{"d":false,"t":231,"y":31214,"x":-9967},{"d":false,"t":232,"y":31330,"x":-9598},{"d":false,"t":233,"y":31451,"x":-9192},{"d":false,"t":234,"y":31597,"x":-8678},{"t":235,"x":-8394,"y":31674,"d":false},{"t":236,"x":-7974,"y":31782,"d":false},{"t":237,"x":-7442,"y":31911,"d":false},{"t":238,"x":-7036,"y":32003,"d":false},{"t":239,"x":-6601,"y":32095,"d":false},{"t":240,"x":-6073,"y":32199,"d":false},{"t":241,"x":-5629,"y":32280,"d":false},{"t":242,"x":-5199,"y":32352,"d":false},{"t":243,"x":-4764,"y":32419,"d":false},{"t":244,"x":-4323,"y":32481,"d":false},{"t":245,"x":-3760,"y":32551,"d":false},{"t":246,"x":-3307,"y":32600,"d":false},{"t":247,"x":-2839,"y":32644,"d":false},{"t":248,"x":-2385,"y":32680,"d":false},{"t":249,"x":-1917,"y":32711,"d":false},{"t":250,"x":-1439,"y":32735,"d":false},{"t":251,"x":-967,"y":32753,"d":false},{"t":252,"x":-485,"y":32763,"d":false},{"t":253,"x":0,"y":32767,"d":false},{"t":254,"x":491,"y":32763,"d":false},{"t":255,"x":985,"y":32752,"d":false},{"t":256,"x":1488,"y":32733,"d":false},{"t":257,"x":1990,"y":32707,"d":false},{"t":258,"x":2513,"y":32670,"d":false},{"t":259,"x":3023,"y":32627,"d":false},{"t":260,"x":3535,"y":32576,"d":false},{"t":261,"x":3829,"y":32543,"d":false},{"t":262,"x":4347,"y":32477,"d":false},{"t":263,"x":4905,"y":32398,"d":false},{"t":264,"x":5429,"y":32314,"d":false},{"t":265,"x":5976,"y":32217,"d":false},{"t":266,"x":6426,"y":32131,"d":false},{"t":267,"x":6955,"y":32020,"d":false},{"t":268,"x":7512,"y":31894,"d":false},{"t":269,"x":7978,"y":31781,"d":false},{"t":270,"x":8542,"y":31634,"d":false},{"d":false,"y":31465,"t":271,"x":9144},{"d":false,"y":31333,"t":272,"x":9589},{"d":false,"y":31192,"t":273,"x":10036},{"d":false,"y":31016,"t":274,"x":10567},{"d":false,"y":30814,"t":275,"x":11143},{"d":false,"y":30647,"t":276,"x":11596},{"d":false,"y":30452,"t":277,"x":12097},{"d":false,"y":30246,"t":278,"x":12603},{"d":false,"y":29978,"t":279,"x":13230},{"d":false,"y":29772,"t":280,"x":13687},{"d":false,"y":29560,"t":281,"x":14138},{"d":false,"y":29250,"t":282,"x":14768},{"d":false,"y":29043,"t":283,"x":15172},{"d":false,"y":28738,"t":284,"x":15741},{"d":false,"y":28512,"t":285,"x":16147},{"d":false,"y":28175,"t":286,"x":16729},{"d":false,"y":27927,"t":287,"x":17140},{"d":false,"y":27534,"t":288,"x":17764},{"d":false,"y":27218,"t":289,"x":18245},{"d":false,"y":26935,"t":290,"x":18659},{"d":false,"y":26571,"t":291,"x":19174},{"d":false,"y":26158,"t":292,"x":19734},{"d":false,"y":25765,"t":293,"x":20244},{"d":false,"y":25436,"t":294,"x":20657},{"d":false,"y":25032,"t":295,"x":21145},{"d":false,"y":24679,"t":296,"x":21555},{"d":false,"y":24387,"t":297,"x":21885},{"d":false,"y":24089,"t":298,"x":22212},{"d":false,"y":23787,"t":299,"x":22535},{"d":false,"y":23556,"t":300,"x":22776},{"d":false,"y":23248,"t":301,"x":23092},{"d":false,"y":22935,"t":302,"x":23403},{"d":false,"y":22617,"t":303,"x":23709},{"d":false,"y":22127,"t":304,"x":24167},{"d":false,"y":21876,"t":305,"x":24395},{"d":false,"y":21544,"t":306,"x":24689},{"t":307,"x":24978,"y":21208,"d":false},{"t":308,"x":25198,"y":20946,"d":false},{"t":309,"x":25479,"y":20603,"d":false},{"t":310,"x":25694,"y":20335,"d":false},{"t":311,"x":25949,"y":20009,"d":false},{"t":312,"x":26157,"y":19735,"d":false},{"t":313,"x":26419,"y":19384,"d":false},{"t":314,"x":26695,"y":19001,"d":false},{"t":315,"x":26895,"y":18717,"d":false},{"t":316,"x":27191,"y":18284,"d":false},{"t":317,"x":27384,"y":17995,"d":false},{"t":318,"x":27573,"y":17703,"d":false},{"t":319,"x":27760,"y":17409,"d":false},{"t":320,"x":27987,"y":17042,"d":false},{"t":321,"x":28235,"y":16627,"d":false},{"t":322,"x":28411,"y":16325,"d":false},{"t":323,"x":28621,"y":15953,"d":false},{"t":324,"x":28790,"y":15647,"d":false},{"t":325,"x":29020,"y":15216,"d":false},{"t":326,"x":-12413,"y":30325,"d":false},{"t":327,"x":-11815,"y":30563,"d":false},{"t":328,"x":-11160,"y":30808,"d":false},{"t":329,"x":-10691,"y":30974,"d":false},{"t":330,"x":-10078,"y":31179,"d":false},{"t":331,"x":-9459,"y":31372,"d":false},{"t":332,"x":-8794,"y":31565,"d":false},{"t":333,"x":-8169,"y":31732,"d":false},{"t":334,"x":-7688,"y":31852,"d":false},{"t":335,"x":-7058,"y":31998,"d":false},{"t":336,"x":-6426,"y":32131,"d":false},{"t":337,"x":-5820,"y":32246,"d":false},{"t":338,"x":-5183,"y":32354,"d":false},{"t":339,"x":-4546,"y":32450,"d":false},{"t":340,"x":-3929,"y":32531,"d":false},{"t":341,"x":-3291,"y":32601,"d":false},{"t":342,"x":-2669,"y":32658,"d":false},{"x":-2044,"d":false,"y":32703,"t":343},{"x":-1410,"d":false,"y":32737,"t":344},{"x":-784,"d":false,"y":32758,"t":345},{"x":-157,"d":false,"y":32767,"t":346},{"x":470,"d":false,"y":32764,"t":347},{"x":1097,"d":false,"y":32749,"t":348},{"x":1722,"d":false,"y":32722,"t":349},{"x":2346,"d":false,"y":32683,"t":350},{"x":2981,"d":false,"y":32631,"t":351},{"x":3601,"d":false,"y":32568,"t":352},{"x":4238,"d":false,"y":32492,"t":353},{"x":4853,"d":false,"y":32406,"t":354},{"x":5489,"d":false,"y":32304,"t":355},{"x":6095,"d":false,"y":32195,"t":356},{"x":6727,"d":false,"y":32069,"t":357},{"x":7357,"d":false,"y":31931,"t":358},{"x":7836,"d":false,"y":31816,"t":359},{"x":8462,"d":false,"y":31655,"t":360},{"x":9085,"d":false,"y":31483,"t":361},{"x":9702,"d":false,"y":31298,"t":362},{"x":10315,"d":false,"y":31101,"t":363},{"x":10922,"d":false,"y":30893,"t":364},{"x":11299,"d":false,"y":30757,"t":365},{"x":11710,"d":false,"y":30603,"t":366},{"x":31693,"d":false,"y":8319,"t":367},{"x":31794,"d":false,"y":7924,"t":368},{"x":31891,"d":false,"y":7527,"t":369},{"x":31982,"d":false,"y":7129,"t":370},{"x":32068,"d":false,"y":6730,"t":371},{"x":32150,"d":false,"y":6331,"t":372},{"x":32222,"d":false,"y":5949,"t":373},{"x":32294,"d":false,"y":5547,"t":374},{"x":32360,"d":false,"y":5146,"t":375},{"x":32420,"d":false,"y":4759,"t":376},{"x":32476,"d":false,"y":4357,"t":377},{"x":32526,"d":false,"y":3967,"t":378},{"t":379,"x":32573,"y":3564,"d":false},{"t":380,"x":32613,"y":3172,"d":false},{"t":381,"x":32650,"y":2770,"d":false},{"t":382,"x":32681,"y":2377,"d":false},{"t":383,"x":32701,"y":2081,"d":false},{"t":384,"x":32724,"y":1681,"d":false},{"t":385,"x":32742,"y":1286,"d":false},{"t":386,"x":32755,"y":891,"d":false},{"t":387,"x":32763,"y":495,"d":false},{"t":388,"x":32767,"y":99,"d":false},{"t":389,"x":32766,"y":-297,"d":false},{"t":390,"x":32760,"y":-693,"d":false},{"t":391,"x":32749,"y":-1088,"d":false},{"t":392,"x":32733,"y":-1483,"d":false},{"t":393,"x":32713,"y":-1883,"d":false},{"t":394,"x":-32687,"y":2292,"d":false},{"t":395,"x":-32712,"y":1901,"d":false},{"t":396,"x":-32732,"y":1511,"d":false},{"t":397,"x":-32748,"y":1112,"d":false},{"t":398,"x":-32759,"y":710,"d":false},{"t":399,"x":-32766,"y":306,"d":false},{"t":400,"x":-32767,"y":-102,"d":false},{"t":401,"x":-32763,"y":-515,"d":false},{"t":402,"x":-32754,"y":-930,"d":false},{"t":403,"x":-32739,"y":-1347,"d":false},{"t":404,"x":-32719,"y":-1771,"d":false},{"t":405,"x":-32693,"y":-2193,"d":false},{"t":406,"x":-32670,"y":-2521,"d":false},{"t":407,"x":-32633,"y":-2957,"d":false},{"t":408,"x":-32592,"y":-3386,"d":false},{"t":409,"x":-32543,"y":-3829,"d":false},{"t":410,"x":-32501,"y":-4169,"d":false},{"t":411,"x":-32442,"y":-4604,"d":false},{"t":412,"x":-32372,"y":-5072,"d":false},{"t":413,"x":-32297,"y":-5527,"d":false},{"t":414,"x":-32216,"y":-5986,"d":false},{"x":-32147,"t":415,"y":-6342,"d":false},{"x":-32052,"t":416,"y":-6806,"d":false},{"x":-31945,"t":417,"y":-7295,"d":false},{"x":-31859,"t":418,"y":-7660,"d":false},{"x":-31749,"t":419,"y":-8104,"d":false},{"x":-31618,"t":420,"y":-8603,"d":false},{"x":-31515,"t":421,"y":-8972,"d":false},{"x":-31398,"t":422,"y":-9374,"d":false},{"x":-31273,"t":423,"y":-9780,"d":false},{"x":-31120,"t":424,"y":-10259,"d":false},{"x":-30958,"t":425,"y":-10738,"d":false},{"x":-30811,"t":426,"y":-11152,"d":false},{"x":-30657,"t":427,"y":-11569,"d":false},{"x":-30511,"t":428,"y":-11949,"d":false},{"x":-30284,"t":429,"y":-12511,"d":false},{"x":-8667,"t":430,"y":-31600,"d":false},{"x":-8168,"t":431,"y":-31733,"d":false},{"x":-7693,"t":432,"y":-31851,"d":false},{"x":-7180,"t":433,"y":-31971,"d":false},{"x":-6688,"t":434,"y":-32077,"d":false},{"x":-6188,"t":435,"y":-32177,"d":false},{"x":-5655,"t":436,"y":-32275,"d":false},{"x":-5118,"t":437,"y":-32365,"d":false},{"x":-4614,"t":438,"y":-32440,"d":false},{"x":-4202,"t":439,"y":-32496,"d":false},{"x":-3681,"t":440,"y":-32560,"d":false},{"x":-28650,"t":441,"y":-15901,"d":false},{"x":-28423,"t":442,"y":-16304,"d":false},{"x":-28059,"t":443,"y":-16922,"d":false},{"x":-27811,"t":444,"y":-17327,"d":false},{"x":-27399,"t":445,"y":-17971,"d":false},{"x":-27126,"t":446,"y":-18381,"d":false},{"x":-26774,"t":447,"y":-18890,"d":false},{"x":-26409,"t":448,"y":-19397,"d":false},{"x":-26050,"t":449,"y":-19876,"d":false},{"x":-25734,"t":450,"y":-20284,"d":false},{"t":451,"x":-25347,"d":false,"y":-20766},{"t":452,"x":-25008,"d":false,"y":-21172},{"t":453,"x":-24592,"d":false,"y":-21654},{"t":454,"x":-24232,"d":false,"y":-22057},{"t":455,"x":-23787,"d":false,"y":-22535},{"t":456,"x":-23170,"d":false,"y":-23170},{"t":457,"x":-22535,"d":false,"y":-23787},{"t":458,"x":-21972,"d":false,"y":-24309},{"t":459,"x":-21389,"d":false,"y":-24823},{"t":460,"x":-20621,"d":false,"y":-25464}],"rulesetVersion":"ss-rules-008","contentVersion":"civic-seam-content-006","digest":"3ef4396ad640181e63f716d717d117d262fd60d88480aa2f19e24f83d31d3a13"} \ No newline at end of file diff --git a/docs/review/field-encounter/BP010-field-encounter-control-reduced-false.png b/docs/review/field-encounter/BP010-field-encounter-control-reduced-false.png new file mode 100644 index 00000000..f7a1642d Binary files /dev/null and b/docs/review/field-encounter/BP010-field-encounter-control-reduced-false.png differ diff --git a/docs/review/field-encounter/BP010-field-encounter-control-reduced-true.png b/docs/review/field-encounter/BP010-field-encounter-control-reduced-true.png new file mode 100644 index 00000000..5c2842c0 Binary files /dev/null and b/docs/review/field-encounter/BP010-field-encounter-control-reduced-true.png differ diff --git a/docs/review/field-encounter/BP010-field-encounter-dark-reduced-false.png b/docs/review/field-encounter/BP010-field-encounter-dark-reduced-false.png new file mode 100644 index 00000000..dc78d4f5 Binary files /dev/null and b/docs/review/field-encounter/BP010-field-encounter-dark-reduced-false.png differ diff --git a/docs/review/field-encounter/BP010-field-encounter-dark-reduced-true.png b/docs/review/field-encounter/BP010-field-encounter-dark-reduced-true.png new file mode 100644 index 00000000..b32dd281 Binary files /dev/null and b/docs/review/field-encounter/BP010-field-encounter-dark-reduced-true.png differ diff --git a/docs/review/field-encounter/BP010-field-encounter-paired-reduced-false.png b/docs/review/field-encounter/BP010-field-encounter-paired-reduced-false.png new file mode 100644 index 00000000..57c15cbb Binary files /dev/null and b/docs/review/field-encounter/BP010-field-encounter-paired-reduced-false.png differ diff --git a/docs/review/field-encounter/BP010-field-encounter-paired-reduced-true.png b/docs/review/field-encounter/BP010-field-encounter-paired-reduced-true.png new file mode 100644 index 00000000..6edb4ea9 Binary files /dev/null and b/docs/review/field-encounter/BP010-field-encounter-paired-reduced-true.png differ diff --git a/docs/review/field-encounter/BP010-field-encounter-record.txt b/docs/review/field-encounter/BP010-field-encounter-record.txt new file mode 100644 index 00000000..c24eef19 --- /dev/null +++ b/docs/review/field-encounter/BP010-field-encounter-record.txt @@ -0,0 +1,7 @@ +Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. +tick=461, player=264,592, facing=s +enemies=2, projectiles=1, telegraphs=0 +Production GameScene/HUD/fog/ground/projection; painted neutral Player and complete Camera candidate family. +Same unedited snapshot across control/dark/paired and normal/Reduced Motion. +digest=3ef4396ad640181e63f716d717d117d262fd60d88480aa2f19e24f83d31d3a13; candidate source: docs/review/camera-clips. +Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. \ No newline at end of file diff --git a/docs/review/field-encounter/README.md b/docs/review/field-encounter/README.md new file mode 100644 index 00000000..30441203 --- /dev/null +++ b/docs/review/field-encounter/README.md @@ -0,0 +1,23 @@ +# BP-001/BP-010 replayable field encounter comparison + +Specification: d859658, researched field-contrast comparison. This capture adds an unedited encounter to the quiet-scene comparison. It does not select or admit a production field style. + +## Reproducible encounter + +GameSession seed 1 advances with normal DebugAutopilot run commands until nearby enemies, a nearby projectile and a live nearby Camera field coexist. No scenario seeding or snapshot coordinate edits. The presented capture is tick 461: two enemies, one projectile, zero telegraphs. Exact commands, identity, seed, tick and digest are attached in BP010-field-encounter-commands-seed-1.json. GhostRun replay matches digest 3ef4396ad640181e63f716d717d117d262fd60d88480aa2f19e24f83d31d3a13. + +GameScene renders the production ground/fog/HUD/geometry; the Player is a painted neutral and standard Cameras use the complete candidate family. Each control/dark/paired image uses the same authoritative snapshot/digest. Normal and Reduced Motion settings are compared while paused; this is a settings/state comparison, not temporal motion or interruption evidence. Candidate art remains test-only. + +## Validation + +Xcode Test-SSRuntime-2026.10.14_22-37-59--0700.xcresult: 106 executions, zero failures. Existing nonthrowing-try warning remains. Three focused core CameraPresentationTests passed with exit 0. The prior full core run remains 773/109, exit 0; no core source changed this turn. Each PNG is 2112×978 for 704×326 logical points at 3×. Native, half-size and grayscale comparison sheets derive from these captures. + +## Observations + +The original fill is difficult to locate in grayscale against the busy paving. Dark-only is visible but loses clarity against darker patches. Paired outlines remain clearer through the fog/busy ground, with the projectile and enemies still visible in this snapshot. The long high-contrast edges are visually prominent and may compete with attack cues; one still cannot resolve that tradeoff. The nearby enemy overlaps part of the field boundary. These are observed review judgments, not accessibility compliance or user-test findings. + +The complete camera, its marker and ground field are present, but the camera is cropped near the top HUD and the field apex is visually separated from the pole base/overlapped by an enemy. Emitter-to-art registration should be explicitly inspected before acceptance rather than inferred from this picture. Legacy buildings retain opaque backgrounds, disparate scale and perspective; the white Player outline remains. This QA scene is not the approved street-corner benchmark. + +## Still required + +Dense encounter, Captain field visuals, detecting-state distinction, overlapping fields, explicit clipped-wall/corner views, intended dark asphalt/shadow backdrops, moving traversal and temporal Reduced Motion, user readability review and performance. Existing geometry/lifecycle tests support correctness but do not close those visual gates. Full character animation/environment production and physical-device acceptance remain open. diff --git a/docs/review/field-encounter/comparison-grayscale.png b/docs/review/field-encounter/comparison-grayscale.png new file mode 100644 index 00000000..50228614 Binary files /dev/null and b/docs/review/field-encounter/comparison-grayscale.png differ diff --git a/docs/review/field-encounter/comparison-half.png b/docs/review/field-encounter/comparison-half.png new file mode 100644 index 00000000..083ea27e Binary files /dev/null and b/docs/review/field-encounter/comparison-half.png differ diff --git a/docs/review/field-encounter/comparison-native.png b/docs/review/field-encounter/comparison-native.png new file mode 100644 index 00000000..f6de89ac Binary files /dev/null and b/docs/review/field-encounter/comparison-native.png differ diff --git a/docs/review/field-encounter/core-camera-tests.log b/docs/review/field-encounter/core-camera-tests.log new file mode 100644 index 00000000..7e0e4900 --- /dev/null +++ b/docs/review/field-encounter/core-camera-tests.log @@ -0,0 +1,25 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.89s) +Test Suite 'Selected tests' started at 2026-10-14 22:39:20.446. +Test Suite 'SSRuntimePackageTests.xctest' started at 2026-10-14 22:39:20.463. +Test Suite 'SSRuntimePackageTests.xctest' passed at 2026-10-14 22:39:20.463. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds +Test Suite 'Selected tests' passed at 2026-10-14 22:39:20.463. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.017) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite CameraPresentationTests started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 0.002 seconds. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 0.001 seconds. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 0.001 seconds. +✔ Suite CameraPresentationTests passed after 0.004 seconds. +✔ Test run with 3 tests in 1 suite passed after 0.004 seconds. diff --git a/docs/review/field-encounter/manifest.json b/docs/review/field-encounter/manifest.json new file mode 100644 index 00000000..f26000be --- /dev/null +++ b/docs/review/field-encounter/manifest.json @@ -0,0 +1,50 @@ +[ + { + "test": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()", + "name": "BP010-field-encounter-control-reduced-false", + "uti": "public.png", + "path": "BP010-field-encounter-control-reduced-false.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()", + "name": "BP010-field-encounter-dark-reduced-false", + "uti": "public.png", + "path": "BP010-field-encounter-dark-reduced-false.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()", + "name": "BP010-field-encounter-paired-reduced-false", + "uti": "public.png", + "path": "BP010-field-encounter-paired-reduced-false.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()", + "name": "BP010-field-encounter-control-reduced-true", + "uti": "public.png", + "path": "BP010-field-encounter-control-reduced-true.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()", + "name": "BP010-field-encounter-dark-reduced-true", + "uti": "public.png", + "path": "BP010-field-encounter-dark-reduced-true.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()", + "name": "BP010-field-encounter-paired-reduced-true", + "uti": "public.png", + "path": "BP010-field-encounter-paired-reduced-true.png" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()", + "name": "BP010-field-encounter-commands-seed-1", + "uti": "public.json", + "path": "BP010-field-encounter-commands-seed-1.json" + }, + { + "test": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()", + "name": "BP010-field-encounter-record", + "uti": "public.plain-text", + "path": "BP010-field-encounter-record.txt" + } +] diff --git a/docs/review/field-encounter/result.json b/docs/review/field-encounter/result.json new file mode 100644 index 00000000..41feb22b --- /dev/null +++ b/docs/review/field-encounter/result.json @@ -0,0 +1,608 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~EpdOMsNNcd4-38Gde_CF7E1avMAUaQ3-NdqN75dbaatwYx9E8bLcnv784W-69398SffwChUysgY9xJm06GohGA==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~DSEjyTe4YgC4WotSQ5M9omsS5yxT8-JskAhPK0IlVRTiHGUQd2mloCSLBgvMfIjK1IP5IkP6Vf2dDHBKduHj0A==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "106" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~u8VdXVotWnftnON7P5CFaQLCInB2O_QK859TdWEsvqRrtQ8mUTvAHlRzGMUjh8RAJKGiyuCF80JP4YM18E9p1w==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~OecaMbsiJ72q_SNmbqwv7KLNDavwiJVhLdE7-IiL4VNsHifmrjERD7StZyv9-gPRJnALfJz3fSYHotTyjCBTKA==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:41:01.635-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:37:59.825-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~Eb28eYxBDV-XJlS-u8IYAfcYlqRo51-8t3gxlFgEPbsdbeQ7FwOw1sT24h2aE_B7dG9k6btr3ZZlyEYg3_yEsw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "106" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/field-encounter/testCaptureCameraFieldsInReplayableEncounter-summary.json b/docs/review/field-encounter/testCaptureCameraFieldsInReplayableEncounter-summary.json new file mode 100644 index 00000000..b53e700f --- /dev/null +++ b/docs/review/field-encounter/testCaptureCameraFieldsInReplayableEncounter-summary.json @@ -0,0 +1,1022 @@ +{ + "_type": { + "_name": "ActionTestSummary", + "_supertype": { + "_name": "ActionTestSummaryIdentifiableObject", + "_supertype": { + "_name": "ActionAbstractTestSummary" + } + } + }, + "activitySummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-control-reduced-false_0_AFAB371A-7F48-43BC-8E92-D143F2E78B58.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-control-reduced-false" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~_iIEXDzNO9BYlW34D8NdQOf9FB_4_aQoIbAwdKVvrCo-gXry8OkxLZ1RNVkbYcUJRcve0EVyvDLtLrKyAGSSqA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "910679" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.020-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "26F8D01D-1EB1-4A6B-A8C4-31D840F08906" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.021-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.020-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP010-field-encounter-control-reduced-false'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "AFAB371A-7F48-43BC-8E92-D143F2E78B58" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-dark-reduced-false_0_BEB23023-61DD-4E23-898F-1B269943EB50.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-dark-reduced-false" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~qinoAP0LRksmSpOjNc4WCSZKVT7i6BU_91o-zkHB9uwoaWBfPKaQe9HHLwDkKot8JUxtY3GxFGln-erDDbiRNA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "929277" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.400-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "51FFC991-6D65-4463-B6A5-0E2C66A28A67" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.401-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.400-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP010-field-encounter-dark-reduced-false'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "BEB23023-61DD-4E23-898F-1B269943EB50" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-paired-reduced-false_0_0340F941-F96B-436B-932F-430167B79DBF.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-paired-reduced-false" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~glf-uMaLE5mZA0mWqDaWGTTIXGzltq6foZ4JPAlcCbq1nVp4wx54dMaMsPfYleJMFE2aYCqrEtZ-1AiCwCdUQA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "945293" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.721-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "FB323ABF-A94D-489C-8A13-B8CC531F7ABB" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.722-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:44.721-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP010-field-encounter-paired-reduced-false'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "0340F941-F96B-436B-932F-430167B79DBF" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-control-reduced-true_0_65455C64-7F93-4633-887B-0FB90D4FC0BC.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-control-reduced-true" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~faU6FYX7Iw05lhLKcQzvBeyNPJ6IbIUOeHTw0WAZWBXEdgxdTz7Je8_yBqfA2T5v9Kn_ouL4fjxKbgrLFi6jGg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "887167" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.031-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "3CEDCAED-A35B-477E-9329-66884AF8849C" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.032-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.031-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP010-field-encounter-control-reduced-true'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "65455C64-7F93-4633-887B-0FB90D4FC0BC" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-dark-reduced-true_0_ABE7C3C6-55F0-493F-AF03-3EC064655BF0.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-dark-reduced-true" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~2oU59Ytj3aFeyoWtas6Myf8e5GQZjemq9BcknErMzhJZgtSNyca8gFQKC_gLV1DnOEeHpn-x-3NpRU0xF2KWMA==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "905637" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.309-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "33233E98-B8D6-444F-B4A9-81CCB289489C" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.309-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.309-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP010-field-encounter-dark-reduced-true'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "ABE7C3C6-55F0-493F-AF03-3EC064655BF0" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-paired-reduced-true_0_2E68FD2B-C1D5-49F9-A599-0F5143858FE1.png" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-paired-reduced-true" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~rPCBQ-6VUBSX8Dz6-VoDOv-DIGcPxNj1FQjUVUMpu-ALcpZySS5eLhJKkAJQ2IXyAotfTA0XYh9YtbAgG0CBxQ==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "921639" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.642-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.png" + }, + "userInfo": { + "_type": { + "_name": "SortedKeyValueArray" + }, + "storage": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "SortedKeyValueArrayPair" + }, + "key": { + "_type": { + "_name": "String" + }, + "_value": "Scale" + }, + "value": { + "_type": { + "_name": "String" + }, + "_value": "1" + } + } + ] + } + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "B2A87C7B-6BE3-4112-850E-2B5BFDBFB5BE" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.643-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:45.642-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP010-field-encounter-paired-reduced-true'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "2E68FD2B-C1D5-49F9-A599-0F5143858FE1" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-commands-seed-1_0_81725C18-CD15-4CEC-9879-2AB44B383853.json" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-commands-seed-1" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~3sX48okumfdOOVsm8RD2g4nBLA7ji4RDoimo50H9V4JnI9t_E2dPz40XHBR7u5DV6kVtJ8vi6vqgwPBZM4HS3w==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "18562" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:46.721-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.json" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "41C36F34-1B75-4316-9F8B-FE48E0CAA0C5" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:46.722-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:46.721-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP010-field-encounter-commands-seed-1'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "81725C18-CD15-4CEC-9879-2AB44B383853" + } + }, + { + "_type": { + "_name": "ActionTestActivitySummary" + }, + "activityType": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.dt.xctest.activity-type.attachmentContainer" + }, + "attachments": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionTestAttachment" + }, + "filename": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-record_0_D2AA6761-C790-49AD-BBB7-3DB47498787D.txt" + }, + "lifetime": { + "_type": { + "_name": "String" + }, + "_value": "keepAlways" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "BP010-field-encounter-record" + }, + "payloadRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~bfDIY1FT-igFVxngFBhnmOjkAzYfDDTZHZz35l792pbXO23FBsZQzA2AIQfiXyA7sh7kJjTX-39pv9J34qwDRg==" + } + }, + "payloadSize": { + "_type": { + "_name": "Int" + }, + "_value": "567" + }, + "timestamp": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:46.724-0700" + }, + "uniformTypeIdentifier": { + "_type": { + "_name": "String" + }, + "_value": "public.plain-text" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "FE4A557B-E777-410F-BA17-E8EFD15AA116" + } + } + ] + }, + "finish": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:46.725-0700" + }, + "start": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T22:38:46.724-0700" + }, + "title": { + "_type": { + "_name": "String" + }, + "_value": "Added attachment named 'BP010-field-encounter-record'" + }, + "uuid": { + "_type": { + "_name": "String" + }, + "_value": "D2AA6761-C790-49AD-BBB7-3DB47498787D" + } + } + ] + }, + "duration": { + "_type": { + "_name": "Double" + }, + "_value": "10.152034997940063" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter()" + }, + "identifierURL": { + "_type": { + "_name": "String" + }, + "_value": "test://com.apple.xcode/SSRuntime/SSRuntimeTests/BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "testCaptureCameraFieldsInReplayableEncounter()" + }, + "testStatus": { + "_type": { + "_name": "String" + }, + "_value": "Success" + } +} diff --git a/docs/review/framing-comparison/comparison.png b/docs/review/framing-comparison/comparison.png new file mode 100644 index 00000000..7520b156 Binary files /dev/null and b/docs/review/framing-comparison/comparison.png differ diff --git a/docs/review/framing-comparison/review.md b/docs/review/framing-comparison/review.md new file mode 100644 index 00000000..971750bd --- /dev/null +++ b/docs/review/framing-comparison/review.md @@ -0,0 +1,11 @@ +# Framing comparison — CAPTURED, not adopted + +![Current and closer framing](comparison.png) + +The same paused snapshot, candidate assets, world sizes, center and HUD are rendered at current framing and 1.25× world magnification. SpriteKit renders transformed world nodes before rasterization; this is not a resized screenshot. The transform is equivalent to camera scale 0.8 for this static capture. Shipping camera behavior and simulation are unchanged. + +Player occupied height increases from 16.0% to 19.9% of the viewport. At 3× output scale its 256×256 texture maps to a 240×240 output canvas in the closer view, so the delivery still covers this sampling requirement. The building's 673×768 export maps to about 713×814 output pixels: it is now mildly magnified. Props still have ample source samples. These calculations do not prove authored detail quality or filtering quality. See sampling-budget.json for alpha bounds and all five assets. + +Visual observation: closer framing improves clothing legibility but crops the roof, loses peripheral world area and makes plaza texture repetition more obvious. Ground construction, contact shadows, coherent perspective and building footprint alignment remain unresolved. The nearer framing is not accepted for gameplay until legal attack/field/dense-encounter visibility and traversal are checked. No new animation or physical-device performance evidence is claimed. + +Validation: both XCTest capture tests and 82 iOS Swift Testing tests / 13 suites passed. Xcode result Test-SSRuntime-2026.10.14_09-37-20--0700.xcresult; iPhone 17 Pro simulator CACB3927-A76E-43A5-9ACA-C389EB38C0C3. Spec pin 6cd3fdc03b1234b3780e8cdc0061b2aa8eb8de83. Runtime base e022e95 plus the capture change in the commit containing this record. Export manifest in capture/ preserves original attachment identities. No full core rerun was needed for this test-only change. diff --git a/docs/review/framing-comparison/sampling-budget.json b/docs/review/framing-comparison/sampling-budget.json new file mode 100644 index 00000000..0a27d5e1 --- /dev/null +++ b/docs/review/framing-comparison/sampling-budget.json @@ -0,0 +1,137 @@ +[ + { + "asset": "player-south", + "texturePixels": [ + 256, + 256 + ], + "alphaBounds128": [ + 72, + 16, + 184, + 224 + ], + "logicalDraw": [ + 64, + 64 + ], + "outputPixelsAt1x": [ + 192, + 192 + ], + "outputPixelsAt125Percent": [ + 240.0, + 240.0 + ], + "occupiedHeightFractionAt1x": 0.15950920245398773, + "occupiedHeightFractionAt125Percent": 0.19938650306748465 + }, + { + "asset": "camera", + "texturePixels": [ + 256, + 384 + ], + "alphaBounds128": [ + 84, + 40, + 254, + 352 + ], + "logicalDraw": [ + 64, + 96 + ], + "outputPixelsAt1x": [ + 192, + 288 + ], + "outputPixelsAt125Percent": [ + 240.0, + 360.0 + ], + "occupiedHeightFractionAt1x": 0.2392638036809816, + "occupiedHeightFractionAt125Percent": 0.299079754601227 + }, + { + "asset": "building", + "texturePixels": [ + 673, + 768 + ], + "alphaBounds128": [ + 0, + 0, + 673, + 768 + ], + "logicalDraw": [ + 190, + 217 + ], + "outputPixelsAt1x": [ + 570, + 651 + ], + "outputPixelsAt125Percent": [ + 712.5, + 813.75 + ], + "occupiedHeightFractionAt1x": 0.6656441717791411, + "occupiedHeightFractionAt125Percent": 0.8320552147239264 + }, + { + "asset": "newsbox", + "texturePixels": [ + 378, + 768 + ], + "alphaBounds128": [ + 0, + 0, + 378, + 768 + ], + "logicalDraw": [ + 20, + 40 + ], + "outputPixelsAt1x": [ + 60, + 120 + ], + "outputPixelsAt125Percent": [ + 75.0, + 150.0 + ], + "occupiedHeightFractionAt1x": 0.12269938650306748, + "occupiedHeightFractionAt125Percent": 0.15337423312883436 + }, + { + "asset": "tree", + "texturePixels": [ + 454, + 768 + ], + "alphaBounds128": [ + 0, + 0, + 454, + 768 + ], + "logicalDraw": [ + 50, + 85 + ], + "outputPixelsAt1x": [ + 150, + 255 + ], + "outputPixelsAt125Percent": [ + 187.5, + 318.75 + ], + "occupiedHeightFractionAt1x": 0.2607361963190184, + "occupiedHeightFractionAt125Percent": 0.325920245398773 + } +] diff --git a/docs/review/framing-review/100-native.png b/docs/review/framing-review/100-native.png new file mode 100644 index 00000000..d26a7e51 Binary files /dev/null and b/docs/review/framing-review/100-native.png differ diff --git a/docs/review/framing-review/125-native.png b/docs/review/framing-review/125-native.png new file mode 100644 index 00000000..05c47d13 Binary files /dev/null and b/docs/review/framing-review/125-native.png differ diff --git a/docs/review/framing-review/140-native.png b/docs/review/framing-review/140-native.png new file mode 100644 index 00000000..949645d0 Binary files /dev/null and b/docs/review/framing-review/140-native.png differ diff --git a/docs/review/framing-review/README.md b/docs/review/framing-review/README.md new file mode 100644 index 00000000..e7aea96d --- /dev/null +++ b/docs/review/framing-review/README.md @@ -0,0 +1,7 @@ +# Closer street framing — focused renderer comparison + +Actual SpriteKit captures at 1×, 1.25× and 1.4×. HUD remains at 1×; world sizes, player registration and authority unchanged. Exact run Test-SSRuntime-2026.10.15_21-16-00--0700: one selected test passed, no failures. Selected via test navigator context menu Run, not Cmd+U. The Xcode AX tree omitted that context menu; screenshot plus Down/Return selected the visible first Run item. This is the verified fast path for subsequent focused captures. + +Visual review: 1.25× retains the building base and municipal camera while giving the player more presence. 1.4× crops the building base and loses more ground context. Recommend 1.25× for moving encounter comparison, not production adoption. Full field, offscreen threats, occlusion and input coverage are unproven. Alpha height is calculated from unchanged source bounds/draw mapping; it is not pixel-tracked visibility evidence. The crossing falls outside these closer crops and needs composition reconsideration. + +The temporary SSBenchmarkReview scheme and project.yml addition were removed because UI activation was not verified; the existing full scheme remains unchanged. Scene-specific Run is verified by the one-test xcresult. diff --git a/docs/review/framing-review/app-summary.json b/docs/review/framing-review/app-summary.json new file mode 100644 index 00000000..4665ae39 --- /dev/null +++ b/docs/review/framing-review/app-summary.json @@ -0,0 +1,42 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 1, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792124206.15, + "passedTests" : 1, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792124160.932, + "statistics" : [ + + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + + ], + "totalTestCount" : 1 +} diff --git a/docs/review/framing-review/measurements.json b/docs/review/framing-review/measurements.json new file mode 100644 index 00000000..ba569776 --- /dev/null +++ b/docs/review/framing-review/measurements.json @@ -0,0 +1,48 @@ +{ + "scope": "source alpha-height mapped through actual draw size and framing; not a pixel-occlusion measurement", + "sourcePixels": [ + 384, + 416 + ], + "sourceAlphaBounds": [ + 108, + 39, + 273, + 381 + ], + "canvasWorldSize": [ + 64, + 69.33333333333333 + ], + "viewportLogical": [ + 704, + 326 + ], + "capturePixels": [ + 2112, + 978 + ], + "rows": [ + { + "magnification": 1, + "playerAlphaHeightLogical": 57, + "fractionOfViewportHeight": 0.17484662576687116, + "equivalentProjectedViewWidth": 704.0, + "equivalentProjectedViewHeight": 326.0 + }, + { + "magnification": 1.25, + "playerAlphaHeightLogical": 71.25, + "fractionOfViewportHeight": 0.21855828220858894, + "equivalentProjectedViewWidth": 563.2, + "equivalentProjectedViewHeight": 260.8 + }, + { + "magnification": 1.4, + "playerAlphaHeightLogical": 79.8, + "fractionOfViewportHeight": 0.24478527607361963, + "equivalentProjectedViewWidth": 502.8571428571429, + "equivalentProjectedViewHeight": 232.85714285714286 + } + ] +} diff --git a/docs/review/full-scene-playback/BP008-full-scene-post-action-records.json b/docs/review/full-scene-playback/BP008-full-scene-post-action-records.json new file mode 100644 index 00000000..7865e852 --- /dev/null +++ b/docs/review/full-scene-playback/BP008-full-scene-post-action-records.json @@ -0,0 +1,1806 @@ +[ + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 50176, + "cameraX" : 352, + "cameraY" : 198.22441101074219, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165552.44165154171, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "imageAttachment" : "BP008-full-scene-tick-1", + "renderedX" : 160, + "renderedY" : 196, + "tick" : 1, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 51200, + "cameraX" : 352, + "cameraY" : 208.3564453125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165553.56538429169, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "imageAttachment" : "BP008-full-scene-tick-2", + "renderedX" : 160, + "renderedY" : 200, + "tick" : 2, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 52224, + "cameraX" : 352, + "cameraY" : 216.03111267089844, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165554.15260233337, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "imageAttachment" : "BP008-full-scene-tick-3", + "renderedX" : 160, + "renderedY" : 204, + "tick" : 3, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 53248, + "cameraX" : 352, + "cameraY" : 221.84440612792969, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165554.57599016669, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 208, + "tick" : 4, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 54272, + "cameraX" : 352, + "cameraY" : 226.24777221679688, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165554.73202458338, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "imageAttachment" : "BP008-full-scene-tick-5", + "renderedX" : 160, + "renderedY" : 212, + "tick" : 5, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 55296, + "cameraX" : 352, + "cameraY" : 229.58316040039062, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.03364804172, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 216, + "tick" : 6, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 56320, + "cameraX" : 352, + "cameraY" : 231.29232788085938, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.05000000005, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 220, + "tick" : 7, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 57344, + "cameraX" : 352, + "cameraY" : 233.3292236328125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.06666666671, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 224, + "tick" : 8, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 58368, + "cameraX" : 352, + "cameraY" : 237.61500549316406, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.21819358337, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 228, + "tick" : 9, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 59392, + "cameraX" : 352, + "cameraY" : 241.74290466308594, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.25072245838, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 232, + "tick" : 10, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 60416, + "cameraX" : 352, + "cameraY" : 243.8900146484375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.26666666669, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 236, + "tick" : 11, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 61440, + "cameraX" : 352, + "cameraY" : 246.36811828613281, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.28333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 240, + "tick" : 12, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 62464, + "cameraX" : 352, + "cameraY" : 251.3720703125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.3486296667, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 244, + "tick" : 13, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 63488, + "cameraX" : 352, + "cameraY" : 254.11128234863281, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.3666666667, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 248, + "tick" : 14, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 64512, + "cameraX" : 352, + "cameraY" : 259.17752075195312, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.43233833337, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 252, + "tick" : 15, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 65536, + "cameraX" : 352, + "cameraY" : 261.89047241210938, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.45000000004, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 256, + "tick" : 16, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 66560, + "cameraX" : 352, + "cameraY" : 264.62786865234375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.4666666667, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 260, + "tick" : 17, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 67584, + "cameraX" : 352, + "cameraY" : 267.52896118164062, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.48333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 264, + "tick" : 18, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 68608, + "cameraX" : 352, + "cameraY" : 270.57257080078125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.50000000003, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 268, + "tick" : 19, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 69632, + "cameraX" : 352, + "cameraY" : 273.74020385742188, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.51666666669, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 272, + "tick" : 20, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 70656, + "cameraX" : 352, + "cameraY" : 277.01577758789062, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.53333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 276, + "tick" : 21, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 71680, + "cameraX" : 352, + "cameraY" : 280.38528442382812, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.55000000005, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 280, + "tick" : 22, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 72704, + "cameraX" : 352, + "cameraY" : 283.8365478515625, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.56666666671, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 284, + "tick" : 23, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 73728, + "cameraX" : 352, + "cameraY" : 287.35897827148438, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.58333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 288, + "tick" : 24, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 74752, + "cameraX" : 352, + "cameraY" : 294.06289672851562, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.61686150005, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 292, + "tick" : 25, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 75776, + "cameraX" : 352, + "cameraY" : 297.2613525390625, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.63333333336, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 296, + "tick" : 26, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 76800, + "cameraX" : 352, + "cameraY" : 300.59902954101562, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.65000000002, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 300, + "tick" : 27, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 77824, + "cameraX" : 352, + "cameraY" : 304.0225830078125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.66666666672, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 304, + "tick" : 28, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 78848, + "cameraX" : 352, + "cameraY" : 307.5208740234375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.68333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 308, + "tick" : 29, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 79872, + "cameraX" : 352, + "cameraY" : 311.084228515625, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.70000000004, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 312, + "tick" : 30, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 80896, + "cameraX" : 352, + "cameraY" : 314.7042236328125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.7166666667, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 316, + "tick" : 31, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 81920, + "cameraX" : 352, + "cameraY" : 318.37347412109375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.73333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 320, + "tick" : 32, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 82944, + "cameraX" : 352, + "cameraY" : 322.08563232421875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.75000000003, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 324, + "tick" : 33, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 83968, + "cameraX" : 352, + "cameraY" : 325.83511352539062, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.76666666669, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 328, + "tick" : 34, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 84992, + "cameraX" : 352, + "cameraY" : 332.90863037109375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.80000000005, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 332, + "tick" : 35, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 86016, + "cameraX" : 352, + "cameraY" : 336.29202270507812, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.81666666671, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 336, + "tick" : 36, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 87040, + "cameraX" : 352, + "cameraY" : 339.75540161132812, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.83333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 340, + "tick" : 37, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 88064, + "cameraX" : 352, + "cameraY" : 343.288330078125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.85000000003, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 344, + "tick" : 38, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 89088, + "cameraX" : 352, + "cameraY" : 346.88186645507812, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.8666666667, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 348, + "tick" : 39, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 90112, + "cameraX" : 352, + "cameraY" : 350.528076171875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.88333333336, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 352, + "tick" : 40, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 91136, + "cameraX" : 352, + "cameraY" : 354.22018432617188, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.90000000002, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 356, + "tick" : 41, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 92160, + "cameraX" : 352, + "cameraY" : 357.95220947265625, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.91666666672, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 360, + "tick" : 42, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 93184, + "cameraX" : 352, + "cameraY" : 361.718994140625, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.93333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 364, + "tick" : 43, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 94208, + "cameraX" : 352, + "cameraY" : 368.82064819335938, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.9666666667, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 368, + "tick" : 44, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 95232, + "cameraX" : 352, + "cameraY" : 372.21548461914062, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165555.98333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 372, + "tick" : 45, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 96256, + "cameraX" : 352, + "cameraY" : 375.68875122070312, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.00000000003, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 376, + "tick" : 46, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 97280, + "cameraX" : 352, + "cameraY" : 379.2303466796875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.01666666669, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 380, + "tick" : 47, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 98304, + "cameraX" : 352, + "cameraY" : 382.83139038085938, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.03333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 384, + "tick" : 48, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 99328, + "cameraX" : 352, + "cameraY" : 386.48416137695312, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.05000000005, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 388, + "tick" : 49, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 100352, + "cameraX" : 352, + "cameraY" : 390.18197631835938, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.06666666671, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 392, + "tick" : 50, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 101376, + "cameraX" : 352, + "cameraY" : 393.9189453125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.08333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 396, + "tick" : 51, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 102400, + "cameraX" : 352, + "cameraY" : 400.97210693359375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.11704679171, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 400, + "tick" : 52, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 103424, + "cameraX" : 352, + "cameraY" : 404.27542114257812, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.13333333336, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 404, + "tick" : 53, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 104448, + "cameraX" : 352, + "cameraY" : 407.74093627929688, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.15000000002, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 408, + "tick" : 54, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 105472, + "cameraX" : 352, + "cameraY" : 411.2757568359375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.16666666672, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 412, + "tick" : 55, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 106496, + "cameraX" : 352, + "cameraY" : 414.87091064453125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.18333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 416, + "tick" : 56, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 107520, + "cameraX" : 352, + "cameraY" : 418.5185546875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.20000000004, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 420, + "tick" : 57, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 108544, + "cameraX" : 352, + "cameraY" : 422.21188354492188, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.2166666667, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 424, + "tick" : 58, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 109568, + "cameraX" : 352, + "cameraY" : 425.94500732421875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.23333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 428, + "tick" : 59, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 110592, + "cameraX" : 352, + "cameraY" : 432.99185180664062, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.26666666669, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 432, + "tick" : 60, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 111616, + "cameraX" : 352, + "cameraY" : 436.36447143554688, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.28333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 436, + "tick" : 61, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 112640, + "cameraX" : 352, + "cameraY" : 439.81845092773438, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.30000000005, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 440, + "tick" : 62, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 113664, + "cameraX" : 352, + "cameraY" : 443.34320068359375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.31666666671, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 444, + "tick" : 63, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 114688, + "cameraX" : 352, + "cameraY" : 446.92962646484375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.33333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 448, + "tick" : 64, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 115712, + "cameraX" : 352, + "cameraY" : 450.56964111328125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.35000000003, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 452, + "tick" : 65, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 116736, + "cameraX" : 352, + "cameraY" : 454.25637817382812, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.3666666667, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 456, + "tick" : 66, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 117760, + "cameraX" : 352, + "cameraY" : 461.22769165039062, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.4006806667, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 460, + "tick" : 67, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 118784, + "cameraX" : 352, + "cameraY" : 464.442138671875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.41666666672, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 464, + "tick" : 68, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 119808, + "cameraX" : 352, + "cameraY" : 467.88604736328125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.43333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 468, + "tick" : 69, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 120832, + "cameraX" : 352, + "cameraY" : 471.40203857421875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.45000000004, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 472, + "tick" : 70, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 121856, + "cameraX" : 352, + "cameraY" : 474.98080444335938, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.4666666667, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 476, + "tick" : 71, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 122880, + "cameraX" : 352, + "cameraY" : 481.77645874023438, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.50000000003, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 480, + "tick" : 72, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 123904, + "cameraX" : 352, + "cameraY" : 485.04733276367188, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.51666666669, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 484, + "tick" : 73, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 124928, + "cameraX" : 352, + "cameraY" : 488.41275024414062, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.53333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 488, + "tick" : 74, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 125952, + "cameraX" : 352, + "cameraY" : 491.86044311523438, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.55000000005, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 492, + "tick" : 75, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 126976, + "cameraX" : 352, + "cameraY" : 495.37979125976562, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.56666666671, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 496, + "tick" : 76, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 128000, + "cameraX" : 352, + "cameraY" : 498.96142578125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.58333333337, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 500, + "tick" : 77, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 129024, + "cameraX" : 352, + "cameraY" : 502.59735107421875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.60000000003, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 504, + "tick" : 78, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 130048, + "cameraX" : 352, + "cameraY" : 506.28045654296875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.6166666667, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 508, + "tick" : 79, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 131072, + "cameraX" : 352, + "cameraY" : 510.00466918945312, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.63333333336, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 512, + "tick" : 80, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 132096, + "cameraX" : 352, + "cameraY" : 513.7646484375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.65000000002, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 516, + "tick" : 81, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 133120, + "cameraX" : 352, + "cameraY" : 517.5557861328125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.66666666672, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 520, + "tick" : 82, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 134144, + "cameraX" : 352, + "cameraY" : 521.37396240234375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.68333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 524, + "tick" : 83, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 135168, + "cameraX" : 352, + "cameraY" : 525.2156982421875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.70000000004, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 528, + "tick" : 84, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 136192, + "cameraX" : 352, + "cameraY" : 529.0780029296875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.7166666667, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 532, + "tick" : 85, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 137216, + "cameraX" : 352, + "cameraY" : 536.33514404296875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.75000000003, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 536, + "tick" : 86, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 138240, + "cameraX" : 352, + "cameraY" : 539.79290771484375, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.76666666669, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 540, + "tick" : 87, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 139264, + "cameraX" : 352, + "cameraY" : 543.32098388671875, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.78333333338, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 544, + "tick" : 88, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 140288, + "cameraX" : 352, + "cameraY" : 546.9102783203125, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.80000000005, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 548, + "tick" : 89, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 141312, + "cameraX" : 352, + "cameraY" : 550.55279541015625, + "clip" : "player_move|n", + "displayScale" : 3, + "displayTime" : 165556.81666666671, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 552, + "tick" : 90, + "viewportHeight" : 326, + "viewportWidth" : 704, + "width" : 64 + } +] \ No newline at end of file diff --git a/docs/review/full-scene-playback/BP008-full-scene-tick-3.png b/docs/review/full-scene-playback/BP008-full-scene-tick-3.png new file mode 100644 index 00000000..290ba6a3 Binary files /dev/null and b/docs/review/full-scene-playback/BP008-full-scene-tick-3.png differ diff --git a/docs/review/full-scene-playback/BP008-live-admitted-player-post-action-frames.json b/docs/review/full-scene-playback/BP008-live-admitted-player-post-action-frames.json new file mode 100644 index 00000000..4a8b7590 --- /dev/null +++ b/docs/review/full-scene-playback/BP008-live-admitted-player-post-action-frames.json @@ -0,0 +1,167 @@ +[ + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 49152, + "clip" : "player_idle|e", + "displayTime" : 165557.30632466672, + "facing" : "e", + "framePath" : "actor_player_idle_e_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 192, + "tick" : 0, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 64512, + "clip" : "player_move|n", + "displayTime" : 165558.0902446667, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 252, + "tick" : 15, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 79872, + "clip" : "player_move|n", + "displayTime" : 165558.38906650004, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 312, + "tick" : 30, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 87040, + "clip" : "player_move|n", + "displayTime" : 165558.50577070838, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 340, + "tick" : 37, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 100352, + "clip" : "player_move|n", + "displayTime" : 165558.72995070837, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 392, + "tick" : 50, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 115712, + "clip" : "player_move|n", + "displayTime" : 165558.98814470836, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 452, + "tick" : 65, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 131072, + "clip" : "player_move|n", + "displayTime" : 165559.26602858337, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 512, + "tick" : 80, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 137216, + "clip" : "player_move|n", + "displayTime" : 165559.3703755417, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 536, + "tick" : 86, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 144384, + "clip" : "player_move|n", + "displayTime" : 165559.47621525003, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 564, + "tick" : 93, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 147456, + "clip" : "player_move|n", + "displayTime" : 165559.53623795838, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 576, + "tick" : 96, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 150528, + "clip" : "player_move|n", + "displayTime" : 165559.57756620838, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 588, + "tick" : 99, + "width" : 64 + } +] \ No newline at end of file diff --git a/docs/review/full-scene-playback/initial-failed-result.json b/docs/review/full-scene-playback/initial-failed-result.json new file mode 100644 index 00000000..3e8b89ec --- /dev/null +++ b/docs/review/full-scene-playback/initial-failed-result.json @@ -0,0 +1,720 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~7k5VEjqg-gOHw4W0j0tSE9yLjZw4_AB-_sY5-DkP7ZPuXr0fFv6GnJwb-AltDCiTwqmmCP7IGHt1LLLNFU8lHw==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "testFailureSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "TestFailureIssueSummary", + "_supertype": { + "_name": "IssueSummary" + } + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/AppTests/DisplayedPlaybackTests.swift#EndingLineNumber=88&StartingLineNumber=88" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Uncategorized" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "XCTAssertGreaterThan failed: (\"9\") is not greater than (\"10\")" + }, + "testCaseName": { + "_type": { + "_name": "String" + }, + "_value": "DisplayedPlaybackTests.testLiveActionsExposeChangingDeliveredFramesAndSimulationTravel()" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~dNDJQIl7eWLltTXNndhVHBAlEZW3zS_zvqSKpURCi5OjGDXM9UQV21hM4UcvQH5xs_bG1UNNwz7f-fBo8_-1FQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "100" + }, + "testsFailedCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "failed" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~QP8aK117dzDeajWbz4UfpqPWvfuH-5eFBbTtzG5blYpQZCDqr9BDD-vD6lPG3l0vPkAGDSCHxoky96hY-ZxB_Q==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~9dMRIR9nrZ4HoTVApO7SZIZrtA5TXS8KAlzW6fDfO58v6tPcEGnjOmfnHSBR1RXqfJW5MFWL45pWQoLUouq9Ug==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:12:01.944-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:09:07.085-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "testFailureSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "TestFailureIssueSummary", + "_supertype": { + "_name": "IssueSummary" + } + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/AppTests/DisplayedPlaybackTests.swift#EndingLineNumber=88&StartingLineNumber=88" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Uncategorized" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "XCTAssertGreaterThan failed: (\"9\") is not greater than (\"10\")" + }, + "testCaseName": { + "_type": { + "_name": "String" + }, + "_value": "DisplayedPlaybackTests.testLiveActionsExposeChangingDeliveredFramesAndSimulationTravel()" + } + } + ] + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~dlRBFQ3A1PVpsk8G5HPwVqqt8-93SndPgKTqzbKiHK-tL99QV9xqP-HV37_4QptzT7HYxk71x0Hhln2kUapn2g==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "100" + }, + "testsFailedCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/full-scene-playback/result.json b/docs/review/full-scene-playback/result.json new file mode 100644 index 00000000..1f0e98b8 --- /dev/null +++ b/docs/review/full-scene-playback/result.json @@ -0,0 +1,608 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~G5e45tieZ8SbibHYhIr_1fNovLf5W5MtJsROyhH3VQUCXn2tTXORU-TFVTtV9Dc-WJLSA_-l6yR-I0l-vEWIXw==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~NM58_64fOFAztbiLshj4Ub8deNHNyDvf1e9vtt24h7FLmK-cu1EKFPVZCp37Wakx5ureNnxYZGwMsuKikcbsPQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "100" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~BJ0RJtad5bFHRHHRNF7bSv5tTD33OiC5QYOvNt1Ge6zLSVoY07H0k8PqWzu2xVecvpxCJ9naofWVVy4ovPQt3g==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~kIdOslhECi2FBlTm-s0gBrLpP8pxv4Q2e4ygQymaZllZNkbYC7KgW18NP_bfSplwbrC3hA2Rm4mrZKEjLh0X5A==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:16:45.571-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T21:13:48.763-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~4t9-WWb86X8ZBFdMfrz_ZBxWa0cpbbCndhYxy7U7O-KVlza3UJDoiYyggHJBxuiv5jDX6N1KPOkZxrS-J_3yQQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "100" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/full-scene-playback/review.md b/docs/review/full-scene-playback/review.md new file mode 100644 index 00000000..eb4627c8 --- /dev/null +++ b/docs/review/full-scene-playback/review.md @@ -0,0 +1,11 @@ +# Full GameScene playback evidence — BP-008 + +The simulator rerun passed 100 test executions with zero failures. Both displayed-playback tests passed. The existing EnvironmentLibrary.swift:108 nonthrowing `try` warning remains. + +The DEBUG-only observer records actual SpriteKit texture identity after actions, authoritative Q8 position, rendered position, camera position and viewport. The full GameScene uses ordinary touch steering and normal scene callbacks. Four renderer images are linked to their observations. These show the existing admitted art, not the revised benchmark candidate. The visible white player outline remains unresolved. + +Full-scene capture: 90 observations, ticks 1–90, four images. See summary.json for measured display duration and distinct texture count. Synchronous image extraction adds substantial overhead; this is not a performance measurement or physical-device validation. Timing divergence needs a separate nonintrusive comparison before drawing conclusions. + +The initial run failed the isolated recorder's >10-observation assertion: 90 simulation ticks finished with only nine display callbacks. Defect https://github.com/Zero-State-LLC/SS-runtime/issues/126 was filed before repair. The recorder now continues normal simulation until both at least 90 ticks and 11 observations exist; the assertion and timeout are unchanged. The rerun recorded 11 observations through tick 99. Initial failure evidence is retained in the user-facing outputs/SS-full-scene-playback/initial directory. + +The last core-only run passed 773 tests across 109 suites; core sources have not changed since that run. This rerun validates the app/test-only changes. No production asset, gameplay, spec pin, or physical-device build was changed. Revised character/camera art, full motion/contact matrix, benchmark composition and contrast acceptance remain open. diff --git a/docs/review/full-scene-playback/summary.json b/docs/review/full-scene-playback/summary.json new file mode 100644 index 00000000..6e6c3a5b --- /dev/null +++ b/docs/review/full-scene-playback/summary.json @@ -0,0 +1,14 @@ +{ + "testExecutions": 100, + "failures": 0, + "fullSceneObservations": 90, + "ticks": [ + 1, + 90 + ], + "displayElapsedSeconds": 4.375015124998754, + "distinctFramePaths": 6, + "imageCount": 4, + "device": "iPhone 17 Pro Simulator, iOS 26.5", + "specCommit": "521aec30cbb926938591d1ffb22233b24102732c" +} diff --git a/docs/review/ground-cue/comparison-grayscale.png b/docs/review/ground-cue/comparison-grayscale.png new file mode 100644 index 00000000..e14619d5 Binary files /dev/null and b/docs/review/ground-cue/comparison-grayscale.png differ diff --git a/docs/review/ground-cue/comparison.png b/docs/review/ground-cue/comparison.png new file mode 100644 index 00000000..fee882e6 Binary files /dev/null and b/docs/review/ground-cue/comparison.png differ diff --git a/docs/review/ground-cue/review.md b/docs/review/ground-cue/review.md new file mode 100644 index 00000000..0c4a2e34 --- /dev/null +++ b/docs/review/ground-cue/review.md @@ -0,0 +1,13 @@ +# BP-009 combined occlusion cue comparison + +Runtime parentc5b5037; adopted spec00ce027209e6c233bcdd35295f35f0b9bfb9bbe5. Candidate only, not shipping treatment. + +The revised contract requires understandable Player ground position and solid boundary during occlusion, lifecycle restoration, static Reduced Motion readability, and continuous/encounter evidence before acceptance. Runtime pin and all21contract/fixture files match this exact spec commit except documented catalog specificationCommit. No gameplay identity change. + +The real SpriteKit test compares0.35architecture opacity alone with the same opacity plus an ivory projected footprint and a black-backed ivory Player contact ring. The ring uses the authoritative18-unit collision radius and the same ground projection; it is elliptical in the captured view. Test verifies the cue has no actions. Rear contacts are manually selected test cases, not a production eligibility classifier. This does not establish Reduced Motion integration, lifecycle behavior or multi-occluder correctness. + +OBSERVED: the outline makes the occupied ground region explicit and the contact ring locates the feet. Visual review still finds the whole white polygon too diagnostic for the intended street scene; the translucent building and high projected rear position can remain ambiguous. Do not declare visual acceptance. Next comparison should preserve the useful ground information with a less intrusive boundary/material treatment and continuous entry/exit before a production choice. + +Validation: Test-SSRuntime-2026.10.14_12-10-27--0700.xcresult Passed87tests (89executions including dynamic cases), zero failures/skips, iPhone17Pro simulatoriOS26.5. Four targeted ContractVersionsTests/AssetCatalogTests passed. Spec validator passed. No physical-device test. Natural screenshots are actual renderer captures; comparison labels and grayscale conversion are postprocessing only. + +Apple's node-property propagation documentation supports separate opacity and drawing-order handling: https://developer.apple.com/documentation/spritekit/about-node-property-propagation (accessed2026-10-14). The precise cue style/opacity is an SS experiment, not an Apple recommendation. diff --git a/docs/review/ground-cue/test-summary.json b/docs/review/ground-cue/test-summary.json new file mode 100644 index 00000000..029e83d6 --- /dev/null +++ b/docs/review/ground-cue/test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 89, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792005129.671, + "passedTests" : 87, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792005027.513, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "45% of duration", + "text" : "2 longest test runs with outlier durations exceeding 7.05s (three standard deviations)" + } + ], + "totalTestCount" : 87 +} diff --git a/docs/review/hostile-framing/BP010-legal-projected-100-reduced-false.png b/docs/review/hostile-framing/BP010-legal-projected-100-reduced-false.png new file mode 100644 index 00000000..3d2fe13c Binary files /dev/null and b/docs/review/hostile-framing/BP010-legal-projected-100-reduced-false.png differ diff --git a/docs/review/hostile-framing/BP010-legal-projected-125-reduced-false.png b/docs/review/hostile-framing/BP010-legal-projected-125-reduced-false.png new file mode 100644 index 00000000..21f6c3e4 Binary files /dev/null and b/docs/review/hostile-framing/BP010-legal-projected-125-reduced-false.png differ diff --git a/docs/review/hostile-framing/README.md b/docs/review/hostile-framing/README.md new file mode 100644 index 00000000..d9a3e07c --- /dev/null +++ b/docs/review/hostile-framing/README.md @@ -0,0 +1,9 @@ +# Hostile encounter framing — bounded diagnostic + +Seed 1, tick 4248, player (1327,1495), facing west; four enemies, eight cameras and one hostile projectile. Actual command-driven state, no scenario seeding, no actor/solid/camera filtering or camera relocation. Command replay digest d3802f536474ccaed97abd8a28a2fe24692cc62cf881097f9085ee099e84ddc5 matches. Focused test Test-SSRuntime-2026.10.15_21-49-14--0700 passed in 32.205 seconds. + +The earlier tick-461 capture had only a friendly projectile; it remains in SS-legal-framing and cannot support hostile-warning claims. The fixture now requires hostile=true. Both 1×/1.25× projected snapshots retain every entity, with camera-owned HUD unchanged and actor sprites upright. Old environment art remains visibly distorted by the ground projection; this is diagnostic, not completed benchmark delivery. The player's existing production outline appears in this legal baseline; clean art-review suppression was not applied. + +At 1.25×, camera-6, camera-7 and enemy-151 no longer intersect the viewport although they do at 1×. Enemy-144 intersects but is not fully contained. Hostile projectile 163 remains onscreen in both framings/motion modes. Canvas intersection is not unobscured pixel visibility or warning lead time. The scene is near the arena's northern edge; current axis-aligned camera clamping has not been reconciled with projected arena boundaries. Do not adopt closer gameplay framing from this evidence. + +Next runtime work: separate ground surfaces from upright environment art and register their ground anchors; reconcile projected camera framing/boundaries before choosing zoom; then capture moving hostile warning lead time and foreground occlusion. Full facing/action art, shared benchmark scene, device and admission gates remain open. diff --git a/docs/review/hostile-framing/app-summary.json b/docs/review/hostile-framing/app-summary.json new file mode 100644 index 00000000..c18cd97a --- /dev/null +++ b/docs/review/hostile-framing/app-summary.json @@ -0,0 +1,42 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 1, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792126205.995, + "passedTests" : 1, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792126154.972, + "statistics" : [ + + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + + ], + "totalTestCount" : 1 +} diff --git a/docs/review/hostile-framing/comparison.json b/docs/review/hostile-framing/comparison.json new file mode 100644 index 00000000..246e7442 --- /dev/null +++ b/docs/review/hostile-framing/comparison.json @@ -0,0 +1,40 @@ +[ + { + "reducedMotion": false, + "tick": 4248, + "lostActors": [ + "sprite-camera-6", + "sprite-camera-7", + "sprite-enemy-151" + ], + "partlyVisibleActors": [ + "sprite-enemy-144" + ], + "projectilesAt125": [ + { + "hostile": true, + "id": 163, + "visibleOrigin": true + } + ] + }, + { + "reducedMotion": true, + "tick": 4248, + "lostActors": [ + "sprite-camera-6", + "sprite-camera-7", + "sprite-enemy-151" + ], + "partlyVisibleActors": [ + "sprite-enemy-144" + ], + "projectilesAt125": [ + { + "hostile": true, + "id": 163, + "visibleOrigin": true + } + ] + } +] diff --git a/docs/review/hud-safe-camera/BP007-camera-contained-projected-100-reduced-false.png b/docs/review/hud-safe-camera/BP007-camera-contained-projected-100-reduced-false.png new file mode 100644 index 00000000..b4365a80 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-contained-projected-100-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-contained-projected-100-reduced-true.png b/docs/review/hud-safe-camera/BP007-camera-contained-projected-100-reduced-true.png new file mode 100644 index 00000000..9545740a Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-contained-projected-100-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-contained-projected-125-reduced-false.png b/docs/review/hud-safe-camera/BP007-camera-contained-projected-125-reduced-false.png new file mode 100644 index 00000000..bea27d13 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-contained-projected-125-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-contained-projected-125-reduced-true.png b/docs/review/hud-safe-camera/BP007-camera-contained-projected-125-reduced-true.png new file mode 100644 index 00000000..02410e6e Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-contained-projected-125-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-contained-visibility-100-reduced-false.json b/docs/review/hud-safe-camera/BP007-camera-contained-visibility-100-reduced-false.json new file mode 100644 index 00000000..769d7c08 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-contained-visibility-100-reduced-false.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1374.248046875, + 523.92999267578125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 978.26800537109375, + 620.09600830078125, + 64.00006103515625, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1170.6009521484375, + 852.0269775390625, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 966.9539794921875, + 1180.125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1419.501953125, + 1225.3800048828125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1419.501953125, + 1089.614990234375, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1781.541015625, + 1270.634033203125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2075.697998046875, + 1055.6739501953125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 983.92498779296875, + 1204.873046875, + 64.00006103515625, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 860.88800048828125, + 1062.0379638671875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1056.7569580078125, + 1169.8719482421875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1228.583984375, + 1066.988037109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1442.8370361328125, + 1079.362060546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1157.428955078125, + 327.9219970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1161.6300048828125, + 434.87600708007812, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 930.18499755859375, + 393.864013671875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1226.198974609375, + 401.01800537109375, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1206.0400390625, + 536.2559814453125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1209.7139892578125, + 588.62298583984375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 996.208984375, + 570.155029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1260.75, + 670.60601806640625, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1339.4189453125, + 961.89202880859375, + 128, + 48 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1017.8660278320312, + 1112.81103515625, + 63.99993896484375, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 1905.10498046875, + 1025.531982421875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 1817.8260498046875, + 1118.9530029296875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1526.9830322265625, + 1116.5269775390625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2416.0791015625, + 893.60797119140625, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 663.42498779296875, + 208.0469970703125, + 128, + 512 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 558.052978515625, + 537.75299072265625, + 384, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 980.208984375, + 603.6939697265625, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 948.208984375, + 656.7130126953125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1326.248046875, + 800.7130126953125, + 160, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 970.83599853515625, + 903.67401123046875, + 191.99993896484375, + 320.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1037.9830322265625, + 1071.3800048828125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1403.501953125, + 940.3599853515625, + 96, + 224 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1704.2860107421875, + 965.73297119140625, + 128, + 127.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1659.031982421875, + 1124.125, + 128, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 1962.56005859375, + 1070.8699951171875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2143.580078125, + 1161.3800048828125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2279.343994140625, + 811.2230224609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2550.873046875, + 946.98797607421875, + 64, + 256.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "contained", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1056.58154296875 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-contained-visibility-100-reduced-true.json b/docs/review/hud-safe-camera/BP007-camera-contained-visibility-100-reduced-true.json new file mode 100644 index 00000000..769d7c08 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-contained-visibility-100-reduced-true.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1374.248046875, + 523.92999267578125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 978.26800537109375, + 620.09600830078125, + 64.00006103515625, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1170.6009521484375, + 852.0269775390625, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 966.9539794921875, + 1180.125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1419.501953125, + 1225.3800048828125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1419.501953125, + 1089.614990234375, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1781.541015625, + 1270.634033203125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2075.697998046875, + 1055.6739501953125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 983.92498779296875, + 1204.873046875, + 64.00006103515625, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 860.88800048828125, + 1062.0379638671875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1056.7569580078125, + 1169.8719482421875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1228.583984375, + 1066.988037109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1442.8370361328125, + 1079.362060546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1157.428955078125, + 327.9219970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1161.6300048828125, + 434.87600708007812, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 930.18499755859375, + 393.864013671875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1226.198974609375, + 401.01800537109375, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1206.0400390625, + 536.2559814453125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1209.7139892578125, + 588.62298583984375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 996.208984375, + 570.155029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1260.75, + 670.60601806640625, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1339.4189453125, + 961.89202880859375, + 128, + 48 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1017.8660278320312, + 1112.81103515625, + 63.99993896484375, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 1905.10498046875, + 1025.531982421875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 1817.8260498046875, + 1118.9530029296875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1526.9830322265625, + 1116.5269775390625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2416.0791015625, + 893.60797119140625, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 663.42498779296875, + 208.0469970703125, + 128, + 512 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 558.052978515625, + 537.75299072265625, + 384, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 980.208984375, + 603.6939697265625, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 948.208984375, + 656.7130126953125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1326.248046875, + 800.7130126953125, + 160, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 970.83599853515625, + 903.67401123046875, + 191.99993896484375, + 320.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1037.9830322265625, + 1071.3800048828125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1403.501953125, + 940.3599853515625, + 96, + 224 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1704.2860107421875, + 965.73297119140625, + 128, + 127.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1659.031982421875, + 1124.125, + 128, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 1962.56005859375, + 1070.8699951171875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2143.580078125, + 1161.3800048828125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2279.343994140625, + 811.2230224609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2550.873046875, + 946.98797607421875, + 64, + 256.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "contained", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1056.58154296875 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-contained-visibility-125-reduced-false.json b/docs/review/hud-safe-camera/BP007-camera-contained-visibility-125-reduced-false.json new file mode 100644 index 00000000..54813042 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-contained-visibility-125-reduced-false.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1471.7203369140625, + 444.27496337890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 976.745361328125, + 564.48370361328125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1217.16162109375, + 854.3973388671875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 962.6029052734375, + 1264.5186767578125, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1528.2890625, + 1321.0875244140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1528.2890625, + 1151.3824462890625, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1980.836669921875, + 1377.65625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2348.532958984375, + 1108.9561767578125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 983.816650390625, + 1295.4549560546875, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 830.0203857421875, + 1116.9111328125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1074.856689453125, + 1251.702392578125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1289.640380859375, + 1123.0972900390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1557.45654296875, + 1138.5660400390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1200.6966552734375, + 199.26617431640625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1205.947998046875, + 332.9586181640625, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 916.6416015625, + 281.6923828125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1286.6591796875, + 290.63616943359375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1261.4603271484375, + 459.68243408203125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1266.052978515625, + 525.14239501953125, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 999.171630859375, + 502.057373046875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1329.847900390625, + 627.6212158203125, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1428.18408203125, + 991.7286376953125, + 160, + 60 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1026.242919921875, + 1180.37744140625, + 80, + 160 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2135.291748046875, + 1071.2786865234375, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2026.19287109375, + 1188.054931640625, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1662.63916015625, + 1185.0211181640625, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2774.01025390625, + 906.3736572265625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 583.191650390625, + 49.42242431640625, + 160, + 640 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 451.47671508789062, + 461.554931640625, + 479.99996948242188, + 240 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 979.171630859375, + 543.98114013671875, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 939.171630859375, + 610.25494384765625, + 240, + 480.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1411.7203369140625, + 790.2550048828125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 967.455322265625, + 918.9561767578125, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1051.38916015625, + 1128.5875244140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1508.2890625, + 964.8135986328125, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1884.26806640625, + 996.5299072265625, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1827.700439453125, + 1194.5186767578125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2207.111572265625, + 1127.951171875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2433.38525390625, + 1241.0875244140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2603.090576171875, + 803.392333984375, + 80, + 320.0001220703125 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2942.501708984375, + 973.097412109375, + 80, + 319.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "contained", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1152.46533203125 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-contained-visibility-125-reduced-true.json b/docs/review/hud-safe-camera/BP007-camera-contained-visibility-125-reduced-true.json new file mode 100644 index 00000000..54813042 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-contained-visibility-125-reduced-true.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1471.7203369140625, + 444.27496337890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 976.745361328125, + 564.48370361328125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1217.16162109375, + 854.3973388671875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 962.6029052734375, + 1264.5186767578125, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1528.2890625, + 1321.0875244140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1528.2890625, + 1151.3824462890625, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1980.836669921875, + 1377.65625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2348.532958984375, + 1108.9561767578125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 983.816650390625, + 1295.4549560546875, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 830.0203857421875, + 1116.9111328125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1074.856689453125, + 1251.702392578125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1289.640380859375, + 1123.0972900390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1557.45654296875, + 1138.5660400390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1200.6966552734375, + 199.26617431640625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1205.947998046875, + 332.9586181640625, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 916.6416015625, + 281.6923828125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1286.6591796875, + 290.63616943359375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1261.4603271484375, + 459.68243408203125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1266.052978515625, + 525.14239501953125, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 999.171630859375, + 502.057373046875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1329.847900390625, + 627.6212158203125, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1428.18408203125, + 991.7286376953125, + 160, + 60 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1026.242919921875, + 1180.37744140625, + 80, + 160 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2135.291748046875, + 1071.2786865234375, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2026.19287109375, + 1188.054931640625, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1662.63916015625, + 1185.0211181640625, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2774.01025390625, + 906.3736572265625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 583.191650390625, + 49.42242431640625, + 160, + 640 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 451.47671508789062, + 461.554931640625, + 479.99996948242188, + 240 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 979.171630859375, + 543.98114013671875, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 939.171630859375, + 610.25494384765625, + 240, + 480.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1411.7203369140625, + 790.2550048828125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 967.455322265625, + 918.9561767578125, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1051.38916015625, + 1128.5875244140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1508.2890625, + 964.8135986328125, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1884.26806640625, + 996.5299072265625, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1827.700439453125, + 1194.5186767578125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2207.111572265625, + 1127.951171875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2433.38525390625, + 1241.0875244140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2603.090576171875, + 803.392333984375, + 80, + 320.0001220703125 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2942.501708984375, + 973.097412109375, + 80, + 319.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "contained", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1152.46533203125 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-100-reduced-false.png b/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-100-reduced-false.png new file mode 100644 index 00000000..fb1117c3 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-100-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-100-reduced-true.png b/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-100-reduced-true.png new file mode 100644 index 00000000..ef5f5c28 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-100-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-125-reduced-false.png b/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-125-reduced-false.png new file mode 100644 index 00000000..cc3e8caa Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-125-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-125-reduced-true.png b/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-125-reduced-true.png new file mode 100644 index 00000000..458235f8 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-hud-safe-projected-125-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-100-reduced-false.json b/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-100-reduced-false.json new file mode 100644 index 00000000..08fad771 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-100-reduced-false.json @@ -0,0 +1,631 @@ +{ + "actors" : [ + { + "bounds" : [ + 1572.177978515625, + 673.9000244140625, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1176.197998046875, + 770.0670166015625, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.531005859375, + 1001.9979858398438, + 64, + 96.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1164.884033203125, + 1330.094970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1617.4329833984375, + 1375.3499755859375, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1617.4329833984375, + 1239.5860595703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1979.470947265625, + 1420.60498046875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2273.6279296875, + 1205.64404296875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1181.85498046875, + 1354.843994140625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1058.8179931640625, + 1212.008056640625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1254.68701171875, + 1319.842041015625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1426.5140380859375, + 1216.9580078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1640.7669677734375, + 1229.33203125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1355.3599853515625, + 477.89300537109375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1359.56103515625, + 584.84600830078125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1128.114990234375, + 543.833984375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1424.1290283203125, + 550.98797607421875, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1403.969970703125, + 686.22601318359375, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1407.64404296875, + 738.593994140625, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1194.1390380859375, + 720.1259765625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1458.6800537109375, + 820.57598876953125, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1537.3499755859375, + 1111.863037109375, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1215.7960205078125, + 1262.781982421875, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2103.034912109375, + 1175.501953125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2015.7559814453125, + 1268.9239501953125, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1724.9129638671875, + 1266.4969482421875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2614.010009765625, + 1043.5780029296875, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 861.35498046875, + 358.01800537109375, + 128, + 512 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 755.98297119140625, + 687.7230224609375, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1178.1390380859375, + 753.66497802734375, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1146.1390380859375, + 806.68402099609375, + 192, + 384.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1524.177978515625, + 950.68402099609375, + 160, + 96.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1168.7669677734375, + 1053.64404296875, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1235.9139404296875, + 1221.3499755859375, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1601.4329833984375, + 1090.3310546875, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1902.217041015625, + 1115.7030029296875, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1856.9620361328125, + 1274.094970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2160.490966796875, + 1220.8399658203125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2341.510009765625, + 1311.3499755859375, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2477.27490234375, + 961.1939697265625, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2748.803955078125, + 1096.9580078125, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "hud-safe", + "hudExclusions" : [ + [ + -333.24301147460938, + 124.75700378417969, + 185.48599243164062, + 19.486007690429688 + ], + [ + -332, + 127, + 151.27999877929688, + 15 + ], + [ + -247.5, + 130.5, + 15, + 8 + ], + [ + -126.24299621582031, + 119.75700378417969, + 252.48599243164062, + 22.486007690429688 + ], + [ + -125, + 122, + 150, + 18 + ], + [ + -76.242996215820312, + 121, + 2.4860000610351562, + 20 + ], + [ + -13.743000030517578, + 121, + 2.4860000610351562, + 20 + ], + [ + 48.756999969482422, + 121, + 2.4860000610351562, + 20 + ], + [ + 123.75700378417969, + 121, + 2.4860000610351562, + 20 + ], + [ + -120.11199951171875, + 122.44400024414062, + 250.22300720214844, + 17.11199951171875 + ], + [ + -26, + 103, + 53, + 10 + ], + [ + -332, + 91, + 73, + 9 + ], + [ + -332, + 55.5, + 32, + 9 + ], + [ + 226.64999389648438, + 35.650001525878906, + 55.70001220703125, + 55.700004577636719 + ], + [ + 247.5, + 59.5, + 15, + 9 + ], + [ + -262.54998779296875, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + -248.55000305175781, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + -234.55000305175781, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + 268, + 66, + 64, + 9 + ], + [ + -338.635986328125, + -148.63600158691406, + 147.27099609375, + 147.27099609375 + ], + [ + -296.58999633789062, + -106.58999633789062, + 63.17999267578125, + 63.180000305175781 + ], + [ + 236.36399841308594, + -121.63600158691406, + 91.271011352539062, + 91.271003723144531 + ], + [ + 273, + -80, + 19, + 8 + ], + [ + 297.64999389648438, + 108.65000152587891, + 46.70001220703125, + 46.700004577636719 + ], + [ + 317, + 127, + 9, + 11 + ] + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + -191.364990234375, + -163, + 418.01498413085938, + 266 + ], + "tick" : 4248, + "worldFocus" : [ + 1373.219970703125, + 1315.8438720703125 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-100-reduced-true.json b/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-100-reduced-true.json new file mode 100644 index 00000000..08fad771 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-100-reduced-true.json @@ -0,0 +1,631 @@ +{ + "actors" : [ + { + "bounds" : [ + 1572.177978515625, + 673.9000244140625, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1176.197998046875, + 770.0670166015625, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.531005859375, + 1001.9979858398438, + 64, + 96.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1164.884033203125, + 1330.094970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1617.4329833984375, + 1375.3499755859375, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1617.4329833984375, + 1239.5860595703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1979.470947265625, + 1420.60498046875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2273.6279296875, + 1205.64404296875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1181.85498046875, + 1354.843994140625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1058.8179931640625, + 1212.008056640625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1254.68701171875, + 1319.842041015625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1426.5140380859375, + 1216.9580078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1640.7669677734375, + 1229.33203125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1355.3599853515625, + 477.89300537109375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1359.56103515625, + 584.84600830078125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1128.114990234375, + 543.833984375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1424.1290283203125, + 550.98797607421875, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1403.969970703125, + 686.22601318359375, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1407.64404296875, + 738.593994140625, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1194.1390380859375, + 720.1259765625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1458.6800537109375, + 820.57598876953125, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1537.3499755859375, + 1111.863037109375, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1215.7960205078125, + 1262.781982421875, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2103.034912109375, + 1175.501953125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2015.7559814453125, + 1268.9239501953125, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1724.9129638671875, + 1266.4969482421875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2614.010009765625, + 1043.5780029296875, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 861.35498046875, + 358.01800537109375, + 128, + 512 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 755.98297119140625, + 687.7230224609375, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1178.1390380859375, + 753.66497802734375, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1146.1390380859375, + 806.68402099609375, + 192, + 384.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1524.177978515625, + 950.68402099609375, + 160, + 96.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1168.7669677734375, + 1053.64404296875, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1235.9139404296875, + 1221.3499755859375, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1601.4329833984375, + 1090.3310546875, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1902.217041015625, + 1115.7030029296875, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1856.9620361328125, + 1274.094970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2160.490966796875, + 1220.8399658203125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2341.510009765625, + 1311.3499755859375, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2477.27490234375, + 961.1939697265625, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2748.803955078125, + 1096.9580078125, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "hud-safe", + "hudExclusions" : [ + [ + -333.24301147460938, + 124.75700378417969, + 185.48599243164062, + 19.486007690429688 + ], + [ + -332, + 127, + 151.27999877929688, + 15 + ], + [ + -247.5, + 130.5, + 15, + 8 + ], + [ + -126.24299621582031, + 119.75700378417969, + 252.48599243164062, + 22.486007690429688 + ], + [ + -125, + 122, + 150, + 18 + ], + [ + -76.242996215820312, + 121, + 2.4860000610351562, + 20 + ], + [ + -13.743000030517578, + 121, + 2.4860000610351562, + 20 + ], + [ + 48.756999969482422, + 121, + 2.4860000610351562, + 20 + ], + [ + 123.75700378417969, + 121, + 2.4860000610351562, + 20 + ], + [ + -120.11199951171875, + 122.44400024414062, + 250.22300720214844, + 17.11199951171875 + ], + [ + -26, + 103, + 53, + 10 + ], + [ + -332, + 91, + 73, + 9 + ], + [ + -332, + 55.5, + 32, + 9 + ], + [ + 226.64999389648438, + 35.650001525878906, + 55.70001220703125, + 55.700004577636719 + ], + [ + 247.5, + 59.5, + 15, + 9 + ], + [ + -262.54998779296875, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + -248.55000305175781, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + -234.55000305175781, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + 268, + 66, + 64, + 9 + ], + [ + -338.635986328125, + -148.63600158691406, + 147.27099609375, + 147.27099609375 + ], + [ + -296.58999633789062, + -106.58999633789062, + 63.17999267578125, + 63.180000305175781 + ], + [ + 236.36399841308594, + -121.63600158691406, + 91.271011352539062, + 91.271003723144531 + ], + [ + 273, + -80, + 19, + 8 + ], + [ + 297.64999389648438, + 108.65000152587891, + 46.70001220703125, + 46.700004577636719 + ], + [ + 317, + 127, + 9, + 11 + ] + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + -191.364990234375, + -163, + 418.01498413085938, + 266 + ], + "tick" : 4248, + "worldFocus" : [ + 1373.219970703125, + 1315.8438720703125 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-125-reduced-false.json b/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-125-reduced-false.json new file mode 100644 index 00000000..bcaf4683 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-125-reduced-false.json @@ -0,0 +1,631 @@ +{ + "actors" : [ + { + "bounds" : [ + 1671.828857421875, + 543.86004638671875, + 80.0001220703125, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1176.8538818359375, + 664.06884765625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1417.2701416015625, + 953.98248291015625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1162.71142578125, + 1364.103759765625, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1728.3975830078125, + 1420.672607421875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1728.3975830078125, + 1250.96630859375, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2180.945068359375, + 1477.241455078125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2548.64111328125, + 1208.5400390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1183.9251708984375, + 1395.0400390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1030.12890625, + 1216.4951171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1274.9652099609375, + 1351.28759765625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1489.7489013671875, + 1222.682373046875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1757.5650634765625, + 1238.14990234375, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1400.80517578125, + 298.851318359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1406.0562744140625, + 432.54254150390625, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1116.7501220703125, + 381.27752685546875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1486.7677001953125, + 390.22003173828125, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1461.567626953125, + 559.267578125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1466.1614990234375, + 624.726318359375, + 60, + 180.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1199.2801513671875, + 601.64129638671875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1529.956298828125, + 727.20501708984375, + 240.0001220703125, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1628.2926025390625, + 1091.3125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1226.3514404296875, + 1279.961181640625, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2335.39990234375, + 1170.862548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2226.2998046875, + 1287.64013671875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1862.7476806640625, + 1284.606201171875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2974.117431640625, + 1005.9574584960938, + 120, + 160.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 783.3001708984375, + 149.007568359375, + 160, + 640.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 651.5850830078125, + 561.13873291015625, + 480, + 240 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1179.2801513671875, + 643.5650634765625, + 160, + 159.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1139.2801513671875, + 709.84014892578125, + 240, + 479.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1611.828857421875, + 889.84014892578125, + 200.0001220703125, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1167.5638427734375, + 1018.5401000976562, + 240, + 399.99993896484375 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1251.49755859375, + 1228.172607421875, + 640.0001220703125, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1708.3975830078125, + 1064.398681640625, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2084.376220703125, + 1096.11376953125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 2027.8074951171875, + 1294.103759765625, + 159.9998779296875, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2407.219970703125, + 1227.53515625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2633.493896484375, + 1340.672607421875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2803.199951171875, + 902.97747802734375, + 80, + 320.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3142.610107421875, + 1072.682373046875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "hud-safe", + "hudExclusions" : [ + [ + -333.24301147460938, + 124.75700378417969, + 185.48599243164062, + 19.486007690429688 + ], + [ + -332, + 127, + 151.27999877929688, + 15 + ], + [ + -247.5, + 130.5, + 15, + 8 + ], + [ + -126.24299621582031, + 119.75700378417969, + 252.48599243164062, + 22.486007690429688 + ], + [ + -125, + 122, + 150, + 18 + ], + [ + -76.242996215820312, + 121, + 2.4860000610351562, + 20 + ], + [ + -13.743000030517578, + 121, + 2.4860000610351562, + 20 + ], + [ + 48.756999969482422, + 121, + 2.4860000610351562, + 20 + ], + [ + 123.75700378417969, + 121, + 2.4860000610351562, + 20 + ], + [ + -120.11199951171875, + 122.44400024414062, + 250.22300720214844, + 17.11199951171875 + ], + [ + -26, + 103, + 53, + 10 + ], + [ + -332, + 91, + 73, + 9 + ], + [ + -332, + 55.5, + 32, + 9 + ], + [ + 226.64999389648438, + 35.650001525878906, + 55.70001220703125, + 55.700004577636719 + ], + [ + 247.5, + 59.5, + 15, + 9 + ], + [ + -262.54998779296875, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + -248.55000305175781, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + -234.55000305175781, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + 268, + 66, + 64, + 9 + ], + [ + -338.635986328125, + -148.63600158691406, + 147.27099609375, + 147.27099609375 + ], + [ + -296.58999633789062, + -106.58999633789062, + 63.17999267578125, + 63.180000305175781 + ], + [ + 236.36399841308594, + -121.63600158691406, + 91.271011352539062, + 91.271003723144531 + ], + [ + 273, + -80, + 19, + 8 + ], + [ + 297.64999389648438, + 108.65000152587891, + 46.70001220703125, + 46.700004577636719 + ], + [ + 317, + 127, + 9, + 11 + ] + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + -191.364990234375, + -163, + 418.01498413085938, + 266 + ], + "tick" : 4248, + "worldFocus" : [ + 1375.2896728515625, + 1372.039794921875 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-125-reduced-true.json b/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-125-reduced-true.json new file mode 100644 index 00000000..bcaf4683 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-hud-safe-visibility-125-reduced-true.json @@ -0,0 +1,631 @@ +{ + "actors" : [ + { + "bounds" : [ + 1671.828857421875, + 543.86004638671875, + 80.0001220703125, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1176.8538818359375, + 664.06884765625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1417.2701416015625, + 953.98248291015625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1162.71142578125, + 1364.103759765625, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1728.3975830078125, + 1420.672607421875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1728.3975830078125, + 1250.96630859375, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2180.945068359375, + 1477.241455078125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2548.64111328125, + 1208.5400390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1183.9251708984375, + 1395.0400390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1030.12890625, + 1216.4951171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1274.9652099609375, + 1351.28759765625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1489.7489013671875, + 1222.682373046875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1757.5650634765625, + 1238.14990234375, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1400.80517578125, + 298.851318359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1406.0562744140625, + 432.54254150390625, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1116.7501220703125, + 381.27752685546875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1486.7677001953125, + 390.22003173828125, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1461.567626953125, + 559.267578125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1466.1614990234375, + 624.726318359375, + 60, + 180.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1199.2801513671875, + 601.64129638671875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1529.956298828125, + 727.20501708984375, + 240.0001220703125, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1628.2926025390625, + 1091.3125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1226.3514404296875, + 1279.961181640625, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2335.39990234375, + 1170.862548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2226.2998046875, + 1287.64013671875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1862.7476806640625, + 1284.606201171875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2974.117431640625, + 1005.9574584960938, + 120, + 160.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 783.3001708984375, + 149.007568359375, + 160, + 640.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 651.5850830078125, + 561.13873291015625, + 480, + 240 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1179.2801513671875, + 643.5650634765625, + 160, + 159.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1139.2801513671875, + 709.84014892578125, + 240, + 479.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1611.828857421875, + 889.84014892578125, + 200.0001220703125, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1167.5638427734375, + 1018.5401000976562, + 240, + 399.99993896484375 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1251.49755859375, + 1228.172607421875, + 640.0001220703125, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1708.3975830078125, + 1064.398681640625, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2084.376220703125, + 1096.11376953125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 2027.8074951171875, + 1294.103759765625, + 159.9998779296875, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2407.219970703125, + 1227.53515625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2633.493896484375, + 1340.672607421875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2803.199951171875, + 902.97747802734375, + 80, + 320.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3142.610107421875, + 1072.682373046875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "hud-safe", + "hudExclusions" : [ + [ + -333.24301147460938, + 124.75700378417969, + 185.48599243164062, + 19.486007690429688 + ], + [ + -332, + 127, + 151.27999877929688, + 15 + ], + [ + -247.5, + 130.5, + 15, + 8 + ], + [ + -126.24299621582031, + 119.75700378417969, + 252.48599243164062, + 22.486007690429688 + ], + [ + -125, + 122, + 150, + 18 + ], + [ + -76.242996215820312, + 121, + 2.4860000610351562, + 20 + ], + [ + -13.743000030517578, + 121, + 2.4860000610351562, + 20 + ], + [ + 48.756999969482422, + 121, + 2.4860000610351562, + 20 + ], + [ + 123.75700378417969, + 121, + 2.4860000610351562, + 20 + ], + [ + -120.11199951171875, + 122.44400024414062, + 250.22300720214844, + 17.11199951171875 + ], + [ + -26, + 103, + 53, + 10 + ], + [ + -332, + 91, + 73, + 9 + ], + [ + -332, + 55.5, + 32, + 9 + ], + [ + 226.64999389648438, + 35.650001525878906, + 55.70001220703125, + 55.700004577636719 + ], + [ + 247.5, + 59.5, + 15, + 9 + ], + [ + -262.54998779296875, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + -248.55000305175781, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + -234.55000305175781, + 28.75, + 11.100006103515625, + 16.700000762939453 + ], + [ + 268, + 66, + 64, + 9 + ], + [ + -338.635986328125, + -148.63600158691406, + 147.27099609375, + 147.27099609375 + ], + [ + -296.58999633789062, + -106.58999633789062, + 63.17999267578125, + 63.180000305175781 + ], + [ + 236.36399841308594, + -121.63600158691406, + 91.271011352539062, + 91.271003723144531 + ], + [ + 273, + -80, + 19, + 8 + ], + [ + 297.64999389648438, + 108.65000152587891, + 46.70001220703125, + 46.700004577636719 + ], + [ + 317, + 127, + 9, + 11 + ] + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + -191.364990234375, + -163, + 418.01498413085938, + 266 + ], + "tick" : 4248, + "worldFocus" : [ + 1375.2896728515625, + 1372.039794921875 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-100-reduced-false.png b/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-100-reduced-false.png new file mode 100644 index 00000000..bff82d00 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-100-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-100-reduced-true.png b/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-100-reduced-true.png new file mode 100644 index 00000000..a6a78d37 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-100-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-125-reduced-false.png b/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-125-reduced-false.png new file mode 100644 index 00000000..02677818 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-125-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-125-reduced-true.png b/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-125-reduced-true.png new file mode 100644 index 00000000..358bd3b6 Binary files /dev/null and b/docs/review/hud-safe-camera/BP007-camera-player-visible-projected-125-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-100-reduced-false.json b/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-100-reduced-false.json new file mode 100644 index 00000000..8d8e95eb --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-100-reduced-false.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1443.95703125, + 544.34698486328125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1047.97705078125, + 640.51397705078125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1240.31005859375, + 872.4439697265625, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1036.6629638671875, + 1200.5419921875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1489.2120361328125, + 1245.7969970703125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1489.2120361328125, + 1110.031982421875, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1851.25, + 1291.052001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2145.406982421875, + 1076.0909423828125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1053.634033203125, + 1225.291015625, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 930.59698486328125, + 1082.4549560546875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1126.4659423828125, + 1190.2889404296875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1298.29296875, + 1087.405029296875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1512.5460205078125, + 1099.779052734375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1227.137939453125, + 348.33999633789062, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1231.3399658203125, + 455.29299926757812, + 48, + 63.999969482421875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 999.89398193359375, + 414.281005859375, + 64.00006103515625, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1295.907958984375, + 421.43499755859375, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1275.7490234375, + 556.6729736328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1279.4229736328125, + 609.03997802734375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1065.91796875, + 590.572021484375, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1330.458984375, + 691.02301025390625, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1409.1280517578125, + 982.30999755859375, + 128, + 48.00006103515625 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1087.574951171875, + 1133.22802734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 1974.81396484375, + 1045.948974609375, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 1887.5350341796875, + 1139.3699951171875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1596.6920166015625, + 1136.9439697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2485.7880859375, + 914.0250244140625, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 733.13397216796875, + 228.46499633789062, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 627.76202392578125, + 558.16998291015625, + 384, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1049.91796875, + 624.11102294921875, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1017.9180297851562, + 677.1309814453125, + 191.99993896484375, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1395.95703125, + 821.1309814453125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1040.5460205078125, + 924.09100341796875, + 192, + 320.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1107.6920166015625, + 1091.7969970703125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1473.2120361328125, + 960.77801513671875, + 96, + 224.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1773.9959716796875, + 986.1500244140625, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1728.740966796875, + 1144.5419921875, + 128, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2032.27001953125, + 1091.2869873046875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2213.2890625, + 1181.7969970703125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2349.053955078125, + 831.6400146484375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2620.58203125, + 967.405029296875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "player-visible", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1393.0675048828125, + 1126.290771484375 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-100-reduced-true.json b/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-100-reduced-true.json new file mode 100644 index 00000000..8d8e95eb --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-100-reduced-true.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1443.95703125, + 544.34698486328125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1047.97705078125, + 640.51397705078125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1240.31005859375, + 872.4439697265625, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1036.6629638671875, + 1200.5419921875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1489.2120361328125, + 1245.7969970703125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1489.2120361328125, + 1110.031982421875, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1851.25, + 1291.052001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2145.406982421875, + 1076.0909423828125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1053.634033203125, + 1225.291015625, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 930.59698486328125, + 1082.4549560546875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1126.4659423828125, + 1190.2889404296875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1298.29296875, + 1087.405029296875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1512.5460205078125, + 1099.779052734375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1227.137939453125, + 348.33999633789062, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1231.3399658203125, + 455.29299926757812, + 48, + 63.999969482421875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 999.89398193359375, + 414.281005859375, + 64.00006103515625, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1295.907958984375, + 421.43499755859375, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1275.7490234375, + 556.6729736328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1279.4229736328125, + 609.03997802734375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1065.91796875, + 590.572021484375, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1330.458984375, + 691.02301025390625, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1409.1280517578125, + 982.30999755859375, + 128, + 48.00006103515625 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1087.574951171875, + 1133.22802734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 1974.81396484375, + 1045.948974609375, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 1887.5350341796875, + 1139.3699951171875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1596.6920166015625, + 1136.9439697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2485.7880859375, + 914.0250244140625, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 733.13397216796875, + 228.46499633789062, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 627.76202392578125, + 558.16998291015625, + 384, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1049.91796875, + 624.11102294921875, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1017.9180297851562, + 677.1309814453125, + 191.99993896484375, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1395.95703125, + 821.1309814453125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1040.5460205078125, + 924.09100341796875, + 192, + 320.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1107.6920166015625, + 1091.7969970703125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1473.2120361328125, + 960.77801513671875, + 96, + 224.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1773.9959716796875, + 986.1500244140625, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1728.740966796875, + 1144.5419921875, + 128, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2032.27001953125, + 1091.2869873046875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2213.2890625, + 1181.7969970703125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2349.053955078125, + 831.6400146484375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2620.58203125, + 967.405029296875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "player-visible", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1393.0675048828125, + 1126.290771484375 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-125-reduced-false.json b/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-125-reduced-false.json new file mode 100644 index 00000000..c2775e00 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-125-reduced-false.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1539.5902099609375, + 452.15597534179688, + 80, + 120.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1044.616455078125, + 572.36474609375, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1285.03271484375, + 862.278564453125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1030.4739990234375, + 1272.39990234375, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1596.158935546875, + 1328.968505859375, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1596.158935546875, + 1159.2635498046875, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2048.7080078125, + 1385.5372314453125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2416.40283203125, + 1116.8360595703125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1051.6876220703125, + 1303.3359375, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 897.8914794921875, + 1124.791015625, + 80.0001220703125, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1142.7276611328125, + 1259.58349609375, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1357.51025390625, + 1130.978515625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1625.3277587890625, + 1146.447265625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1268.5677490234375, + 207.14724731445312, + 120, + 160.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1273.8189697265625, + 340.83847045898438, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 984.511474609375, + 289.57351684570312, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1354.5302734375, + 298.51724243164062, + 40, + 199.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1329.3302001953125, + 467.56344604492188, + 200, + 120.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1333.9227294921875, + 533.0235595703125, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1067.042724609375, + 509.93850708007812, + 120, + 59.999969482421875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1397.718994140625, + 635.5009765625, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1496.05517578125, + 999.6097412109375, + 160, + 60 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1094.114013671875, + 1188.2584228515625, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2203.16162109375, + 1079.1585693359375, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2094.0625, + 1195.93603515625, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1730.5103759765625, + 1192.90234375, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2841.88037109375, + 914.25341796875, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 651.062744140625, + 57.303497314453125, + 160, + 640.00009155273438 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 519.3465576171875, + 469.43600463867188, + 480, + 240.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1047.042724609375, + 551.8623046875, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1007.042724609375, + 618.135986328125, + 240, + 480 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1479.5902099609375, + 798.135986328125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1035.326416015625, + 926.8360595703125, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1119.2603759765625, + 1136.468505859375, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1576.158935546875, + 972.69482421875, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1952.1390380859375, + 1004.40966796875, + 160.0001220703125, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1895.5701904296875, + 1202.39990234375, + 160.0001220703125, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2274.9814453125, + 1135.8310546875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2501.25634765625, + 1248.968505859375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2670.96142578125, + 811.2735595703125, + 80, + 319.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3010.37255859375, + 980.978515625, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "player-visible", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1391.22900390625, + 1220.3360595703125 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-125-reduced-true.json b/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-125-reduced-true.json new file mode 100644 index 00000000..c2775e00 --- /dev/null +++ b/docs/review/hud-safe-camera/BP007-camera-player-visible-visibility-125-reduced-true.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1539.5902099609375, + 452.15597534179688, + 80, + 120.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1044.616455078125, + 572.36474609375, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1285.03271484375, + 862.278564453125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1030.4739990234375, + 1272.39990234375, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1596.158935546875, + 1328.968505859375, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1596.158935546875, + 1159.2635498046875, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2048.7080078125, + 1385.5372314453125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2416.40283203125, + 1116.8360595703125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1051.6876220703125, + 1303.3359375, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 897.8914794921875, + 1124.791015625, + 80.0001220703125, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1142.7276611328125, + 1259.58349609375, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1357.51025390625, + 1130.978515625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1625.3277587890625, + 1146.447265625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1268.5677490234375, + 207.14724731445312, + 120, + 160.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1273.8189697265625, + 340.83847045898438, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 984.511474609375, + 289.57351684570312, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1354.5302734375, + 298.51724243164062, + 40, + 199.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1329.3302001953125, + 467.56344604492188, + 200, + 120.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1333.9227294921875, + 533.0235595703125, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1067.042724609375, + 509.93850708007812, + 120, + 59.999969482421875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1397.718994140625, + 635.5009765625, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1496.05517578125, + 999.6097412109375, + 160, + 60 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1094.114013671875, + 1188.2584228515625, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2203.16162109375, + 1079.1585693359375, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2094.0625, + 1195.93603515625, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1730.5103759765625, + 1192.90234375, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2841.88037109375, + 914.25341796875, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 651.062744140625, + 57.303497314453125, + 160, + 640.00009155273438 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 519.3465576171875, + 469.43600463867188, + 480, + 240.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1047.042724609375, + 551.8623046875, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1007.042724609375, + 618.135986328125, + 240, + 480 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1479.5902099609375, + 798.135986328125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1035.326416015625, + 926.8360595703125, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1119.2603759765625, + 1136.468505859375, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1576.158935546875, + 972.69482421875, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1952.1390380859375, + 1004.40966796875, + 160.0001220703125, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1895.5701904296875, + 1202.39990234375, + 160.0001220703125, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2274.9814453125, + 1135.8310546875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2501.25634765625, + 1248.968505859375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2670.96142578125, + 811.2735595703125, + 80, + 319.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3010.37255859375, + 980.978515625, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "player-visible", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1391.22900390625, + 1220.3360595703125 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-commands-seed-1.json b/docs/review/hud-safe-camera/BP010-field-encounter-commands-seed-1.json new file mode 100644 index 00000000..fea01194 --- /dev/null +++ b/docs/review/hud-safe-camera/BP010-field-encounter-commands-seed-1.json @@ -0,0 +1 @@ +{"rulesetVersion":"ss-rules-008","arenaVersion":"civic-seam-arena-004","replaySchemaVersion":"runtime-kernel-001","commands":[{"y":0,"d":false,"x":32767,"t":1},{"y":0,"d":false,"x":32767,"t":2},{"y":0,"d":false,"x":32767,"t":3},{"y":0,"x":32767,"d":false,"t":4},{"y":0,"x":32767,"d":false,"t":5},{"y":0,"x":32767,"d":false,"t":6},{"y":0,"x":32767,"d":false,"t":7},{"y":0,"x":32767,"d":false,"t":8},{"y":0,"x":32767,"d":false,"t":9},{"y":0,"x":32767,"d":false,"t":10},{"y":0,"x":32767,"d":false,"t":11},{"y":0,"x":32767,"d":false,"t":12},{"y":0,"x":32767,"d":false,"t":13},{"y":0,"x":32767,"d":false,"t":14},{"y":0,"x":32767,"d":false,"t":15},{"y":0,"x":32767,"d":false,"t":16},{"y":0,"x":32767,"d":false,"t":17},{"y":0,"x":32767,"d":false,"t":18},{"y":0,"x":32767,"d":false,"t":19},{"y":0,"x":32767,"d":false,"t":20},{"y":0,"x":32767,"d":false,"t":21},{"y":0,"x":32767,"d":false,"t":22},{"y":0,"x":32767,"d":false,"t":23},{"y":0,"x":32767,"d":false,"t":24},{"y":0,"x":32767,"d":false,"t":25},{"y":0,"x":32767,"d":false,"t":26},{"y":0,"x":32767,"d":false,"t":27},{"y":0,"x":32767,"d":false,"t":28},{"y":0,"x":32767,"d":false,"t":29},{"y":0,"x":32767,"d":false,"t":30},{"y":0,"x":32767,"d":false,"t":31},{"y":0,"x":32767,"d":false,"t":32},{"y":0,"x":32767,"d":false,"t":33},{"y":0,"x":32767,"d":false,"t":34},{"y":0,"x":32767,"d":false,"t":35},{"y":0,"x":32767,"d":false,"t":36},{"y":14654,"x":29308,"d":false,"t":37},{"y":15054,"x":29104,"d":false,"t":38},{"y":15117,"x":29071,"d":false,"t":39},{"t":40,"x":29308,"y":14654,"d":false},{"t":41,"x":29308,"y":14654,"d":false},{"t":42,"x":26315,"y":19524,"d":false},{"t":43,"x":25865,"y":20117,"d":false},{"t":44,"x":25691,"y":20339,"d":false},{"t":45,"x":26064,"y":19858,"d":false},{"t":46,"x":25865,"y":20117,"d":false},{"t":47,"x":26423,"y":19377,"d":false},{"t":48,"x":24442,"y":21823,"d":false},{"t":49,"x":24599,"y":21647,"d":false},{"t":50,"x":24246,"y":22041,"d":false},{"t":51,"x":24419,"y":21849,"d":false},{"t":52,"x":24660,"y":21577,"d":false},{"t":53,"x":24077,"y":22225,"d":false},{"t":54,"x":23620,"y":22711,"d":false},{"t":55,"x":23679,"y":22649,"d":false},{"t":56,"x":23756,"y":22568,"d":false},{"t":57,"x":23170,"y":23170,"d":false},{"t":58,"x":23170,"y":23170,"d":false},{"t":59,"x":23170,"y":23170,"d":false},{"t":60,"x":24490,"y":21769,"d":false},{"t":61,"x":25172,"y":20977,"d":false},{"t":62,"x":32321,"y":5387,"d":false},{"t":63,"x":32480,"y":4331,"d":false},{"t":64,"x":32238,"y":5862,"d":false},{"t":65,"x":7741,"y":-31840,"d":false},{"t":66,"x":8461,"y":-31656,"d":false},{"t":67,"x":9040,"y":-31495,"d":false},{"t":68,"x":9636,"y":31318,"d":false},{"t":69,"x":9429,"y":-31381,"d":false},{"t":70,"x":10141,"y":-31158,"d":false},{"t":71,"x":10668,"y":-30982,"d":false},{"t":72,"x":11361,"y":-30734,"d":false},{"t":73,"x":12094,"y":-30453,"d":false},{"t":74,"x":-4634,"y":32438,"d":false},{"t":75,"x":12395,"y":-30332,"d":false},{"d":false,"t":76,"x":-5967,"y":32219},{"d":false,"t":77,"x":-5614,"y":32282},{"d":false,"t":78,"x":12144,"y":-30433},{"d":false,"t":79,"x":12820,"y":-30155},{"d":false,"t":80,"x":-8223,"y":31718},{"d":false,"t":81,"x":12943,"y":-30103},{"d":false,"t":82,"x":13526,"y":-29845},{"d":false,"t":83,"x":13995,"y":-29628},{"d":false,"t":84,"x":14594,"y":-29338},{"d":false,"t":85,"x":15136,"y":-29062},{"d":false,"t":86,"x":15626,"y":-28801},{"d":false,"t":87,"x":16123,"y":-28526},{"d":false,"t":88,"x":16627,"y":-28235},{"d":false,"t":89,"x":17253,"y":-27857},{"d":false,"t":90,"x":17768,"y":-27532},{"d":false,"t":91,"x":18176,"y":-27264},{"d":false,"t":92,"x":18890,"y":-26774},{"d":false,"t":93,"x":19312,"y":-26471},{"d":false,"t":94,"x":19848,"y":-26072},{"d":false,"t":95,"x":20365,"y":-25670},{"d":false,"t":96,"x":20909,"y":-25229},{"d":false,"t":97,"x":21540,"y":-24692},{"d":false,"t":98,"x":22085,"y":-24206},{"d":false,"t":99,"x":22441,"y":-23877},{"d":false,"t":100,"x":-23170,"y":-23170},{"d":false,"t":101,"x":23079,"y":-23260},{"d":false,"t":102,"x":-23170,"y":-23170},{"d":false,"t":103,"x":23529,"y":-22805},{"d":false,"t":104,"x":-23170,"y":-23170},{"d":false,"t":105,"x":24056,"y":-22248},{"d":false,"t":106,"x":-23170,"y":-23170},{"d":false,"t":107,"x":-23170,"y":-23170},{"d":false,"t":108,"x":24400,"y":-21870},{"d":false,"t":109,"x":-23170,"y":-23170},{"d":false,"t":110,"x":24917,"y":-21280},{"d":false,"t":111,"x":-23170,"y":-23170},{"x":-23170,"t":112,"d":false,"y":-23170},{"x":25320,"t":113,"d":false,"y":-20799},{"x":-23170,"t":114,"d":false,"y":-23170},{"x":25658,"t":115,"d":false,"y":-20380},{"x":-23170,"t":116,"d":false,"y":-23170},{"x":-23170,"t":117,"d":false,"y":-23170},{"x":26039,"t":118,"d":false,"y":-19891},{"x":-23170,"t":119,"d":false,"y":-23170},{"x":26366,"t":120,"d":false,"y":-19456},{"x":-23170,"t":121,"d":false,"y":-23170},{"x":26749,"t":122,"d":false,"y":-18925},{"x":-23170,"t":123,"d":false,"y":-23170},{"x":-23170,"t":124,"d":false,"y":-23170},{"x":27038,"t":125,"d":false,"y":-18510},{"x":-23170,"t":126,"d":false,"y":-23170},{"x":27264,"t":127,"d":false,"y":-18176},{"x":-23170,"t":128,"d":false,"y":-23170},{"x":-23170,"t":129,"d":false,"y":-23170},{"x":27539,"t":130,"d":false,"y":-17756},{"x":-23170,"t":131,"d":false,"y":-23170},{"x":-23170,"t":132,"d":false,"y":-23170},{"x":27756,"t":133,"d":false,"y":-17415},{"x":-23170,"t":134,"d":false,"y":-23170},{"x":27968,"t":135,"d":false,"y":-17072},{"x":-23170,"t":136,"d":false,"y":-23170},{"x":-23170,"t":137,"d":false,"y":-23170},{"x":28177,"t":138,"d":false,"y":-16725},{"x":-23170,"t":139,"d":false,"y":-23170},{"x":-23170,"t":140,"d":false,"y":-23170},{"x":28427,"t":141,"d":false,"y":-16296},{"x":-23170,"t":142,"d":false,"y":-23170},{"x":28703,"t":143,"d":false,"y":-15805},{"x":-23170,"t":144,"d":false,"y":-23170},{"x":-23170,"t":145,"d":false,"y":-23170},{"x":28745,"t":146,"d":false,"y":-15729},{"x":-23170,"t":147,"d":false,"y":-23170},{"d":false,"t":148,"x":-23170,"y":-23170},{"d":false,"t":149,"x":28937,"y":-15373},{"d":false,"t":150,"x":-32767,"y":0},{"d":false,"t":151,"x":-32767,"y":0},{"d":false,"t":152,"x":-32767,"y":0},{"d":false,"t":153,"x":-32767,"y":0},{"d":false,"t":154,"x":-32767,"y":0},{"d":false,"t":155,"x":-32767,"y":0},{"d":false,"t":156,"x":-32767,"y":0},{"d":false,"t":157,"x":-32767,"y":0},{"d":false,"t":158,"x":-32767,"y":0},{"d":false,"t":159,"x":-32767,"y":0},{"d":false,"t":160,"x":-32767,"y":0},{"d":false,"t":161,"x":-32767,"y":0},{"d":false,"t":162,"x":27748,"y":-17427},{"d":false,"t":163,"x":27909,"y":-17168},{"d":false,"t":164,"x":28105,"y":-16846},{"d":false,"t":165,"x":28260,"y":-16584},{"d":false,"t":166,"x":28450,"y":-16257},{"d":false,"t":167,"x":-28599,"y":15992},{"d":false,"t":168,"x":-28408,"y":16330},{"d":false,"t":169,"x":-28269,"y":16569},{"d":false,"t":170,"x":-28090,"y":16871},{"d":false,"t":171,"x":-27906,"y":17173},{"d":false,"t":172,"x":-27757,"y":17413},{"d":false,"t":173,"x":-27540,"y":17754},{"d":false,"t":174,"x":-27317,"y":18095},{"d":false,"t":175,"x":-27156,"y":18337},{"d":false,"t":176,"x":-26950,"y":18638},{"d":false,"t":177,"x":-26782,"y":18879},{"d":false,"t":178,"x":-26580,"y":19162},{"d":false,"t":179,"x":-26330,"y":19504},{"d":false,"t":180,"x":-26107,"y":19802},{"d":false,"t":181,"x":-25889,"y":20086},{"d":false,"t":182,"x":-25700,"y":20327},{"d":false,"t":183,"x":-25472,"y":20612},{"d":false,"x":-25276,"t":184,"y":20852},{"d":false,"x":-25038,"t":185,"y":21137},{"d":false,"x":-24834,"t":186,"y":21377},{"d":false,"x":-24586,"t":187,"y":21661},{"d":false,"x":-24287,"t":188,"y":21996},{"d":false,"x":-24070,"t":189,"y":22233},{"d":false,"x":-23807,"t":190,"y":22515},{"d":false,"x":-23537,"t":191,"y":22796},{"d":false,"x":-23309,"t":192,"y":23030},{"d":false,"x":-23029,"t":193,"y":23309},{"d":false,"x":-22745,"t":194,"y":23587},{"d":false,"x":-22454,"t":195,"y":23864},{"d":false,"x":-22206,"t":196,"y":24095},{"d":false,"x":-21904,"t":197,"y":24370},{"d":false,"x":-21597,"t":198,"y":24642},{"d":false,"x":-21380,"t":199,"y":24831},{"d":false,"x":-21062,"t":200,"y":25101},{"d":false,"x":-20739,"t":201,"y":25369},{"d":false,"x":-20458,"t":202,"y":25596},{"d":false,"x":-20184,"t":203,"y":25812},{"d":false,"x":-19893,"t":204,"y":26037},{"d":false,"x":-19597,"t":205,"y":26261},{"d":false,"x":-19185,"t":206,"y":26564},{"d":false,"x":-18877,"t":207,"y":26783},{"d":false,"x":-18610,"t":208,"y":26969},{"d":false,"x":-18313,"t":209,"y":27172},{"d":false,"x":-17921,"t":210,"y":27432},{"d":false,"x":-17592,"t":211,"y":27644},{"d":false,"x":-17184,"t":212,"y":27899},{"d":false,"x":-16918,"t":213,"y":28062},{"d":false,"x":-16618,"t":214,"y":28240},{"d":false,"x":-16147,"t":215,"y":28512},{"d":false,"x":-15913,"t":216,"y":28644},{"d":false,"x":-15473,"t":217,"y":28883},{"d":false,"x":-15150,"t":218,"y":29054},{"d":false,"x":-14779,"t":219,"y":29245},{"x":-14403,"y":29432,"t":220,"d":false},{"x":-13937,"y":29655,"t":221,"d":false},{"x":-13631,"y":29797,"t":222,"d":false},{"x":-13239,"y":29973,"t":223,"d":false},{"x":-12843,"y":30145,"t":224,"d":false},{"x":-12390,"y":30334,"t":225,"d":false},{"x":-12114,"y":30446,"t":226,"d":false},{"x":-11647,"y":30627,"t":227,"d":false},{"x":-11233,"y":30782,"t":228,"d":false},{"x":-10786,"y":30941,"t":229,"d":false},{"x":-10493,"y":31042,"t":230,"d":false},{"x":-9967,"y":31214,"t":231,"d":false},{"x":-9598,"y":31330,"t":232,"d":false},{"x":-9192,"y":31451,"t":233,"d":false},{"x":-8678,"y":31597,"t":234,"d":false},{"x":-8394,"y":31674,"t":235,"d":false},{"x":-7974,"y":31782,"t":236,"d":false},{"x":-7442,"y":31911,"t":237,"d":false},{"x":-7036,"y":32003,"t":238,"d":false},{"x":-6601,"y":32095,"t":239,"d":false},{"x":-6073,"y":32199,"t":240,"d":false},{"x":-5629,"y":32280,"t":241,"d":false},{"x":-5199,"y":32352,"t":242,"d":false},{"x":-4764,"y":32419,"t":243,"d":false},{"x":-4323,"y":32481,"t":244,"d":false},{"x":-3760,"y":32551,"t":245,"d":false},{"x":-3307,"y":32600,"t":246,"d":false},{"x":-2839,"y":32644,"t":247,"d":false},{"x":-2385,"y":32680,"t":248,"d":false},{"x":-1917,"y":32711,"t":249,"d":false},{"x":-1439,"y":32735,"t":250,"d":false},{"x":-967,"y":32753,"t":251,"d":false},{"x":-485,"y":32763,"t":252,"d":false},{"x":0,"y":32767,"t":253,"d":false},{"x":491,"y":32763,"t":254,"d":false},{"x":985,"y":32752,"t":255,"d":false},{"d":false,"t":256,"x":1488,"y":32733},{"d":false,"t":257,"x":1990,"y":32707},{"d":false,"t":258,"x":2513,"y":32670},{"d":false,"t":259,"x":3023,"y":32627},{"d":false,"t":260,"x":3535,"y":32576},{"d":false,"t":261,"x":3829,"y":32543},{"d":false,"t":262,"x":4347,"y":32477},{"d":false,"t":263,"x":4905,"y":32398},{"d":false,"t":264,"x":5429,"y":32314},{"d":false,"t":265,"x":5976,"y":32217},{"d":false,"t":266,"x":6426,"y":32131},{"d":false,"t":267,"x":6955,"y":32020},{"d":false,"t":268,"x":7512,"y":31894},{"d":false,"t":269,"x":7978,"y":31781},{"d":false,"t":270,"x":8542,"y":31634},{"d":false,"t":271,"x":9144,"y":31465},{"d":false,"t":272,"x":9589,"y":31333},{"d":false,"t":273,"x":10036,"y":31192},{"d":false,"t":274,"x":10567,"y":31016},{"d":false,"t":275,"x":11143,"y":30814},{"d":false,"t":276,"x":11596,"y":30647},{"d":false,"t":277,"x":12097,"y":30452},{"d":false,"t":278,"x":12603,"y":30246},{"d":false,"t":279,"x":13230,"y":29978},{"d":false,"t":280,"x":13687,"y":29772},{"d":false,"t":281,"x":14138,"y":29560},{"d":false,"t":282,"x":14768,"y":29250},{"d":false,"t":283,"x":15172,"y":29043},{"d":false,"t":284,"x":15741,"y":28738},{"d":false,"t":285,"x":16147,"y":28512},{"d":false,"t":286,"x":16729,"y":28175},{"d":false,"t":287,"x":17140,"y":27927},{"d":false,"t":288,"x":17764,"y":27534},{"d":false,"t":289,"x":18245,"y":27218},{"d":false,"t":290,"x":18659,"y":26935},{"d":false,"t":291,"x":19174,"y":26571},{"x":19734,"y":26158,"t":292,"d":false},{"x":20244,"y":25765,"t":293,"d":false},{"x":20657,"y":25436,"t":294,"d":false},{"x":21145,"y":25032,"t":295,"d":false},{"x":21555,"y":24679,"t":296,"d":false},{"x":21885,"y":24387,"t":297,"d":false},{"x":22212,"y":24089,"t":298,"d":false},{"x":22535,"y":23787,"t":299,"d":false},{"x":22776,"y":23556,"t":300,"d":false},{"x":23092,"y":23248,"t":301,"d":false},{"x":23403,"y":22935,"t":302,"d":false},{"x":23709,"y":22617,"t":303,"d":false},{"x":24167,"y":22127,"t":304,"d":false},{"x":24395,"y":21876,"t":305,"d":false},{"x":24689,"y":21544,"t":306,"d":false},{"x":24978,"y":21208,"t":307,"d":false},{"x":25198,"y":20946,"t":308,"d":false},{"x":25479,"y":20603,"t":309,"d":false},{"x":25694,"y":20335,"t":310,"d":false},{"x":25949,"y":20009,"t":311,"d":false},{"x":26157,"y":19735,"t":312,"d":false},{"x":26419,"y":19384,"t":313,"d":false},{"x":26695,"y":19001,"t":314,"d":false},{"x":26895,"y":18717,"t":315,"d":false},{"x":27191,"y":18284,"t":316,"d":false},{"x":27384,"y":17995,"t":317,"d":false},{"x":27573,"y":17703,"t":318,"d":false},{"x":27760,"y":17409,"t":319,"d":false},{"x":27987,"y":17042,"t":320,"d":false},{"x":28235,"y":16627,"t":321,"d":false},{"x":28411,"y":16325,"t":322,"d":false},{"x":28621,"y":15953,"t":323,"d":false},{"x":28790,"y":15647,"t":324,"d":false},{"x":29020,"y":15216,"t":325,"d":false},{"x":-12413,"y":30325,"t":326,"d":false},{"x":-11815,"y":30563,"t":327,"d":false},{"t":328,"d":false,"x":-11160,"y":30808},{"t":329,"d":false,"x":-10691,"y":30974},{"t":330,"d":false,"x":-10078,"y":31179},{"t":331,"d":false,"x":-9459,"y":31372},{"t":332,"d":false,"x":-8794,"y":31565},{"t":333,"d":false,"x":-8169,"y":31732},{"t":334,"d":false,"x":-7688,"y":31852},{"t":335,"d":false,"x":-7058,"y":31998},{"t":336,"d":false,"x":-6426,"y":32131},{"t":337,"d":false,"x":-5820,"y":32246},{"t":338,"d":false,"x":-5183,"y":32354},{"t":339,"d":false,"x":-4546,"y":32450},{"t":340,"d":false,"x":-3929,"y":32531},{"t":341,"d":false,"x":-3291,"y":32601},{"t":342,"d":false,"x":-2669,"y":32658},{"t":343,"d":false,"x":-2044,"y":32703},{"t":344,"d":false,"x":-1410,"y":32737},{"t":345,"d":false,"x":-784,"y":32758},{"t":346,"d":false,"x":-157,"y":32767},{"t":347,"d":false,"x":470,"y":32764},{"t":348,"d":false,"x":1097,"y":32749},{"t":349,"d":false,"x":1722,"y":32722},{"t":350,"d":false,"x":2346,"y":32683},{"t":351,"d":false,"x":2981,"y":32631},{"t":352,"d":false,"x":3601,"y":32568},{"t":353,"d":false,"x":4238,"y":32492},{"t":354,"d":false,"x":4853,"y":32406},{"t":355,"d":false,"x":5489,"y":32304},{"t":356,"d":false,"x":6095,"y":32195},{"t":357,"d":false,"x":6727,"y":32069},{"t":358,"d":false,"x":7357,"y":31931},{"t":359,"d":false,"x":7836,"y":31816},{"t":360,"d":false,"x":8462,"y":31655},{"t":361,"d":false,"x":9085,"y":31483},{"t":362,"d":false,"x":9702,"y":31298},{"t":363,"d":false,"x":10315,"y":31101},{"d":false,"t":364,"y":30893,"x":10922},{"d":false,"t":365,"y":30757,"x":11299},{"d":false,"t":366,"y":30603,"x":11710},{"d":false,"t":367,"y":8319,"x":31693},{"d":false,"t":368,"y":7924,"x":31794},{"d":false,"t":369,"y":7527,"x":31891},{"d":false,"t":370,"y":7129,"x":31982},{"d":false,"t":371,"y":6730,"x":32068},{"d":false,"t":372,"y":6331,"x":32150},{"d":false,"t":373,"y":5949,"x":32222},{"d":false,"t":374,"y":5547,"x":32294},{"d":false,"t":375,"y":5146,"x":32360},{"d":false,"t":376,"y":4759,"x":32420},{"d":false,"t":377,"y":4357,"x":32476},{"d":false,"t":378,"y":3967,"x":32526},{"d":false,"t":379,"y":3564,"x":32573},{"d":false,"t":380,"y":3172,"x":32613},{"d":false,"t":381,"y":2770,"x":32650},{"d":false,"t":382,"y":2377,"x":32681},{"d":false,"t":383,"y":2081,"x":32701},{"d":false,"t":384,"y":1681,"x":32724},{"d":false,"t":385,"y":1286,"x":32742},{"d":false,"t":386,"y":891,"x":32755},{"d":false,"t":387,"y":495,"x":32763},{"d":false,"t":388,"y":99,"x":32767},{"d":false,"t":389,"y":-297,"x":32766},{"d":false,"t":390,"y":-693,"x":32760},{"d":false,"t":391,"y":-1088,"x":32749},{"d":false,"t":392,"y":-1483,"x":32733},{"d":false,"t":393,"y":-1883,"x":32713},{"d":false,"t":394,"y":2292,"x":-32687},{"d":false,"t":395,"y":1901,"x":-32712},{"d":false,"t":396,"y":1511,"x":-32732},{"d":false,"t":397,"y":1112,"x":-32748},{"d":false,"t":398,"y":710,"x":-32759},{"d":false,"t":399,"y":306,"x":-32766},{"y":-102,"d":false,"t":400,"x":-32767},{"y":-515,"d":false,"t":401,"x":-32763},{"y":-930,"d":false,"t":402,"x":-32754},{"y":-1347,"d":false,"t":403,"x":-32739},{"y":-1771,"d":false,"t":404,"x":-32719},{"y":-2193,"d":false,"t":405,"x":-32693},{"y":-2521,"d":false,"t":406,"x":-32670},{"y":-2957,"d":false,"t":407,"x":-32633},{"y":-3386,"d":false,"t":408,"x":-32592},{"y":-3829,"d":false,"t":409,"x":-32543},{"y":-4169,"d":false,"t":410,"x":-32501},{"y":-4604,"d":false,"t":411,"x":-32442},{"y":-5072,"d":false,"t":412,"x":-32372},{"y":-5527,"d":false,"t":413,"x":-32297},{"y":-5986,"d":false,"t":414,"x":-32216},{"y":-6342,"d":false,"t":415,"x":-32147},{"y":-6806,"d":false,"t":416,"x":-32052},{"y":-7295,"d":false,"t":417,"x":-31945},{"y":-7660,"d":false,"t":418,"x":-31859},{"y":-8104,"d":false,"t":419,"x":-31749},{"y":-8603,"d":false,"t":420,"x":-31618},{"y":-8972,"d":false,"t":421,"x":-31515},{"y":-9374,"d":false,"t":422,"x":-31398},{"y":-9780,"d":false,"t":423,"x":-31273},{"y":-10259,"d":false,"t":424,"x":-31120},{"y":-10738,"d":false,"t":425,"x":-30958},{"y":-11152,"d":false,"t":426,"x":-30811},{"y":-11569,"d":false,"t":427,"x":-30657},{"y":-11949,"d":false,"t":428,"x":-30511},{"y":-12511,"d":false,"t":429,"x":-30284},{"y":-31600,"d":false,"t":430,"x":-8667},{"y":-31733,"d":false,"t":431,"x":-8168},{"y":-31851,"d":false,"t":432,"x":-7693},{"y":-31971,"d":false,"t":433,"x":-7180},{"y":-32077,"d":false,"t":434,"x":-6688},{"y":-32177,"d":false,"t":435,"x":-6188},{"t":436,"x":-5655,"d":false,"y":-32275},{"t":437,"x":-5118,"d":false,"y":-32365},{"t":438,"x":-4614,"d":false,"y":-32440},{"t":439,"x":-4202,"d":false,"y":-32496},{"t":440,"x":-3681,"d":false,"y":-32560},{"t":441,"x":-28650,"d":false,"y":-15901},{"t":442,"x":-28423,"d":false,"y":-16304},{"t":443,"x":-28059,"d":false,"y":-16922},{"t":444,"x":-27811,"d":false,"y":-17327},{"t":445,"x":-27399,"d":false,"y":-17971},{"t":446,"x":-27126,"d":false,"y":-18381},{"t":447,"x":-26774,"d":false,"y":-18890},{"t":448,"x":-26409,"d":false,"y":-19397},{"t":449,"x":-26050,"d":false,"y":-19876},{"t":450,"x":-25734,"d":false,"y":-20284},{"t":451,"x":-25347,"d":false,"y":-20766},{"t":452,"x":-25008,"d":false,"y":-21172},{"t":453,"x":-24592,"d":false,"y":-21654},{"t":454,"x":-24232,"d":false,"y":-22057},{"t":455,"x":-23787,"d":false,"y":-22535},{"t":456,"x":-23170,"d":false,"y":-23170},{"t":457,"x":-22535,"d":false,"y":-23787},{"t":458,"x":-21972,"d":false,"y":-24309},{"t":459,"x":-21389,"d":false,"y":-24823},{"t":460,"x":-20621,"d":false,"y":-25464},{"t":461,"x":-19910,"d":false,"y":-26024},{"t":462,"x":-19208,"d":false,"y":-26547},{"t":463,"x":-18570,"d":false,"y":-26997},{"t":464,"x":-17923,"d":false,"y":-27430},{"t":465,"x":-17296,"d":false,"y":-27830},{"t":466,"x":5309,"d":false,"y":-32334},{"t":467,"x":5701,"d":false,"y":-32267},{"t":468,"x":6238,"d":false,"y":-32168},{"t":469,"x":6732,"d":false,"y":-32068},{"t":470,"x":7251,"d":false,"y":-31955},{"t":471,"x":7684,"d":false,"y":-31853},{"t":472,"x":8210,"y":-31722,"d":false},{"t":473,"x":8622,"y":-31612,"d":false},{"t":474,"x":9068,"y":-31487,"d":false},{"t":475,"x":9601,"y":-31329,"d":false},{"t":476,"x":10019,"y":-31198,"d":false},{"t":477,"x":10591,"y":-31008,"d":false},{"t":478,"x":11053,"y":-30846,"d":false},{"t":479,"x":11477,"y":-30691,"d":false},{"t":480,"x":11989,"y":-30495,"d":false},{"t":481,"x":12529,"y":-30277,"d":false},{"t":482,"x":12892,"y":-30124,"d":false},{"t":483,"x":13430,"y":-29888,"d":false},{"t":484,"x":13958,"y":-29645,"d":false},{"t":485,"x":14387,"y":-29440,"d":false},{"t":486,"x":14868,"y":-29200,"d":false},{"t":487,"x":15350,"y":-28949,"d":false},{"t":488,"x":15890,"y":-28656,"d":false},{"t":489,"x":16374,"y":-28382,"d":false},{"t":490,"x":16757,"y":-28158,"d":false},{"t":491,"x":17242,"y":-27864,"d":false},{"t":492,"x":17726,"y":-27558,"d":false},{"t":493,"x":18176,"y":-27264,"d":false},{"t":494,"x":18659,"y":-26936,"d":false},{"t":495,"x":19112,"y":-26616,"d":false},{"t":496,"x":19500,"y":-26333,"d":false},{"t":497,"x":19978,"y":-25972,"d":false},{"t":498,"x":20522,"y":-25545,"d":false},{"t":499,"x":20906,"y":-25231,"d":false},{"t":500,"x":21360,"y":-24848,"d":false},{"t":501,"x":21742,"y":-24514,"d":false},{"t":502,"x":22195,"y":-24105,"d":false},{"t":503,"x":22646,"y":-23682,"d":false},{"t":504,"x":23095,"y":-23244,"d":false},{"t":505,"x":23394,"y":-22944,"d":false},{"t":506,"x":23839,"y":-22481,"d":false},{"t":507,"x":24280,"y":-22004,"d":false},{"y":-21512,"t":508,"d":false,"x":24716},{"y":-21083,"t":509,"d":false,"x":25084},{"y":-20564,"t":510,"d":false,"x":25511},{"y":-20106,"t":511,"d":false,"x":25873},{"y":-19459,"t":512,"d":false,"x":26363},{"y":-18896,"t":513,"d":false,"x":26770},{"y":-18176,"t":514,"d":false,"x":27264},{"y":-17521,"t":515,"d":false,"x":27689},{"y":-16743,"t":516,"d":false,"x":28166},{"y":-16020,"t":517,"d":false,"x":28584},{"y":-15216,"t":518,"d":false,"x":29020},{"y":-14529,"t":519,"d":false,"x":29370},{"y":-13771,"t":520,"d":false,"x":29733},{"y":-13002,"t":521,"d":false,"x":30077},{"y":-12223,"t":522,"d":false,"x":30402},{"y":-11437,"t":523,"d":false,"x":30706},{"y":-10503,"t":524,"d":false,"x":31038},{"y":-9845,"t":525,"d":false,"x":31253},{"y":-9085,"t":526,"d":false,"x":31483},{"y":-8169,"t":527,"d":false,"x":31732},{"y":-7357,"t":528,"d":false,"x":31931},{"y":-6577,"t":529,"d":false,"x":32100},{"y":-5641,"t":530,"d":false,"x":32278},{"y":-4830,"t":531,"d":false,"x":32409},{"y":-4064,"t":532,"d":false,"x":32514},{"y":-3121,"t":533,"d":false,"x":32618},{"y":-2346,"t":534,"d":false,"x":32683},{"y":-1566,"t":535,"d":false,"x":32730},{"y":-780,"t":536,"d":false,"x":32758},{"y":0,"t":537,"d":false,"x":32767},{"y":936,"t":538,"d":false,"x":32754},{"y":1714,"t":539,"d":false,"x":32722},{"y":2656,"t":540,"d":false,"x":32659},{"y":3430,"t":541,"d":false,"x":32587},{"y":4084,"t":542,"d":false,"x":32512},{"y":4876,"t":543,"d":false,"x":32402},{"d":false,"t":544,"y":5793,"x":32251},{"d":false,"t":545,"y":6426,"x":32131},{"d":false,"t":546,"y":7058,"x":31998},{"d":false,"t":547,"y":7688,"x":31852},{"d":false,"t":548,"y":8316,"x":31694},{"d":false,"t":549,"y":8940,"x":31524},{"d":false,"t":550,"y":9559,"x":31342},{"d":false,"t":551,"y":10174,"x":31148},{"d":false,"t":552,"y":10643,"x":30990},{"d":false,"t":553,"y":11299,"x":30757},{"d":false,"t":554,"y":11899,"x":30530},{"d":false,"t":555,"y":12492,"x":30292},{"d":false,"t":556,"y":13002,"x":30077},{"d":false,"t":557,"y":13642,"x":29792},{"d":false,"t":558,"y":14215,"x":29523},{"d":false,"t":559,"y":14716,"x":29276},{"d":false,"t":560,"y":15338,"x":28955},{"d":false,"t":561,"y":15833,"x":28688},{"d":false,"t":562,"y":16442,"x":28343},{"d":false,"t":563,"y":16928,"x":28056},{"d":false,"t":564,"y":17521,"x":27689},{"d":false,"t":565,"y":17995,"x":27384},{"d":false,"t":566,"y":18464,"x":27070},{"d":false,"t":567,"y":19031,"x":26674},{"d":false,"t":568,"y":19560,"x":26289},{"d":false,"t":569,"y":20009,"x":25949},{"d":false,"t":570,"y":20450,"x":25602},{"d":false,"t":571,"y":21054,"x":25108},{"d":false,"t":572,"y":21478,"x":24746},{"d":false,"t":573,"y":21972,"x":24309},{"d":false,"t":574,"y":22457,"x":23861},{"d":false,"t":575,"y":22776,"x":23556},{"d":false,"t":576,"y":23248,"x":23092},{"d":false,"t":577,"y":23709,"x":22617},{"d":false,"t":578,"y":24161,"x":22134},{"d":false,"t":579,"y":24602,"x":21643},{"y":24966,"d":false,"t":580,"x":21221},{"y":25388,"d":false,"t":581,"x":20715},{"y":25738,"d":false,"t":582,"x":20279},{"y":26139,"d":false,"t":583,"x":19760},{"y":26473,"d":false,"t":584,"x":19310},{"y":26924,"d":false,"t":585,"x":18676},{"y":27240,"d":false,"t":586,"x":18212},{"y":27548,"d":false,"t":587,"x":17743},{"y":27917,"d":false,"t":588,"x":17156},{"y":28207,"d":false,"t":589,"x":16675},{"y":28479,"d":false,"t":590,"x":16206},{"y":28921,"d":false,"t":591,"x":15403},{"y":29276,"d":false,"t":592,"x":14716},{"y":29645,"d":false,"t":593,"x":13960},{"y":30077,"d":false,"t":594,"x":13002},{"y":30325,"d":false,"t":595,"x":12413},{"y":30655,"d":false,"t":596,"x":11574},{"y":30974,"d":false,"t":597,"x":10691},{"y":31253,"d":false,"t":598,"x":9845},{"y":31441,"d":false,"t":599,"x":9229},{"y":31704,"d":false,"t":600,"x":8277},{"y":31896,"d":false,"t":601,"x":7505},{"y":32069,"d":false,"t":602,"x":6727},{"y":32251,"d":false,"t":603,"x":5793},{"y":32382,"d":false,"t":604,"x":5006},{"y":32514,"d":false,"t":605,"x":4064},{"y":32603,"d":false,"t":606,"x":3276},{"y":32671,"d":false,"t":607,"x":2501},{"y":32730,"d":false,"t":608,"x":1566},{"y":32758,"d":false,"t":609,"x":784},{"y":32767,"d":false,"t":610,"x":-156},{"y":32754,"d":false,"t":611,"x":-940},{"y":32722,"d":false,"t":612,"x":-1722},{"y":32659,"d":false,"t":613,"x":-2656},{"y":32587,"d":false,"t":614,"x":-3430},{"y":32474,"d":false,"t":615,"x":-4372},{"x":-5134,"t":616,"d":false,"y":32362},{"x":32291,"t":617,"d":false,"y":-5567},{"x":32355,"t":618,"d":false,"y":-5177},{"x":32438,"t":619,"d":false,"y":-4634},{"x":32268,"t":620,"d":false,"y":-5694},{"x":32689,"t":621,"d":false,"y":-2254},{"x":32663,"t":622,"d":false,"y":-2613},{"x":32730,"t":623,"d":false,"y":-1559},{"x":32710,"t":624,"d":false,"y":-1924},{"x":32748,"t":625,"d":false,"y":-1129},{"x":32741,"t":626,"d":false,"y":-1310},{"x":32730,"t":627,"d":false,"y":-1559},{"x":32710,"t":628,"d":false,"y":-1924},{"x":32767,"t":629,"d":false,"y":0},{"x":32767,"t":630,"d":false,"y":0},{"x":32767,"t":631,"d":false,"y":0},{"x":32767,"t":632,"d":false,"y":0},{"x":32767,"t":633,"d":false,"y":0},{"x":32767,"t":634,"d":false,"y":0},{"x":32767,"t":635,"d":false,"y":0},{"x":32767,"t":636,"d":false,"y":0},{"x":32767,"t":637,"d":false,"y":0},{"x":32767,"t":638,"d":false,"y":0},{"x":32767,"t":639,"d":false,"y":0},{"x":32767,"t":640,"d":false,"y":0},{"x":32767,"t":641,"d":false,"y":0},{"x":32767,"t":642,"d":false,"y":0},{"x":32767,"t":643,"d":false,"y":0},{"x":32767,"t":644,"d":false,"y":0},{"x":32767,"t":645,"d":false,"y":0},{"x":32767,"t":646,"d":false,"y":0},{"x":32767,"t":647,"d":false,"y":0},{"x":32767,"t":648,"d":false,"y":0},{"x":32767,"t":649,"d":false,"y":0},{"x":32767,"t":650,"d":false,"y":0},{"x":32767,"t":651,"d":false,"y":0},{"t":652,"x":32767,"y":0,"d":false},{"t":653,"x":32767,"y":0,"d":false},{"t":654,"x":32767,"y":0,"d":false},{"t":655,"x":32767,"y":0,"d":false},{"t":656,"x":32767,"y":0,"d":false},{"t":657,"x":32767,"y":0,"d":false},{"t":658,"x":32767,"y":0,"d":false},{"t":659,"x":32767,"y":0,"d":false},{"t":660,"x":32767,"y":0,"d":false},{"t":661,"x":32767,"y":0,"d":false},{"t":662,"x":32767,"y":0,"d":false},{"t":663,"x":32767,"y":0,"d":false},{"t":664,"x":32767,"y":0,"d":false},{"t":665,"x":32767,"y":0,"d":false},{"t":666,"x":32767,"y":0,"d":false},{"t":667,"x":32767,"y":0,"d":false},{"t":668,"x":32767,"y":0,"d":false},{"t":669,"x":32767,"y":0,"d":false},{"t":670,"x":32767,"y":0,"d":false},{"t":671,"x":32767,"y":0,"d":false},{"t":672,"x":32767,"y":0,"d":false},{"t":673,"x":32767,"y":0,"d":false},{"t":674,"x":32767,"y":0,"d":false},{"t":675,"x":32767,"y":0,"d":false},{"t":676,"x":32767,"y":0,"d":false},{"t":677,"x":32767,"y":0,"d":false},{"t":678,"x":32767,"y":0,"d":false},{"t":679,"x":32767,"y":0,"d":false},{"t":680,"x":32767,"y":0,"d":false},{"t":681,"x":32767,"y":0,"d":false},{"t":682,"x":32767,"y":0,"d":false},{"t":683,"x":32767,"y":0,"d":false},{"t":684,"x":32767,"y":0,"d":false},{"t":685,"x":32767,"y":0,"d":false},{"t":686,"x":32767,"y":0,"d":false},{"t":687,"x":32767,"y":0,"d":false},{"x":32767,"t":688,"d":false,"y":0},{"x":32767,"t":689,"d":false,"y":0},{"x":32767,"t":690,"d":false,"y":0},{"x":-18563,"t":737,"d":false,"y":27001},{"x":-21823,"t":738,"d":false,"y":24442},{"x":-21647,"t":739,"d":false,"y":24599},{"x":-21417,"t":740,"d":false,"y":24799},{"x":-21849,"t":741,"d":false,"y":24419},{"x":-21577,"t":742,"d":false,"y":24660},{"x":-22225,"t":743,"d":false,"y":24077},{"x":-22711,"t":744,"d":false,"y":23620},{"x":-22141,"t":745,"d":false,"y":24154},{"x":-21984,"t":746,"d":false,"y":24298},{"x":-22499,"t":747,"d":false,"y":23822},{"x":-22358,"t":748,"d":false,"y":23954},{"x":-22141,"t":749,"d":false,"y":24154},{"x":-21769,"t":750,"d":false,"y":24490},{"x":-23170,"t":751,"d":false,"y":23170},{"x":-23170,"t":752,"d":false,"y":23170},{"x":21933,"t":753,"d":false,"y":-24344},{"x":-23170,"t":754,"d":false,"y":23170},{"x":21974,"t":755,"d":false,"y":-24307},{"x":-23170,"t":756,"d":false,"y":23170},{"x":22023,"t":757,"d":false,"y":-24262},{"x":-19660,"t":758,"d":false,"y":26214},{"x":21997,"t":759,"d":false,"y":-24286},{"x":-23170,"t":760,"d":false,"y":23170},{"x":21963,"t":762,"d":false,"y":-24316},{"x":-23170,"t":763,"d":false,"y":23170},{"x":22015,"t":764,"d":false,"y":-24270},{"x":-19660,"t":765,"d":false,"y":26214},{"x":21912,"t":766,"d":false,"y":-24362},{"x":-5904,"t":767,"d":false,"y":-32231},{"x":-5528,"t":768,"d":false,"y":-32297},{"x":-5150,"t":769,"d":false,"y":-32360},{"x":-4770,"t":770,"d":false,"y":-32418},{"x":-4388,"t":771,"y":-32472,"d":false},{"x":-4016,"t":772,"y":-32520,"d":false},{"x":-3619,"t":773,"y":-32567,"d":false},{"x":-3241,"t":774,"y":-32606,"d":false},{"x":-2843,"t":775,"y":-32643,"d":false},{"x":-2460,"t":776,"y":-32674,"d":false},{"x":-2075,"t":777,"y":-32701,"d":false},{"x":-1676,"t":778,"y":-32724,"d":false},{"x":-1286,"t":779,"y":-32742,"d":false},{"x":-891,"t":780,"y":-32755,"d":false},{"x":-496,"t":781,"y":-32763,"d":false},{"x":-100,"t":782,"y":-32767,"d":false},{"x":299,"t":783,"y":-32766,"d":false},{"x":699,"t":784,"y":-32760,"d":false},{"x":1098,"t":785,"y":-32749,"d":false},{"x":1501,"t":786,"y":-32733,"d":false},{"x":1906,"t":787,"y":-32711,"d":false},{"x":2313,"t":788,"y":-32685,"d":false},{"x":2721,"t":789,"y":-32654,"d":false},{"x":3121,"t":790,"y":-32618,"d":false},{"x":3541,"t":791,"y":-32575,"d":false},{"x":3952,"t":792,"y":-32528,"d":false},{"x":4350,"t":793,"y":-32477,"d":false},{"x":4776,"t":794,"y":-32417,"d":false},{"x":5189,"t":795,"y":-32354,"d":false},{"x":5601,"t":796,"y":-32285,"d":false},{"x":29073,"t":797,"y":-15114,"d":false},{"x":29285,"t":798,"y":-14700,"d":false},{"x":29558,"t":799,"y":-14142,"d":false},{"x":29822,"t":800,"y":-13577,"d":false},{"x":30033,"t":801,"y":-13103,"d":false},{"x":30260,"t":802,"y":-12570,"d":false},{"x":30455,"t":803,"y":-12089,"d":false},{"x":30628,"t":804,"y":-11646,"d":false},{"x":8003,"t":805,"y":-31775,"d":false},{"x":8421,"t":806,"y":-31667,"d":false},{"d":false,"t":807,"y":-31542,"x":8875},{"d":false,"t":808,"y":-31418,"x":9305},{"d":false,"t":809,"y":-31286,"x":9739},{"d":false,"t":810,"y":-31134,"x":10214},{"d":false,"t":811,"y":-30933,"x":10808},{"d":false,"t":812,"y":-30772,"x":11258},{"d":false,"t":813,"y":-30644,"x":11602},{"d":false,"t":814,"y":-30450,"x":12103},{"d":false,"t":815,"y":-30243,"x":12612},{"d":false,"t":816,"y":-30070,"x":13017},{"d":false,"t":817,"y":-29861,"x":13490},{"d":false,"t":818,"y":-29618,"x":14016},{"d":false,"t":819,"y":-29414,"x":14440},{"d":false,"t":820,"y":-29144,"x":14977},{"d":false,"t":821,"y":-28859,"x":15519},{"d":false,"t":822,"y":-28618,"x":15960},{"d":false,"t":823,"y":-28364,"x":16406},{"d":false,"t":824,"y":-28097,"x":16858},{"d":false,"t":825,"y":-27818,"x":17315},{"d":false,"t":826,"y":-27460,"x":17878},{"d":false,"t":827,"y":-27174,"x":18310},{"d":false,"t":828,"y":-26851,"x":18781},{"d":false,"t":829,"y":-26442,"x":19352},{"d":false,"t":830,"y":-26105,"x":19804},{"d":false,"t":831,"y":-25734,"x":20284},{"d":false,"t":832,"y":-25482,"x":20599},{"d":false,"t":833,"y":-25020,"x":21159},{"d":false,"t":834,"y":-24611,"x":21633},{"d":false,"t":835,"y":-24253,"x":22034},{"d":false,"t":836,"y":-23724,"x":22602},{"d":false,"t":837,"y":-23331,"x":23007},{"d":false,"t":838,"y":-22923,"x":23414},{"d":false,"t":839,"y":-22328,"x":23982},{"d":false,"t":840,"y":-21883,"x":24389},{"d":false,"t":841,"y":-21408,"x":24806},{"d":false,"t":842,"y":-20926,"x":25214},{"t":843,"d":false,"x":25705,"y":-20321},{"t":844,"d":false,"x":26044,"y":-19885},{"t":845,"d":false,"x":26554,"y":-19198},{"t":846,"d":false,"x":26954,"y":-18632},{"t":847,"d":false,"x":-23170,"y":-23170},{"t":848,"d":false,"x":27264,"y":-18176},{"t":849,"d":false,"x":-23170,"y":-23170},{"t":850,"d":false,"x":-23170,"y":-23170},{"t":851,"d":false,"x":27457,"y":-17883},{"t":852,"d":false,"x":-23170,"y":-23170},{"t":853,"d":false,"x":32762,"y":548},{"t":854,"d":false,"x":32754,"y":920},{"t":855,"d":false,"x":32741,"y":1295},{"t":856,"d":false,"x":32724,"y":1683},{"t":857,"d":false,"x":32708,"y":1974},{"t":858,"d":false,"x":32682,"y":2361},{"t":859,"d":false,"x":32651,"y":2761},{"t":860,"d":false,"x":32614,"y":3165},{"t":861,"d":false,"x":32572,"y":3566},{"t":862,"d":false,"x":32524,"y":3981},{"t":863,"d":false,"x":32470,"y":4401},{"t":864,"d":false,"x":32410,"y":4827},{"t":865,"d":false,"x":32342,"y":5258},{"t":866,"d":false,"x":32268,"y":5694},{"t":867,"d":false,"x":32187,"y":6136},{"t":868,"d":false,"x":32099,"y":6582},{"t":869,"d":false,"x":32003,"y":7033},{"t":870,"d":false,"x":31895,"y":7511},{"t":871,"d":false,"x":31783,"y":7972},{"t":872,"d":false,"x":31662,"y":8436},{"t":873,"d":false,"x":31526,"y":8932},{"t":874,"d":false,"x":31417,"y":9309},{"t":875,"d":false,"x":31272,"y":9786},{"t":876,"d":false,"x":31107,"y":10297},{"t":877,"d":false,"x":30943,"y":10781},{"t":878,"d":false,"x":30756,"y":11303},{"d":false,"t":879,"x":30608,"y":11697},{"d":false,"t":880,"x":30423,"y":12169},{"d":false,"t":881,"x":30260,"y":12571},{"d":false,"t":882,"x":30071,"y":13016},{"d":false,"t":883,"x":29934,"y":13329},{"d":false,"t":884,"x":29728,"y":13782},{"d":false,"t":885,"x":29511,"y":14239},{"d":false,"t":886,"x":29331,"y":14607},{"d":false,"t":887,"x":29094,"y":15073},{"d":false,"t":888,"x":28896,"y":15450},{"d":false,"t":889,"x":28688,"y":15832},{"d":false,"t":890,"x":28472,"y":16218},{"d":false,"t":891,"x":28193,"y":16698},{"d":false,"t":892,"x":27956,"y":17091},{"d":false,"t":893,"x":27710,"y":17488},{"d":false,"t":894,"x":27453,"y":17888},{"d":false,"t":895,"x":27186,"y":18291},{"d":false,"t":896,"x":26909,"y":18697},{"d":false,"t":897,"x":26577,"y":19166},{"d":false,"t":898,"x":26275,"y":19578},{"d":false,"t":899,"x":26025,"y":19909},{"d":false,"t":900,"x":25587,"y":20469},{"d":false,"t":901,"x":25313,"y":20807},{"d":false,"t":902,"x":24907,"y":21291},{"d":false,"t":903,"x":24668,"y":21568},{"d":false,"t":904,"x":24301,"y":21980},{"d":false,"t":905,"x":23849,"y":22470},{"d":false,"t":906,"x":23515,"y":22819},{"d":false,"t":907,"x":23170,"y":23170},{"d":false,"t":908,"x":22739,"y":23592},{"d":false,"t":909,"x":22291,"y":24017},{"d":false,"t":910,"x":21904,"y":24370},{"d":false,"t":911,"x":21421,"y":24796},{"d":false,"t":912,"x":21079,"y":25087},{"d":false,"t":913,"x":20488,"y":25572},{"d":false,"t":914,"x":20117,"y":25865},{"d":false,"t":915,"x":19562,"y":26287},{"d":false,"t":916,"x":19162,"y":26580},{"d":false,"t":917,"x":18643,"y":26946},{"d":false,"t":918,"x":18030,"y":27361},{"d":false,"t":919,"x":17581,"y":27651},{"d":false,"t":920,"x":17001,"y":28011},{"d":false,"t":921,"x":16398,"y":28369},{"d":false,"t":922,"x":-15772,"y":-28721},{"d":false,"t":923,"x":-16510,"y":-28303},{"d":false,"t":924,"x":-17059,"y":-27976},{"d":false,"t":925,"x":-17736,"y":-27552},{"d":false,"t":926,"x":-18176,"y":-27264},{"d":false,"t":927,"x":-18862,"y":-26794},{"d":false,"t":928,"x":-19315,"y":-26469},{"d":false,"t":929,"x":-19891,"y":-26039},{"d":false,"t":930,"x":23170,"y":-23170},{"d":false,"t":931,"x":23170,"y":-23170},{"d":false,"t":932,"x":-20601,"y":-25481},{"d":false,"t":933,"x":23170,"y":-23170},{"d":false,"t":934,"x":-21190,"y":-24993},{"d":false,"t":935,"x":23170,"y":-23170},{"d":false,"t":936,"x":-21769,"y":-24490},{"d":false,"t":937,"x":23170,"y":-23170},{"d":false,"t":938,"x":23170,"y":-23170},{"d":false,"t":939,"x":-22248,"y":-24056},{"d":false,"t":940,"x":23170,"y":-23170},{"d":false,"t":941,"x":-22896,"y":-23441},{"d":false,"t":942,"x":28097,"y":16858},{"d":false,"t":943,"x":27906,"y":17173},{"d":false,"t":944,"x":27990,"y":17037},{"d":false,"t":945,"x":28097,"y":16858},{"d":false,"t":946,"x":27786,"y":17366},{"d":false,"t":947,"x":25244,"y":20891},{"d":false,"t":948,"x":25491,"y":20589},{"d":false,"t":949,"x":25804,"y":20195},{"d":false,"t":950,"x":25064,"y":21106},{"x":25431,"d":false,"t":951,"y":20663},{"x":25014,"d":false,"t":952,"y":21166},{"x":24077,"d":false,"t":953,"y":22225},{"x":23679,"d":false,"t":954,"y":22649},{"x":23756,"d":false,"t":955,"y":22568},{"x":23861,"d":false,"t":956,"y":22457},{"x":24762,"d":false,"t":957,"y":21460},{"x":23587,"d":false,"t":958,"y":22745},{"x":23638,"d":false,"t":959,"y":22692},{"x":23702,"d":false,"t":960,"y":22625},{"x":23787,"d":false,"t":961,"y":22535},{"x":23170,"d":false,"t":962,"y":23170},{"x":23170,"d":false,"t":963,"y":23170},{"x":23170,"d":false,"t":964,"y":23170},{"x":23170,"d":false,"t":965,"y":23170},{"x":23728,"d":false,"t":966,"y":22598},{"x":23170,"d":false,"t":967,"y":23170},{"x":23170,"d":false,"t":968,"y":23170},{"x":12908,"d":false,"t":969,"y":30118},{"x":12603,"d":false,"t":970,"y":30246},{"x":12908,"d":false,"t":971,"y":30118},{"x":12476,"d":false,"t":972,"y":30299},{"x":6639,"d":false,"t":973,"y":32087},{"x":6426,"d":false,"t":974,"y":32131},{"x":6131,"d":false,"t":975,"y":32188},{"x":7505,"d":false,"t":976,"y":31896},{"x":3260,"d":false,"t":977,"y":32604},{"x":2513,"d":false,"t":978,"y":32670},{"x":2967,"d":false,"t":979,"y":32632},{"x":3619,"d":false,"t":980,"y":32567},{"x":16155,"d":false,"t":981,"y":28508},{"x":16374,"d":false,"t":982,"y":28382},{"x":16123,"d":false,"t":983,"y":28526},{"x":16417,"d":false,"t":984,"y":28357},{"x":16064,"d":false,"t":985,"y":28559},{"x":20799,"d":false,"t":986,"y":25320},{"d":false,"x":21075,"y":25090,"t":987},{"d":false,"x":20749,"y":25360,"t":988},{"d":false,"x":21106,"y":25064,"t":989},{"d":false,"x":20663,"y":25431,"t":990},{"d":false,"x":21873,"y":24397,"t":991},{"d":false,"x":22225,"y":24077,"t":992},{"d":false,"x":22094,"y":24198,"t":993},{"d":false,"x":21920,"y":24356,"t":994},{"d":false,"x":22457,"y":23861,"t":995},{"d":false,"x":22296,"y":24011,"t":996},{"d":false,"x":22729,"y":23603,"t":997},{"d":false,"x":22672,"y":23657,"t":998},{"d":false,"x":23170,"y":23170,"t":999},{"d":false,"x":22535,"y":23787,"t":1000},{"d":false,"x":22411,"y":23905,"t":1001},{"d":false,"x":-4477,"y":32460,"t":1002},{"d":false,"x":-3904,"y":32534,"t":1003},{"d":false,"x":-4634,"y":32438,"t":1004},{"d":false,"x":-3829,"y":32543,"t":1005},{"d":false,"x":-2254,"y":32689,"t":1006},{"d":false,"x":-1310,"y":32741,"t":1007},{"d":false,"x":-1559,"y":32730,"t":1008},{"d":false,"x":-1924,"y":32710,"t":1009},{"d":false,"x":15054,"y":29104,"t":1010},{"d":false,"x":15117,"y":29071,"t":1011},{"d":false,"x":15691,"y":28766,"t":1012},{"d":false,"x":15913,"y":28644,"t":1013},{"d":false,"x":15420,"y":28912,"t":1014},{"d":false,"x":20698,"y":25402,"t":1015},{"d":false,"x":20339,"y":25691,"t":1016},{"d":false,"x":20617,"y":25468,"t":1017},{"d":false,"x":20117,"y":25865,"t":1018},{"d":false,"x":20469,"y":25587,"t":1019},{"d":false,"x":21823,"y":24442,"t":1020},{"d":false,"x":22185,"y":24114,"t":1021},{"d":false,"x":22041,"y":24246,"t":1022},{"y":24419,"d":false,"x":21849,"t":1023},{"y":23905,"d":false,"x":22411,"t":1024},{"y":24077,"d":false,"x":22225,"t":1025},{"y":23620,"d":false,"x":22711,"t":1026},{"y":23679,"d":false,"x":22649,"t":1027},{"y":23170,"d":false,"x":23170,"t":1028},{"y":23170,"d":false,"x":23170,"t":1029},{"y":23170,"d":false,"x":23170,"t":1030},{"y":24154,"d":false,"x":22141,"t":1031},{"y":24490,"d":false,"x":21769,"t":1032},{"y":23170,"d":false,"x":23170,"t":1033},{"y":23170,"d":false,"x":23170,"t":1034},{"y":-32144,"d":false,"x":-6358,"t":1035},{"y":31789,"d":false,"x":7947,"t":1036},{"y":32767,"d":false,"x":0,"t":1063},{"y":32767,"d":false,"x":0,"t":1064},{"y":32767,"d":false,"x":0,"t":1065},{"y":32767,"d":false,"x":0,"t":1066},{"y":32470,"d":false,"x":4400,"t":1067},{"y":32517,"d":false,"x":4043,"t":1068},{"y":32559,"d":false,"x":3686,"t":1069},{"y":32597,"d":false,"x":3330,"t":1070},{"y":32631,"d":false,"x":2982,"t":1071},{"y":32661,"d":false,"x":2634,"t":1072},{"y":32688,"d":false,"x":2278,"t":1073},{"y":32710,"d":false,"x":1929,"t":1074},{"y":32729,"d":false,"x":1575,"t":1075},{"y":32744,"d":false,"x":1226,"t":1076},{"y":32755,"d":false,"x":876,"t":1077},{"y":32763,"d":false,"x":524,"t":1078},{"y":32767,"d":false,"x":175,"t":1079},{"y":32767,"d":false,"x":-175,"t":1080},{"y":32763,"d":false,"x":-524,"t":1081},{"y":32755,"d":false,"x":-871,"t":1082},{"y":32744,"d":false,"x":-1222,"t":1083},{"y":32729,"d":false,"x":-1571,"t":1084},{"t":1085,"x":-1919,"y":32711,"d":false},{"t":1086,"x":-2266,"y":32689,"d":false},{"t":1087,"x":-2613,"y":32663,"d":false},{"t":1088,"x":-2959,"y":32633,"d":false},{"t":1089,"x":3303,"y":-32600,"d":false},{"t":1090,"x":2959,"y":-32633,"d":false},{"t":1091,"x":2606,"y":-32663,"d":false},{"t":1092,"x":2260,"y":-32689,"d":false},{"t":1093,"x":1914,"y":-32711,"d":false},{"t":1094,"x":1563,"y":-32730,"d":false},{"t":1095,"x":1213,"y":-32745,"d":false},{"t":1096,"x":867,"y":-32756,"d":false},{"t":1097,"x":520,"y":-32763,"d":false},{"t":1098,"x":173,"y":-32767,"d":false},{"t":1099,"x":-173,"y":-32767,"d":false},{"t":1100,"x":-520,"y":-32763,"d":false},{"t":1101,"x":-867,"y":-32756,"d":false},{"t":1102,"x":-1210,"y":-32745,"d":false},{"t":1103,"x":-1554,"y":-32730,"d":false},{"t":1104,"x":-1899,"y":-32712,"d":false},{"t":1105,"x":-2249,"y":-32690,"d":false},{"t":1106,"x":-2592,"y":-32664,"d":false},{"t":1107,"x":-2935,"y":-32635,"d":false},{"t":1108,"x":-3286,"y":-32602,"d":false},{"t":1109,"x":-3619,"y":-32567,"d":false},{"t":1110,"x":-3969,"y":-32526,"d":false},{"t":1111,"x":-32767,"y":0,"d":false},{"t":1112,"x":32767,"y":0,"d":false},{"t":1113,"x":-32767,"y":0,"d":false},{"t":1114,"x":32767,"y":0,"d":false},{"t":1115,"x":-32767,"y":0,"d":false},{"t":1116,"x":32767,"y":0,"d":false},{"t":1117,"x":-32767,"y":0,"d":false},{"t":1118,"x":32767,"y":0,"d":false},{"t":1119,"x":-32767,"y":0,"d":false},{"t":1120,"x":32767,"y":0,"d":false},{"t":1121,"d":false,"y":0,"x":-32767},{"t":1122,"d":false,"y":0,"x":32767},{"t":1123,"d":false,"y":0,"x":-32767},{"t":1124,"d":false,"y":0,"x":32767},{"t":1125,"d":false,"y":0,"x":-32767},{"t":1126,"d":false,"y":0,"x":32767},{"t":1127,"d":false,"y":0,"x":-32767},{"t":1128,"d":false,"y":0,"x":32767},{"t":1129,"d":false,"y":0,"x":-32767},{"t":1130,"d":false,"y":0,"x":32767},{"t":1131,"d":false,"y":0,"x":-32767},{"t":1132,"d":false,"y":0,"x":32767},{"t":1133,"d":false,"y":0,"x":-32767},{"t":1134,"d":false,"y":0,"x":32767},{"t":1135,"d":false,"y":0,"x":-32767},{"t":1136,"d":false,"y":0,"x":32767},{"t":1137,"d":false,"y":0,"x":32767},{"t":1138,"d":false,"y":0,"x":32767},{"t":1139,"d":false,"y":0,"x":32767},{"t":1140,"d":false,"y":-32505,"x":-4135},{"t":1141,"d":false,"y":26214,"x":19660},{"t":1142,"d":false,"y":23170,"x":23170},{"t":1143,"d":false,"y":-23170,"x":-23170},{"t":1144,"d":false,"y":23170,"x":23170},{"t":1145,"d":false,"y":-23170,"x":-23170},{"t":1146,"d":false,"y":23170,"x":23170},{"t":1147,"d":false,"y":-23170,"x":-23170},{"t":1148,"d":false,"y":23170,"x":23170},{"t":1149,"d":false,"y":-23170,"x":-23170},{"t":1150,"d":false,"y":23170,"x":23170},{"t":1151,"d":false,"y":-23170,"x":-23170},{"t":1152,"d":false,"y":23170,"x":23170},{"t":1153,"d":false,"y":-23170,"x":-23170},{"t":1154,"d":false,"y":23170,"x":23170},{"t":1155,"d":false,"y":-23170,"x":-23170},{"t":1156,"d":false,"y":23170,"x":23170},{"t":1157,"d":false,"x":-23170,"y":-23170},{"t":1158,"d":false,"x":23170,"y":23170},{"t":1159,"d":false,"x":-23170,"y":-23170},{"t":1160,"d":false,"x":23170,"y":23170},{"t":1161,"d":false,"x":-23170,"y":-23170},{"t":1162,"d":false,"x":23170,"y":23170},{"t":1163,"d":false,"x":-23170,"y":-23170},{"t":1164,"d":false,"x":23170,"y":23170},{"t":1165,"d":false,"x":-23170,"y":-23170},{"t":1166,"d":false,"x":23170,"y":23170},{"t":1167,"d":false,"x":-23170,"y":-23170},{"t":1168,"d":false,"x":1924,"y":32710},{"t":1169,"d":false,"x":2513,"y":32670},{"t":1170,"d":false,"x":-3361,"y":-32594},{"t":1171,"d":false,"x":2513,"y":32670},{"t":1172,"d":false,"x":-3361,"y":-32594},{"t":1173,"d":false,"x":2513,"y":32670},{"t":1174,"d":false,"x":-31962,"y":-7217},{"t":1175,"d":false,"x":-31987,"y":-7108},{"t":1176,"d":false,"x":-32019,"y":-6961},{"t":1177,"d":false,"x":-31789,"y":-7947},{"t":1178,"d":false,"x":-30681,"y":11505},{"t":1179,"d":false,"x":-30498,"y":11981},{"t":1180,"d":false,"x":-30246,"y":12603},{"t":1181,"d":false,"x":-30423,"y":12169},{"t":1182,"d":false,"x":-30299,"y":12476},{"t":1183,"d":false,"x":-26539,"y":19218},{"t":1184,"d":false,"x":-26456,"y":19333},{"t":1185,"d":false,"x":-26899,"y":18712},{"t":1186,"d":false,"x":-26379,"y":19437},{"t":1187,"d":false,"x":-26214,"y":19660},{"t":1188,"d":false,"x":-24818,"y":21395},{"t":1189,"d":false,"x":-24542,"y":21711},{"t":1190,"d":false,"x":-24726,"y":21501},{"t":1191,"d":false,"x":-24966,"y":21221},{"t":1192,"d":false,"x":-24570,"y":21679},{"d":false,"x":-24879,"t":1193,"y":21324},{"d":false,"x":-23603,"t":1194,"y":22729},{"d":false,"x":-23657,"t":1195,"y":22672},{"d":false,"x":-23728,"t":1196,"y":22598},{"d":false,"x":-23822,"t":1197,"y":22499},{"d":false,"x":-23170,"t":1198,"y":23170},{"d":false,"x":-23170,"t":1199,"y":23170},{"d":false,"x":-23620,"t":1200,"y":22711},{"d":false,"x":-23679,"t":1201,"y":22649},{"d":false,"x":-23756,"t":1202,"y":22568},{"d":false,"x":-23170,"t":1203,"y":23170},{"d":false,"x":-29693,"t":1204,"y":13857},{"d":false,"x":-29751,"t":1205,"y":13731},{"d":false,"x":-30050,"t":1206,"y":13065},{"d":false,"x":-29613,"t":1207,"y":14027},{"d":false,"x":-30020,"t":1208,"y":13134},{"d":false,"x":-26214,"t":1209,"y":19660},{"d":false,"x":-26088,"t":1210,"y":19827},{"d":false,"x":-25468,"t":1211,"y":20617},{"d":false,"x":-25865,"t":1212,"y":20117},{"d":false,"x":-25587,"t":1213,"y":20469},{"d":false,"x":-24442,"t":1214,"y":21823},{"d":false,"x":-24599,"t":1215,"y":21647},{"d":false,"x":-24246,"t":1216,"y":22041},{"d":false,"x":-24419,"t":1217,"y":21849},{"d":false,"x":-24660,"t":1218,"y":21577},{"d":false,"x":-24077,"t":1219,"y":22225},{"d":false,"x":-23620,"t":1220,"y":22711},{"d":false,"x":-23679,"t":1221,"y":22649},{"d":false,"x":-23170,"t":1222,"y":23170},{"d":false,"x":-23822,"t":1223,"y":22499},{"d":false,"x":-23954,"t":1224,"y":22358},{"d":false,"x":-23587,"t":1225,"y":22745},{"d":false,"x":-23170,"t":1226,"y":23170},{"d":false,"x":-23170,"t":1227,"y":23170},{"d":false,"x":-23170,"t":1228,"y":23170},{"x":-23170,"t":1229,"y":23170,"d":false},{"x":-24011,"t":1230,"y":22296,"d":false},{"x":-23603,"t":1231,"y":22729,"d":false},{"x":-23170,"t":1232,"y":23170,"d":false},{"x":-23170,"t":1233,"y":23170,"d":false},{"x":-23170,"t":1234,"y":23170,"d":false},{"x":-23170,"t":1235,"y":23170,"d":false},{"x":-23170,"t":1236,"y":23170,"d":false},{"x":-23170,"t":1237,"y":23170,"d":false},{"x":-23170,"t":1238,"y":23170,"d":false},{"x":-23170,"t":1239,"y":23170,"d":false},{"x":-23170,"t":1240,"y":23170,"d":false},{"x":-23170,"t":1241,"y":23170,"d":false},{"x":-23170,"t":1242,"y":23170,"d":false},{"x":-23170,"t":1243,"y":23170,"d":false},{"x":-23170,"t":1244,"y":23170,"d":false},{"x":-23170,"t":1245,"y":23170,"d":false},{"x":-23170,"t":1246,"y":23170,"d":false},{"x":-23170,"t":1247,"y":23170,"d":false},{"x":-23170,"t":1248,"y":23170,"d":false},{"x":-23170,"t":1249,"y":23170,"d":false},{"x":-23170,"t":1250,"y":23170,"d":false},{"x":-23170,"t":1251,"y":23170,"d":false},{"x":-23170,"t":1252,"y":23170,"d":false},{"x":-23170,"t":1253,"y":23170,"d":false},{"x":-23620,"t":1254,"y":22711,"d":false},{"x":-23170,"t":1255,"y":23170,"d":false},{"x":-23170,"t":1256,"y":23170,"d":false},{"x":-23170,"t":1257,"y":23170,"d":false},{"x":-23170,"t":1258,"y":23170,"d":false},{"x":-23170,"t":1259,"y":23170,"d":false},{"x":-23170,"t":1260,"y":23170,"d":false},{"x":-23170,"t":1261,"y":23170,"d":false},{"x":-23170,"t":1262,"y":23170,"d":false},{"x":-23170,"t":1263,"y":23170,"d":false},{"x":-32593,"t":1264,"y":-3372,"d":false},{"t":1265,"x":-32663,"y":-2613,"d":false},{"t":1266,"x":-32619,"y":-3107,"d":false},{"t":1267,"x":-32543,"y":-3829,"d":false},{"t":1268,"x":-29104,"y":15054,"d":false},{"t":1269,"x":-29308,"y":14654,"d":false},{"t":1270,"x":-29308,"y":14654,"d":false},{"t":1271,"x":-29613,"y":14027,"d":false},{"t":1272,"x":-28912,"y":15420,"d":false},{"t":1273,"x":-25402,"y":20698,"d":false},{"t":1274,"x":-25691,"y":20339,"d":false},{"t":1275,"x":-25468,"y":20617,"d":false},{"t":1276,"x":-25865,"y":20117,"d":false},{"t":1277,"x":-25587,"y":20469,"d":false},{"t":1278,"x":-24442,"y":21823,"d":false},{"t":1279,"x":-24114,"y":22185,"d":false},{"t":1280,"x":-24246,"y":22041,"d":false},{"t":1281,"x":-24419,"y":21849,"d":false},{"t":1282,"x":-23905,"y":22411,"d":false},{"t":1283,"x":-24077,"y":22225,"d":false},{"t":1284,"x":-24356,"y":21920,"d":false},{"t":1285,"x":-23170,"y":23170,"d":false},{"t":1286,"x":-23170,"y":23170,"d":false},{"t":1287,"x":-23170,"y":23170,"d":false},{"t":1288,"x":31076,"y":-10389,"d":false},{"t":1289,"x":-29308,"y":-14654,"d":false},{"t":1290,"x":23170,"y":23170,"d":false},{"t":1291,"x":-23170,"y":-23170,"d":false},{"t":1292,"x":23170,"y":23170,"d":false},{"t":1293,"x":-23170,"y":-23170,"d":false},{"t":1294,"x":23170,"y":23170,"d":false},{"t":1295,"x":-32567,"y":-3619,"d":false},{"t":1296,"x":31113,"y":-10280,"d":false},{"t":1297,"x":-32767,"y":0,"d":false},{"t":1298,"x":-32767,"y":0,"d":false},{"t":1299,"x":31254,"y":-9841,"d":false},{"t":1300,"x":-32670,"y":2513,"d":false},{"t":1301,"x":31254,"y":-9841,"d":false},{"t":1302,"x":-32386,"y":4982,"d":false},{"t":1303,"x":31236,"y":-9898,"d":false},{"t":1304,"x":-31928,"y":7368,"d":false},{"t":1305,"x":31236,"y":-9898,"d":false},{"t":1306,"x":-31928,"y":7368,"d":false},{"t":1307,"x":31245,"y":-9872,"d":false},{"t":1308,"x":-31928,"y":7368,"d":false},{"t":1309,"x":31261,"y":-9820,"d":false},{"t":1310,"x":-31318,"y":9636,"d":false},{"t":1311,"x":31269,"y":-9794,"d":false},{"t":1312,"x":-31318,"y":9636,"d":false},{"t":1313,"x":31251,"y":-9850,"d":false},{"t":1314,"x":-31318,"y":9636,"d":false},{"t":1315,"x":31260,"y":-9824,"d":false},{"t":1316,"x":-31318,"y":9636,"d":false},{"t":1317,"x":31268,"y":-9799,"d":false},{"t":1318,"x":-31318,"y":9636,"d":false},{"t":1319,"x":31275,"y":-9774,"d":false},{"t":1320,"x":3491,"y":-32581,"d":false},{"t":1321,"x":4064,"y":-32514,"d":false},{"t":1322,"x":3260,"y":-32604,"d":false},{"t":1323,"x":2044,"y":-32703,"d":false},{"t":1324,"x":2335,"y":-32684,"d":false},{"t":1325,"x":1364,"y":-32739,"d":false},{"t":1326,"x":1636,"y":-32726,"d":false},{"t":1327,"x":1023,"y":-32751,"d":false},{"t":1328,"x":1170,"y":-32746,"d":false},{"t":1329,"x":1364,"y":-32739,"d":false},{"t":1330,"x":1636,"y":-32726,"d":false},{"t":1331,"x":0,"y":-32767,"d":false},{"t":1332,"x":0,"y":-32767,"d":false},{"t":1333,"x":0,"y":-32767,"d":false},{"t":1334,"x":0,"y":-32767,"d":false},{"t":1335,"x":0,"y":-32767,"d":false},{"t":1336,"x":0,"y":-32767,"d":false},{"y":-32767,"t":1337,"x":0,"d":false},{"y":-32767,"t":1338,"x":0,"d":false},{"y":-32767,"t":1339,"x":0,"d":false},{"y":-32767,"t":1340,"x":0,"d":false},{"y":-32767,"t":1341,"x":0,"d":false},{"y":-32767,"t":1342,"x":0,"d":false},{"y":-29308,"t":1343,"x":-14654,"d":false},{"y":-29508,"t":1344,"x":-14245,"d":false},{"y":-29540,"t":1345,"x":-14179,"d":false},{"y":-29830,"t":1346,"x":-13559,"d":false},{"y":-29308,"t":1347,"x":-14654,"d":false},{"y":-26004,"t":1348,"x":-19936,"d":false},{"y":-26330,"t":1349,"x":-19504,"d":false},{"y":-26214,"t":1350,"x":-19660,"d":false},{"y":-26064,"t":1351,"x":-19858,"d":false},{"y":-26564,"t":1352,"x":-19185,"d":false},{"y":-25765,"t":1353,"x":-20244,"d":false},{"y":-24490,"t":1354,"x":-21769,"d":false},{"y":-24154,"t":1355,"x":-22141,"d":false},{"y":-24298,"t":1356,"x":-21984,"d":false},{"y":-24490,"t":1357,"x":-21769,"d":false},{"y":-23954,"t":1358,"x":-22358,"d":false},{"y":-23587,"t":1359,"x":-22745,"d":false},{"y":-24077,"t":1360,"x":-22225,"d":false},{"y":-24198,"t":1361,"x":-22094,"d":false},{"y":-23756,"t":1362,"x":-22568,"d":false},{"y":-23861,"t":1363,"x":-22457,"d":false},{"y":-24011,"t":1364,"x":-22296,"d":false},{"y":-23170,"t":1365,"x":-23170,"d":false},{"y":-23170,"t":1366,"x":-23170,"d":false},{"y":-23170,"t":1367,"x":-23170,"d":false},{"y":-23170,"t":1368,"x":-23170,"d":false},{"y":-23905,"t":1369,"x":-22411,"d":false},{"y":-24077,"t":1370,"x":-22225,"d":false},{"y":-23170,"t":1371,"x":-23170,"d":false},{"y":-23170,"t":1372,"x":-23170,"d":false},{"y":-23170,"t":1373,"x":-23170,"d":false},{"y":-23170,"t":1374,"x":-23170,"d":false},{"y":-23170,"t":1375,"x":-23170,"d":false},{"y":-23170,"t":1376,"x":-23170,"d":false},{"y":-23170,"t":1377,"x":-23170,"d":false},{"y":-23170,"t":1378,"x":-23170,"d":false},{"y":-23170,"t":1379,"x":-23170,"d":false},{"y":-23170,"t":1380,"x":-23170,"d":false},{"y":-24011,"t":1381,"x":-22296,"d":false},{"y":-23170,"t":1382,"x":-23170,"d":false},{"y":-23170,"t":1383,"x":-23170,"d":false},{"y":-23170,"t":1384,"x":-23170,"d":false},{"y":-23170,"t":1385,"x":-23170,"d":false},{"y":-23170,"t":1386,"x":-23170,"d":false},{"y":-22225,"t":1387,"x":-24077,"d":false},{"y":-23170,"t":1388,"x":-23170,"d":false},{"y":-23170,"t":1389,"x":-23170,"d":false},{"y":-23170,"t":1390,"x":-23170,"d":false},{"y":-23170,"t":1391,"x":-23170,"d":false},{"y":-23170,"t":1392,"x":-23170,"d":false},{"y":-23170,"t":1393,"x":-23170,"d":false},{"y":-23170,"t":1394,"x":-23170,"d":false},{"y":-23170,"t":1395,"x":-23170,"d":false},{"y":18587,"t":1396,"x":26985,"d":false},{"y":-20977,"t":1397,"x":-25172,"d":false},{"y":18523,"t":1398,"x":27029,"d":false},{"y":-19045,"t":1399,"x":-26664,"d":false},{"y":18503,"t":1400,"x":27043,"d":false},{"y":-19045,"t":1401,"x":-26664,"d":false},{"y":18483,"t":1402,"x":27057,"d":false},{"y":-19045,"t":1403,"x":-26664,"d":false},{"y":18417,"t":1404,"x":27101,"d":false},{"y":-19045,"t":1405,"x":-26664,"d":false},{"y":18396,"t":1406,"x":27115,"d":false},{"y":-19045,"t":1407,"x":-26664,"d":false},{"y":18354,"t":1408,"x":27144,"d":false},{"t":1409,"x":-26664,"y":-19045,"d":false},{"t":1410,"x":27189,"y":18287,"d":false},{"t":1411,"x":-26664,"y":-19045,"d":false},{"t":1412,"x":27204,"y":18265,"d":false},{"t":1413,"x":-26664,"y":-19045,"d":false},{"t":1414,"x":27219,"y":18243,"d":false},{"t":1415,"x":27458,"y":17882,"d":false},{"t":1416,"x":-26844,"y":-18791,"d":false},{"t":1417,"x":-28450,"y":-16257,"d":false},{"t":1418,"x":27279,"y":18153,"d":false},{"t":1419,"x":27547,"y":17744,"d":false},{"t":1420,"x":-26844,"y":-18791,"d":false},{"t":1421,"x":27534,"y":17764,"d":false},{"t":1422,"x":-26844,"y":-18791,"d":false},{"t":1423,"x":27550,"y":17739,"d":false},{"t":1424,"x":-28766,"y":-15691,"d":false},{"t":1425,"x":27595,"y":17669,"d":false},{"t":1426,"x":-26844,"y":-18791,"d":false},{"t":1427,"x":27611,"y":17643,"d":false},{"t":1428,"x":-26844,"y":-18791,"d":false},{"t":1429,"x":27628,"y":17618,"d":false},{"t":1430,"x":-28766,"y":-15691,"d":false},{"t":1431,"x":27673,"y":17546,"d":false},{"t":1432,"x":-26844,"y":-18791,"d":false},{"t":1433,"x":27690,"y":17520,"d":false},{"t":1434,"x":-28766,"y":-15691,"d":false},{"t":1435,"x":27735,"y":17448,"d":false},{"t":1436,"x":-26844,"y":-18791,"d":false},{"t":1437,"x":-28450,"y":-16257,"d":false},{"t":1438,"x":27144,"y":18354,"d":false},{"t":1439,"x":-26664,"y":-19045,"d":false},{"t":1440,"x":27189,"y":18287,"d":false},{"t":1441,"x":-26664,"y":-19045,"d":false},{"t":1442,"x":27204,"y":18265,"d":false},{"t":1443,"x":-28450,"y":-16257,"d":false},{"t":1444,"x":27219,"y":18243,"d":false},{"y":-19045,"t":1445,"d":false,"x":-26664},{"y":18176,"t":1446,"d":false,"x":27264},{"y":-19045,"t":1447,"d":false,"x":-26664},{"y":18153,"t":1448,"d":false,"x":27279},{"y":17744,"t":1449,"d":false,"x":27547},{"y":-18791,"t":1450,"d":false,"x":-26844},{"y":17764,"t":1451,"d":false,"x":27534},{"y":-17592,"t":1452,"d":false,"x":-27644},{"y":17739,"t":1453,"d":false,"x":27550},{"y":-17592,"t":1454,"d":false,"x":-27644},{"y":17714,"t":1455,"d":false,"x":27566},{"y":-17592,"t":1456,"d":false,"x":-27644},{"y":17643,"t":1457,"d":false,"x":27611},{"y":-17592,"t":1458,"d":false,"x":-27644},{"y":17618,"t":1459,"d":false,"x":27628},{"y":-17592,"t":1460,"d":false,"x":-27644},{"y":17592,"t":1461,"d":false,"x":27644},{"y":-17592,"t":1462,"d":false,"x":-27644},{"y":17520,"t":1463,"d":false,"x":27690},{"y":-17592,"t":1464,"d":false,"x":-27644},{"y":17494,"t":1465,"d":false,"x":27707},{"y":-17592,"t":1466,"d":false,"x":-27644},{"y":-16257,"t":1467,"d":false,"x":-28450},{"y":18462,"t":1468,"d":false,"x":27071},{"y":-19045,"t":1469,"d":false,"x":-26664},{"y":18396,"t":1470,"d":false,"x":27115},{"y":-19045,"t":1471,"d":false,"x":-26664},{"y":18441,"t":1472,"d":false,"x":27085},{"y":-19045,"t":1473,"d":false,"x":-26664},{"y":18375,"t":1474,"d":false,"x":27130},{"y":-16257,"t":1475,"d":false,"x":-28450},{"y":18354,"t":1476,"d":false,"x":27144},{"y":-19045,"t":1477,"d":false,"x":-26664},{"y":18287,"t":1478,"d":false,"x":27189},{"y":-19045,"t":1479,"d":false,"x":-26664},{"y":18332,"t":1480,"d":false,"x":27159},{"y":-19045,"t":1481,"x":-26664,"d":false},{"y":18265,"t":1482,"x":27204,"d":false},{"y":-16257,"t":1483,"x":-28450,"d":false},{"y":18243,"t":1484,"x":27219,"d":false},{"y":-19045,"t":1485,"x":-26664,"d":false},{"y":18176,"t":1486,"x":27264,"d":false},{"y":-19045,"t":1487,"x":-26664,"d":false},{"y":18221,"t":1488,"x":27234,"d":false},{"y":-16257,"t":1489,"x":-28450,"d":false},{"y":18153,"t":1490,"x":27279,"d":false},{"y":17744,"t":1491,"x":27547,"d":false},{"y":-18791,"t":1492,"x":-26844,"d":false},{"y":-19045,"t":1493,"x":-26664,"d":false},{"y":18062,"t":1494,"x":27339,"d":false},{"y":17764,"t":1495,"x":27534,"d":false},{"y":-17592,"t":1496,"x":-27644,"d":false},{"y":17809,"t":1497,"x":27505,"d":false},{"y":-17592,"t":1498,"x":-27644,"d":false},{"y":17643,"t":1499,"x":27611,"d":false},{"y":-17592,"t":1500,"x":-27644,"d":false},{"y":17637,"t":1501,"x":27615,"d":false},{"y":-17592,"t":1502,"x":-27644,"d":false},{"y":17631,"t":1503,"x":27619,"d":false},{"y":-17592,"t":1504,"x":-27644,"d":false},{"y":17625,"t":1505,"x":27623,"d":false},{"y":-17592,"t":1506,"x":-27644,"d":false},{"y":17619,"t":1507,"x":27627,"d":false},{"y":-17592,"t":1508,"x":-27644,"d":false},{"y":17537,"t":1509,"x":27679,"d":false},{"y":-17592,"t":1510,"x":-27644,"d":false},{"y":17530,"t":1511,"x":27684,"d":false},{"y":-17592,"t":1512,"x":-27644,"d":false},{"y":17473,"t":1513,"x":27720,"d":false},{"y":-17592,"t":1514,"x":-27644,"d":false},{"y":17514,"t":1515,"x":27694,"d":false},{"y":-17592,"t":1516,"x":-27644,"d":false},{"x":27749,"y":17426,"d":false,"t":1517},{"x":-27644,"y":-17592,"d":false,"t":1518},{"x":27755,"y":17417,"d":false,"t":1519},{"x":-27644,"y":-17592,"d":false,"t":1520},{"x":27761,"y":17407,"d":false,"t":1521},{"x":-27644,"y":-17592,"d":false,"t":1522},{"x":27799,"y":17346,"d":false,"t":1523},{"x":-27644,"y":-17592,"d":false,"t":1524},{"x":27858,"y":17251,"d":false,"t":1525},{"x":-28766,"y":-15691,"d":false,"t":1526},{"x":27898,"y":17186,"d":false,"t":1527},{"x":-27644,"y":-17592,"d":false,"t":1528},{"x":27906,"y":17173,"d":false,"t":1529},{"x":-27644,"y":-17592,"d":false,"t":1530},{"x":27881,"y":17214,"d":false,"t":1531},{"x":28268,"y":16571,"d":false,"t":1532},{"x":-27563,"y":-17719,"d":false,"t":1533},{"x":28249,"y":16603,"d":false,"t":1534},{"x":-28450,"y":-16257,"d":false,"t":1535},{"x":28262,"y":16581,"d":false,"t":1536},{"x":-27563,"y":-17719,"d":false,"t":1537},{"x":28276,"y":16558,"d":false,"t":1538},{"x":-28450,"y":-16257,"d":false,"t":1539},{"x":28378,"y":16382,"d":false,"t":1540},{"x":-28450,"y":-16257,"d":false,"t":1541},{"x":28393,"y":16356,"d":false,"t":1542},{"x":-28450,"y":-16257,"d":false,"t":1543},{"x":28409,"y":16328,"d":false,"t":1544},{"x":-28450,"y":-16257,"d":false,"t":1545},{"x":28425,"y":16300,"d":false,"t":1546},{"x":-28450,"y":-16257,"d":false,"t":1547},{"x":28500,"y":16168,"d":false,"t":1548},{"x":28766,"y":15691,"d":false,"t":1549},{"x":-28644,"y":-15913,"d":false,"t":1550},{"x":28824,"y":15584,"d":false,"t":1551},{"x":-28644,"y":-15913,"d":false,"t":1552},{"y":15477,"d":false,"t":1553,"x":28881},{"y":10362,"d":false,"t":1554,"x":-31086},{"y":15306,"d":false,"t":1555,"x":28972},{"y":5694,"d":false,"t":1556,"x":-32268},{"y":14977,"d":false,"t":1557,"x":29144},{"y":0,"d":false,"t":1558,"x":-32767},{"y":14868,"d":false,"t":1559,"x":29200},{"y":-3829,"d":false,"t":1560,"x":-32543},{"y":14760,"d":false,"t":1561,"x":29254},{"y":-6039,"d":false,"t":1562,"x":-32206},{"y":14654,"d":false,"t":1563,"x":29308},{"y":-7947,"d":false,"t":1564,"x":-31789},{"y":14496,"d":false,"t":1565,"x":29386},{"y":-9774,"d":false,"t":1566,"x":-31275},{"y":14392,"d":false,"t":1567,"x":29437},{"y":13914,"d":false,"t":1568,"x":29666},{"y":-11328,"d":false,"t":1569,"x":-30747},{"y":13814,"d":false,"t":1570,"x":29713},{"y":-11328,"d":false,"t":1571,"x":-30747},{"y":13657,"d":false,"t":1572,"x":29785},{"y":-12715,"d":false,"t":1573,"x":-30199},{"y":13657,"d":false,"t":1574,"x":29785},{"y":-12715,"d":false,"t":1575,"x":-30199},{"y":13500,"d":false,"t":1576,"x":29857},{"y":-12715,"d":false,"t":1577,"x":-30199},{"y":13392,"d":false,"t":1578,"x":29905},{"y":-12715,"d":false,"t":1579,"x":-30199},{"y":13332,"d":false,"t":1580,"x":29932},{"y":-12715,"d":false,"t":1581,"x":-30199},{"y":13051,"d":false,"t":1582,"x":30056},{"y":12489,"d":false,"t":1583,"x":30293},{"y":-13559,"d":false,"t":1584,"x":-29830},{"y":12031,"d":false,"t":1585,"x":30478},{"y":11402,"d":false,"t":1586,"x":30719},{"y":-12767,"d":false,"t":1587,"x":-30177},{"y":11004,"d":false,"t":1588,"x":30864},{"t":1589,"y":10201,"d":false,"x":31139},{"t":1590,"y":9391,"d":false,"x":31392},{"t":1591,"y":-11702,"d":false,"x":-30606},{"t":1592,"y":8984,"d":false,"x":31511},{"t":1593,"y":8168,"d":false,"x":31733},{"t":1594,"y":-11328,"d":false,"x":-30747},{"t":1595,"y":7758,"d":false,"x":31835},{"t":1596,"y":7094,"d":false,"x":31990},{"t":1597,"y":-10362,"d":false,"x":-31086},{"t":1598,"y":-6529,"d":false,"x":-32110},{"t":1599,"y":-6911,"d":false,"x":-32030},{"t":1600,"y":-7164,"d":false,"x":-31974},{"t":1601,"y":-7542,"d":false,"x":-31887},{"t":1602,"y":-7792,"d":false,"x":-31827},{"t":1603,"y":8072,"d":false,"x":31757},{"t":1604,"y":7667,"d":false,"x":31857},{"t":1605,"y":7038,"d":false,"x":32002},{"t":1606,"y":6555,"d":false,"x":32105},{"t":1607,"y":-5933,"d":false,"x":-32225},{"t":1608,"y":-6531,"d":false,"x":-32110},{"t":1609,"y":-7079,"d":false,"x":-31993},{"t":1610,"y":-7626,"d":false,"x":-31867},{"t":1611,"y":8043,"d":false,"x":31764},{"t":1612,"y":7626,"d":false,"x":31867},{"t":1613,"y":7079,"d":false,"x":31993},{"t":1614,"y":6531,"d":false,"x":32110},{"t":1615,"y":-6006,"d":false,"x":-32212},{"t":1616,"y":-6531,"d":false,"x":-32110},{"t":1617,"y":-7079,"d":false,"x":-31993},{"t":1618,"y":-7626,"d":false,"x":-31867},{"t":1619,"y":8171,"d":false,"x":31732},{"t":1620,"y":7626,"d":false,"x":31867},{"t":1621,"y":7079,"d":false,"x":31993},{"t":1622,"y":6531,"d":false,"x":32110},{"t":1623,"y":5981,"d":false,"x":32216},{"t":1624,"y":-5453,"d":false,"x":-32310},{"t":1625,"d":false,"x":-32216,"y":-5981},{"t":1626,"d":false,"x":-32110,"y":-6531},{"t":1627,"d":false,"x":-31993,"y":-7079},{"t":1628,"d":false,"x":-31867,"y":-7626},{"t":1629,"d":false,"x":31732,"y":8171},{"t":1630,"d":false,"x":31867,"y":7626},{"t":1631,"d":false,"x":31993,"y":7079},{"t":1632,"d":false,"x":32110,"y":6531},{"t":1633,"d":false,"x":32216,"y":5981},{"t":1634,"d":false,"x":-32314,"y":-5431},{"t":1635,"d":false,"x":-32216,"y":-5981},{"t":1636,"d":false,"x":-32110,"y":-6531},{"t":1637,"d":false,"x":-31993,"y":-7079},{"t":1638,"d":false,"x":-31874,"y":-7596},{"t":1639,"d":false,"x":-18651,"y":-26941},{"t":1640,"d":false,"x":-19273,"y":-26500},{"t":1641,"d":false,"x":-19437,"y":-26379},{"t":1642,"d":false,"x":-18563,"y":-27001},{"t":1643,"d":false,"x":-29071,"y":-15117},{"t":1644,"d":false,"x":-29308,"y":-14654},{"t":1645,"d":false,"x":-29308,"y":-14654},{"t":1646,"d":false,"x":-31910,"y":-7446},{"t":1647,"d":false,"x":-32767,"y":0},{"t":1648,"d":false,"x":-32767,"y":0},{"t":1649,"d":false,"x":-32767,"y":0},{"t":1650,"d":false,"x":-32767,"y":0},{"t":1651,"d":false,"x":-32767,"y":0},{"t":1652,"d":false,"x":-32767,"y":0},{"t":1653,"d":false,"x":-32767,"y":0},{"t":1654,"d":false,"x":-32767,"y":0},{"t":1655,"d":false,"x":-32767,"y":0},{"t":1656,"d":false,"x":-32767,"y":0},{"t":1657,"d":false,"x":-32767,"y":0},{"t":1658,"d":false,"x":-32767,"y":0},{"t":1659,"d":false,"x":-32767,"y":0},{"t":1660,"d":false,"x":-32767,"y":0},{"y":0,"d":false,"x":-32767,"t":1661},{"y":0,"d":false,"x":-32767,"t":1662},{"y":0,"d":false,"x":-32767,"t":1663},{"y":0,"d":false,"x":-32767,"t":1664},{"y":0,"d":false,"x":-32767,"t":1665},{"y":0,"d":false,"x":-32767,"t":1666},{"y":0,"d":false,"x":-32767,"t":1667},{"y":0,"d":false,"x":-32767,"t":1668},{"y":0,"d":false,"x":-32767,"t":1669},{"y":0,"d":false,"x":-32767,"t":1670},{"y":0,"d":false,"x":-32767,"t":1671},{"y":0,"d":false,"x":-32767,"t":1672},{"y":0,"d":false,"x":-32767,"t":1673},{"y":0,"d":false,"x":-32767,"t":1674},{"y":0,"d":false,"x":-32767,"t":1675},{"y":0,"d":false,"x":-32767,"t":1676},{"y":0,"d":false,"x":-32767,"t":1677},{"y":0,"d":false,"x":-32767,"t":1678},{"y":0,"d":false,"x":-32767,"t":1679},{"y":0,"d":false,"x":-32767,"t":1680},{"y":0,"d":false,"x":-32767,"t":1681},{"y":0,"d":false,"x":-32767,"t":1682},{"y":0,"d":false,"x":-32767,"t":1683},{"y":0,"d":false,"x":-32767,"t":1684},{"y":0,"d":false,"x":-32767,"t":1685},{"y":-31360,"d":false,"x":-9498,"t":1686},{"y":-31566,"d":false,"x":-8788,"t":1687},{"y":-31714,"d":false,"x":-8242,"t":1688},{"y":-31891,"d":false,"x":-7525,"t":1689},{"y":-32053,"d":false,"x":-6804,"t":1690},{"y":-32198,"d":false,"x":-6082,"t":1691},{"y":-32321,"d":false,"x":-5387,"t":1692},{"y":-32434,"d":false,"x":-4659,"t":1693},{"y":-32530,"d":false,"x":-3932,"t":1694},{"y":-32608,"d":false,"x":-3225,"t":1695},{"y":-32670,"d":false,"x":-2513,"t":1696},{"t":1697,"x":-1788,"y":-32718,"d":false},{"t":1698,"x":-1074,"y":-32749,"d":false},{"t":1699,"x":-358,"y":-32765,"d":false},{"t":1700,"x":-23170,"y":-23170,"d":false},{"t":1701,"x":-23170,"y":-23170,"d":false},{"t":1702,"x":-23170,"y":-23170,"d":false},{"t":1703,"x":-23170,"y":-23170,"d":false},{"t":1704,"x":-23170,"y":-23170,"d":false},{"t":1705,"x":-23170,"y":-23170,"d":false},{"t":1706,"x":-23170,"y":-23170,"d":false},{"t":1707,"x":-23170,"y":-23170,"d":false},{"t":1708,"x":-23170,"y":-23170,"d":false},{"t":1709,"x":-23170,"y":-23170,"d":false},{"t":1710,"x":-23170,"y":-23170,"d":false},{"t":1711,"x":-23170,"y":-23170,"d":false},{"t":1712,"x":-23170,"y":-23170,"d":false},{"t":1713,"x":-23170,"y":-23170,"d":false},{"t":1714,"x":-23170,"y":-23170,"d":false},{"t":1715,"x":-23170,"y":-23170,"d":false},{"t":1716,"x":-23170,"y":-23170,"d":false},{"t":1717,"x":-23170,"y":-23170,"d":false},{"t":1718,"x":-23170,"y":-23170,"d":false},{"t":1719,"x":-23170,"y":-23170,"d":false},{"t":1720,"x":-23170,"y":-23170,"d":false},{"t":1721,"x":-23170,"y":-23170,"d":false},{"t":1722,"x":-23170,"y":-23170,"d":false},{"t":1723,"x":-23170,"y":-23170,"d":false},{"t":1724,"x":-23170,"y":-23170,"d":false},{"t":1725,"x":-23170,"y":-23170,"d":false},{"t":1726,"x":-23170,"y":-23170,"d":false},{"t":1727,"x":-23170,"y":-23170,"d":false},{"t":1728,"x":-23170,"y":-23170,"d":false},{"t":1729,"x":-23170,"y":-23170,"d":false},{"t":1730,"x":-23170,"y":-23170,"d":false},{"t":1731,"x":-23170,"y":-23170,"d":false},{"t":1732,"x":-23170,"y":-23170,"d":false},{"y":-28066,"d":false,"x":16911,"t":1733},{"y":-27644,"d":false,"x":17592,"t":1734},{"y":-27291,"d":false,"x":18134,"t":1735},{"y":-26928,"d":false,"x":18670,"t":1736},{"y":-26469,"d":false,"x":19315,"t":1737},{"y":-26019,"d":false,"x":19918,"t":1738},{"y":-25622,"d":false,"x":20426,"t":1739},{"y":-25143,"d":false,"x":21012,"t":1740},{"y":-24726,"d":false,"x":21501,"t":1741},{"y":-24221,"d":false,"x":22068,"t":1742},{"y":-23787,"d":false,"x":22535,"t":1743},{"y":-23259,"d":false,"x":23080,"t":1744},{"y":-22718,"d":false,"x":23613,"t":1745},{"y":-22166,"d":false,"x":24132,"t":1746},{"y":-21691,"d":false,"x":24559,"t":1747},{"y":-21117,"d":false,"x":25055,"t":1748},{"y":-20535,"d":false,"x":25534,"t":1749},{"y":-20030,"d":false,"x":25932,"t":1750},{"y":-19431,"d":false,"x":26384,"t":1751},{"y":-18910,"d":false,"x":26760,"t":1752},{"y":-18258,"d":false,"x":27209,"t":1753},{"y":-17719,"d":false,"x":27563,"t":1754},{"y":-23170,"d":false,"x":-23170,"t":1755},{"y":-23170,"d":false,"x":-23170,"t":1756},{"y":-23170,"d":false,"x":-23170,"t":1757},{"y":-23170,"d":false,"x":-23170,"t":1758},{"y":-23170,"d":false,"x":-23170,"t":1759},{"y":-23170,"d":false,"x":-23170,"t":1760},{"y":-23170,"d":false,"x":-23170,"t":1761},{"y":-23170,"d":false,"x":-23170,"t":1762},{"y":-23170,"d":false,"x":-23170,"t":1763},{"y":-23170,"d":false,"x":-23170,"t":1764},{"y":-23170,"d":false,"x":-23170,"t":1765},{"y":-23170,"d":false,"x":-23170,"t":1766},{"y":-23170,"d":false,"x":-23170,"t":1767},{"y":-23170,"d":false,"x":-23170,"t":1768},{"d":false,"x":-23170,"y":-23170,"t":1769},{"d":false,"x":-23170,"y":-23170,"t":1770},{"d":false,"x":-23170,"y":-23170,"t":1771},{"d":false,"x":-23170,"y":-23170,"t":1772},{"d":false,"x":-23170,"y":-23170,"t":1773},{"d":false,"x":-23170,"y":-23170,"t":1774},{"d":false,"x":-23170,"y":-23170,"t":1775},{"d":false,"x":-23170,"y":-23170,"t":1776},{"d":false,"x":-23170,"y":-23170,"t":1777},{"d":false,"x":-23170,"y":-23170,"t":1778},{"d":false,"x":-23170,"y":-23170,"t":1779},{"d":false,"x":-23170,"y":-23170,"t":1780},{"d":false,"x":-23170,"y":-23170,"t":1781},{"d":false,"x":-23170,"y":-23170,"t":1782},{"d":false,"x":-23170,"y":-23170,"t":1783},{"d":false,"x":-23170,"y":-23170,"t":1784},{"d":false,"x":25069,"y":-21101,"t":1785},{"d":false,"x":25552,"y":-20513,"t":1786},{"d":false,"x":26019,"y":-19918,"t":1787},{"d":false,"x":26406,"y":-19401,"t":1788},{"d":false,"x":26785,"y":-18875,"t":1789},{"d":false,"x":27209,"y":-18258,"t":1790},{"d":false,"x":27644,"y":-17592,"t":1791},{"d":false,"x":27986,"y":-17043,"t":1792},{"d":false,"x":28316,"y":-16488,"t":1793},{"d":false,"x":28711,"y":-15791,"t":1794},{"d":false,"x":29016,"y":-15224,"t":1795},{"d":false,"x":29379,"y":-14510,"t":1796},{"d":false,"x":29725,"y":-13788,"t":1797},{"d":false,"x":29958,"y":-13275,"t":1798},{"d":false,"x":30273,"y":-12539,"t":1799},{"d":false,"x":30569,"y":-11799,"t":1800},{"d":false,"x":30768,"y":-11270,"t":1801},{"d":false,"x":31013,"y":-10577,"t":1802},{"d":false,"x":31260,"y":-9824,"t":1803},{"d":false,"x":31472,"y":-9120,"t":1804},{"t":1805,"x":31625,"y":-8576,"d":false},{"t":1806,"x":31810,"y":-7863,"d":false},{"t":1807,"x":31978,"y":-7146,"d":false},{"t":1808,"x":32131,"y":-6426,"d":false},{"t":1809,"x":32267,"y":-5705,"d":false},{"t":1810,"x":-23170,"y":-23170,"d":false},{"t":1811,"x":-23170,"y":-23170,"d":false},{"t":1812,"x":-23170,"y":-23170,"d":false},{"t":1813,"x":32498,"y":4193,"d":false},{"t":1814,"x":-8339,"y":31688,"d":false},{"t":1815,"x":-4193,"y":32498,"d":false},{"t":1816,"x":-4802,"y":32413,"d":false},{"t":1817,"x":-4238,"y":32492,"d":false},{"t":1818,"x":-4861,"y":32404,"d":false},{"t":1819,"x":-2044,"y":32703,"d":false},{"t":1820,"x":-2335,"y":32684,"d":false},{"t":1821,"x":-2721,"y":32654,"d":false},{"t":1822,"x":-1636,"y":32726,"d":false},{"t":1823,"x":-1023,"y":32751,"d":false},{"t":1824,"x":-1170,"y":32746,"d":false},{"t":1825,"x":-1364,"y":32739,"d":false},{"t":1826,"x":-1636,"y":32726,"d":false},{"t":1827,"x":-1023,"y":32751,"d":false},{"t":1828,"x":0,"y":32767,"d":false},{"t":1829,"x":0,"y":32767,"d":false},{"t":1830,"x":0,"y":32767,"d":false},{"t":1831,"x":0,"y":32767,"d":false},{"t":1832,"x":0,"y":32767,"d":false},{"t":1833,"x":0,"y":32767,"d":false},{"t":1834,"x":0,"y":32767,"d":false},{"t":1835,"x":0,"y":32767,"d":false},{"t":1836,"x":0,"y":32767,"d":false},{"t":1837,"x":0,"y":32767,"d":false},{"t":1838,"x":0,"y":32767,"d":false},{"t":1839,"x":22623,"y":-23704,"d":false},{"t":1840,"x":-5110,"y":32366,"d":false},{"x":-6426,"d":false,"y":32131,"t":1841},{"x":22474,"d":false,"y":-23845,"t":1842},{"x":-11021,"d":false,"y":30858,"t":1843},{"x":-9416,"d":false,"y":31385,"t":1844},{"x":22254,"d":false,"y":-24051,"t":1845},{"x":-15913,"d":false,"y":28644,"t":1846},{"x":-21984,"d":false,"y":24298,"t":1847},{"x":21993,"d":false,"y":-24290,"t":1848},{"x":-21984,"d":false,"y":24298,"t":1849},{"x":21989,"d":false,"y":-24293,"t":1850},{"x":-21984,"d":false,"y":24298,"t":1851},{"x":-21769,"d":false,"y":24490,"t":1852},{"x":21726,"d":false,"y":-24529,"t":1853},{"x":-21769,"d":false,"y":24490,"t":1854},{"x":-21460,"d":false,"y":24762,"t":1855},{"x":21498,"d":false,"y":-24729,"t":1856},{"x":21682,"d":false,"y":-24568,"t":1857},{"x":-21769,"d":false,"y":24490,"t":1858},{"x":-21460,"d":false,"y":24762,"t":1859},{"x":21452,"d":false,"y":-24769,"t":1860},{"x":-21460,"d":false,"y":24762,"t":1861},{"x":21447,"d":false,"y":-24773,"t":1862},{"x":4247,"d":false,"y":-32491,"t":1863},{"x":4521,"d":false,"y":-32454,"t":1864},{"x":4804,"d":false,"y":-32413,"t":1865},{"x":5069,"d":false,"y":-32373,"t":1866},{"x":5343,"d":false,"y":-32328,"t":1867},{"x":5617,"d":false,"y":-32282,"t":1868},{"x":5891,"d":false,"y":-32233,"t":1869},{"x":6165,"d":false,"y":-32182,"t":1870},{"x":6452,"d":false,"y":-32125,"t":1871},{"x":6713,"d":false,"y":-32072,"t":1872},{"x":6986,"d":false,"y":-32014,"t":1873},{"x":7274,"d":false,"y":-31950,"t":1874},{"x":7547,"d":false,"y":-31886,"t":1875},{"x":7819,"d":false,"y":-31820,"t":1876},{"t":1877,"x":8043,"d":false,"y":-31764},{"t":1878,"x":8315,"d":false,"y":-31694},{"t":1879,"x":8587,"d":false,"y":-31622},{"t":1880,"x":8875,"d":false,"y":-31542},{"t":1881,"x":9146,"d":false,"y":-31465},{"t":1882,"x":9434,"d":false,"y":-31379},{"t":1883,"x":9704,"d":false,"y":-31297},{"t":1884,"x":9910,"d":false,"y":-31233},{"t":1885,"x":10218,"d":false,"y":-31133},{"t":1886,"x":10485,"d":false,"y":-31044},{"t":1887,"x":10751,"d":false,"y":-30953},{"t":1888,"x":11038,"d":false,"y":-30852},{"t":1889,"x":11264,"d":false,"y":-30770},{"t":1890,"x":11528,"d":false,"y":-30672},{"t":1891,"x":11813,"d":false,"y":-30563},{"t":1892,"x":12098,"d":false,"y":-30452},{"t":1893,"x":12300,"d":false,"y":-30371},{"t":1894,"x":12608,"d":false,"y":-30244},{"t":1895,"x":12866,"d":false,"y":-30135},{"t":1896,"x":13090,"d":false,"y":-30039},{"t":1897,"x":13398,"d":false,"y":-29903},{"t":1898,"x":13653,"d":false,"y":-29787},{"t":1899,"x":13902,"d":false,"y":-29672},{"t":1900,"x":14182,"d":false,"y":-29539},{"t":1901,"x":14432,"d":false,"y":-29417},{"t":1902,"x":14682,"d":false,"y":-29294},{"t":1903,"x":14958,"d":false,"y":-29154},{"t":1904,"x":15178,"d":false,"y":-29040},{"t":1905,"x":15481,"d":false,"y":-28879},{"t":1906,"x":15671,"d":false,"y":-28777},{"t":1907,"x":15942,"d":false,"y":-28627},{"t":1908,"x":16190,"d":false,"y":-28488},{"t":1909,"x":16459,"d":false,"y":-28334},{"t":1910,"x":16674,"d":false,"y":-28207},{"t":1911,"x":16971,"d":false,"y":-28030},{"t":1912,"x":17185,"d":false,"y":-27899},{"d":false,"t":1913,"y":-27716,"x":17479},{"d":false,"t":1914,"y":-27561,"x":17723},{"d":false,"t":1915,"y":-27424,"x":17934},{"d":false,"t":1916,"y":-27253,"x":18192},{"d":false,"t":1917,"y":-27091,"x":18433},{"d":false,"t":1918,"y":-26948,"x":18640},{"d":false,"t":1919,"y":-26725,"x":18959},{"d":false,"t":1920,"y":-26578,"x":19164},{"d":false,"t":1921,"y":-26430,"x":19368},{"d":false,"t":1922,"y":-26230,"x":19638},{"d":false,"t":1923,"y":-26045,"x":19884},{"d":false,"t":1924,"y":-25865,"x":20117},{"d":false,"t":1925,"y":-25682,"x":20349},{"d":false,"t":1926,"y":-25497,"x":20581},{"d":false,"t":1927,"y":32767,"x":0},{"d":false,"t":1928,"y":32767,"x":0},{"d":false,"t":1929,"y":32767,"x":0},{"d":false,"t":1930,"y":32767,"x":0},{"d":false,"t":1931,"y":32767,"x":0},{"d":false,"t":1932,"y":32767,"x":0},{"d":false,"t":1933,"y":32767,"x":0},{"d":false,"t":1934,"y":32767,"x":0},{"d":false,"t":1935,"y":32767,"x":0},{"d":false,"t":1936,"y":32767,"x":0},{"d":false,"t":1937,"y":32767,"x":0},{"d":false,"t":1938,"y":32767,"x":0},{"d":false,"t":1939,"y":32767,"x":0},{"d":false,"t":1940,"y":32767,"x":0},{"d":false,"t":1941,"y":32767,"x":0},{"d":false,"t":1942,"y":32767,"x":0},{"d":false,"t":1943,"y":32767,"x":0},{"d":false,"t":1944,"y":32767,"x":0},{"d":false,"t":1945,"y":32767,"x":0},{"d":false,"t":1946,"y":32767,"x":0},{"d":false,"t":1947,"y":32767,"x":0},{"d":false,"t":1948,"y":32767,"x":0},{"x":0,"d":false,"t":1949,"y":32767},{"x":0,"d":false,"t":1950,"y":32767},{"x":0,"d":false,"t":1951,"y":32767},{"x":0,"d":false,"t":1952,"y":32767},{"x":-14654,"d":false,"t":1953,"y":29308},{"x":-14245,"d":false,"t":1954,"y":29508},{"x":-15117,"d":false,"t":1955,"y":29071},{"x":-15204,"d":false,"t":1956,"y":29026},{"x":11876,"d":false,"t":1957,"y":30539},{"x":6426,"d":false,"t":1958,"y":32131},{"x":6188,"d":false,"t":1959,"y":32177},{"x":5862,"d":false,"t":1960,"y":32238},{"x":5387,"d":false,"t":1961,"y":32321},{"x":3260,"d":false,"t":1962,"y":32604},{"x":2513,"d":false,"t":1963,"y":32670},{"x":2967,"d":false,"t":1964,"y":32632},{"x":3619,"d":false,"t":1965,"y":32567},{"x":1092,"d":false,"t":1966,"y":32749},{"x":1259,"d":false,"t":1967,"y":32743},{"x":1488,"d":false,"t":1968,"y":32733},{"x":1818,"d":false,"t":1969,"y":32717},{"x":1092,"d":false,"t":1970,"y":32749},{"x":0,"d":false,"t":1971,"y":32767},{"x":0,"d":false,"t":1972,"y":32767},{"x":0,"d":false,"t":1973,"y":32767},{"x":0,"d":false,"t":1974,"y":32767},{"x":0,"d":false,"t":1975,"y":32767},{"x":0,"d":false,"t":1976,"y":32767},{"x":0,"d":false,"t":1977,"y":32767},{"x":0,"d":false,"t":1978,"y":32767},{"x":0,"d":false,"t":1979,"y":32767},{"x":0,"d":false,"t":1980,"y":32767},{"x":0,"d":false,"t":1981,"y":32767},{"x":0,"d":false,"t":1982,"y":32767},{"x":0,"d":false,"t":1983,"y":32767},{"x":0,"d":false,"t":1984,"y":32767},{"t":1985,"y":32767,"x":0,"d":false},{"t":1986,"y":32767,"x":0,"d":false},{"t":1987,"y":27906,"x":-17173,"d":false},{"t":1988,"y":28526,"x":-16123,"d":false},{"t":1989,"y":28711,"x":-15791,"d":false},{"t":1990,"y":27786,"x":-17366,"d":false},{"t":1991,"y":25673,"x":-20361,"d":false},{"t":1992,"y":25491,"x":-20589,"d":false},{"t":1993,"y":25360,"x":-20749,"d":false},{"t":1994,"y":25064,"x":-21106,"d":false},{"t":1995,"y":25431,"x":-20663,"d":false},{"t":1996,"y":25014,"x":-21166,"d":false},{"t":1997,"y":24077,"x":-22225,"d":false},{"t":1998,"y":24198,"x":-22094,"d":false},{"t":1999,"y":23756,"x":-22568,"d":false},{"t":2000,"y":23861,"x":-22457,"d":false},{"t":2001,"y":24011,"x":-22296,"d":false},{"t":2002,"y":23587,"x":-22745,"d":false},{"t":2003,"y":23638,"x":-22692,"d":false},{"t":2004,"y":23702,"x":-22625,"d":false},{"t":2005,"y":23787,"x":-22535,"d":false},{"t":2006,"y":23170,"x":-23170,"d":false},{"t":2007,"y":23170,"x":-23170,"d":false},{"t":2008,"y":-26171,"x":19717,"d":false},{"t":2009,"y":24077,"x":-22225,"d":false},{"t":2010,"y":23603,"x":-22729,"d":false},{"t":2011,"y":-26393,"x":19419,"d":false},{"t":2012,"y":24043,"x":-22262,"d":false},{"t":2013,"y":-26423,"x":19377,"d":false},{"t":2014,"y":24043,"x":-22262,"d":false},{"t":2015,"y":24154,"x":-22141,"d":false},{"t":2016,"y":-26652,"x":19062,"d":false},{"t":2017,"y":24599,"x":-21647,"d":false},{"t":2018,"y":-26652,"x":19062,"d":false},{"t":2019,"y":25090,"x":-21075,"d":false},{"t":2020,"y":-26652,"x":19062,"d":false},{"d":false,"y":25090,"x":-21075,"t":2021},{"d":false,"y":24799,"x":-21417,"t":2022},{"d":false,"y":-26877,"x":18743,"t":2023},{"d":false,"y":-26693,"x":19004,"t":2024},{"d":false,"y":25090,"x":-21075,"t":2025},{"d":false,"y":25360,"x":-20749,"t":2026},{"d":false,"y":-26947,"x":18642,"t":2027},{"d":false,"y":25804,"x":-20195,"t":2028},{"d":false,"y":25718,"x":-20304,"t":2029},{"d":false,"y":-27168,"x":18319,"t":2030},{"d":false,"y":-26918,"x":18684,"t":2031},{"d":false,"y":26350,"x":-19476,"t":2032},{"d":false,"y":26214,"x":-19660,"t":2033},{"d":false,"y":-27182,"x":18299,"t":2034},{"d":false,"y":26214,"x":-19660,"t":2035},{"d":false,"y":26770,"x":-18896,"t":2036},{"d":false,"y":-27375,"x":18007,"t":2037},{"d":false,"y":-27053,"x":18488,"t":2038},{"d":false,"y":-26735,"x":18946,"t":2039},{"d":false,"y":-26440,"x":19354,"t":2040},{"d":false,"y":-26137,"x":19762,"t":2041},{"d":false,"y":-25732,"x":20287,"t":2042},{"d":false,"y":-25408,"x":20691,"t":2043},{"d":false,"y":-25030,"x":21146,"t":2044},{"d":false,"y":-24733,"x":21493,"t":2045},{"d":false,"y":-24334,"x":21944,"t":2046},{"d":false,"y":-23973,"x":22338,"t":2047},{"d":false,"y":-23550,"x":22783,"t":2048},{"d":false,"y":-23170,"x":23170,"t":2049},{"d":false,"y":-22835,"x":23500,"t":2050},{"d":false,"y":-22433,"x":23884,"t":2051},{"d":false,"y":-22136,"x":24159,"t":2052},{"d":false,"y":-21657,"x":24590,"t":2053},{"d":false,"y":-21343,"x":24863,"t":2054},{"d":false,"y":-20954,"x":25191,"t":2055},{"d":false,"y":-20554,"x":25519,"t":2056},{"d":false,"y":-20270,"x":25745,"t":2057},{"d":false,"y":-19922,"x":26015,"t":2058},{"d":false,"y":-19546,"x":26299,"t":2059},{"d":false,"y":-19237,"x":26526,"t":2060},{"d":false,"y":-18701,"x":26906,"t":2061},{"d":false,"y":-18372,"x":27132,"t":2062},{"d":false,"y":-18034,"x":27358,"t":2063},{"d":false,"y":-17600,"x":27639,"t":2064},{"d":false,"y":-17096,"x":27953,"t":2065},{"d":false,"y":-16729,"x":28175,"t":2066},{"d":false,"y":-16257,"x":28450,"t":2067},{"d":false,"y":-15870,"x":28668,"t":2068},{"d":false,"y":-15272,"x":28990,"t":2069},{"d":false,"y":-14862,"x":29203,"t":2070},{"d":false,"y":-14389,"x":29439,"t":2071},{"d":false,"y":-14010,"x":29621,"t":2072},{"d":false,"y":-13458,"x":29876,"t":2073},{"d":false,"y":-12940,"x":30104,"t":2074},{"d":false,"y":-12476,"x":30299,"t":2075},{"d":false,"y":-12003,"x":30490,"t":2076},{"d":false,"y":-11490,"x":30686,"t":2077},{"d":false,"y":-11039,"x":30852,"t":2078},{"d":false,"y":-10405,"x":31071,"t":2079},{"d":false,"y":-9839,"x":31255,"t":2080},{"d":false,"y":-9349,"x":31405,"t":2081},{"d":false,"y":-8709,"x":31588,"t":2082},{"d":false,"y":-8052,"x":31762,"t":2083},{"d":false,"y":-7698,"x":31850,"t":2084},{"d":false,"y":-7011,"x":32008,"t":2085},{"d":false,"y":-6486,"x":32119,"t":2086},{"d":false,"y":19134,"x":-26600,"t":2087},{"d":false,"y":19150,"x":-26589,"t":2088},{"d":false,"y":19061,"x":-26653,"t":2089},{"d":false,"y":19155,"x":-26585,"t":2090},{"d":false,"y":19172,"x":-26572,"t":2091},{"d":false,"y":19078,"x":-26640,"t":2092},{"t":2093,"x":-26628,"y":19095,"d":false},{"t":2094,"x":-26554,"y":19198,"d":false},{"t":2095,"x":-26626,"y":19098,"d":false},{"t":2096,"x":-26613,"y":19116,"d":false},{"t":2097,"x":-26599,"y":19136,"d":false},{"t":2098,"x":-26610,"y":19120,"d":false},{"t":2099,"x":-26595,"y":19141,"d":false},{"t":2100,"x":-26580,"y":19162,"d":false},{"t":2101,"x":-26664,"y":19045,"d":false},{"t":2102,"x":-26575,"y":19169,"d":false},{"t":2103,"x":-26558,"y":19193,"d":false},{"t":2104,"x":-26648,"y":19067,"d":false},{"t":2105,"x":-26632,"y":19090,"d":false},{"t":2106,"x":-26531,"y":19229,"d":false},{"t":2107,"x":-26630,"y":19093,"d":false},{"t":2108,"x":-26611,"y":19119,"d":false},{"t":2109,"x":-5387,"y":32321,"d":false},{"t":2110,"x":-4861,"y":32404,"d":false},{"t":2111,"x":-16064,"y":28559,"d":false},{"t":2112,"x":-16257,"y":28450,"d":false},{"t":2113,"x":-16858,"y":28097,"d":false},{"t":2114,"x":-16257,"y":28450,"d":false},{"t":2115,"x":-15913,"y":28644,"d":false},{"t":2116,"x":-20977,"y":25172,"d":false},{"t":2117,"x":-20698,"y":25402,"d":false},{"t":2118,"x":-20339,"y":25691,"d":false},{"t":2119,"x":-20617,"y":25468,"d":false},{"t":2120,"x":23467,"y":-22869,"d":false},{"t":2121,"x":23879,"y":-22439,"d":false},{"t":2122,"x":24229,"y":-22059,"d":false},{"t":2123,"x":24630,"y":-21611,"d":false},{"t":2124,"x":25023,"y":-21155,"d":false},{"t":2125,"x":25360,"y":-20749,"d":false},{"t":2126,"x":25740,"y":-20276,"d":false},{"t":2127,"x":26067,"y":-19855,"d":false},{"t":2128,"x":26489,"y":-19287,"d":false},{"t":2129,"d":false,"x":26803,"y":-18848},{"t":2130,"d":false,"x":27112,"y":-18402},{"t":2131,"d":false,"x":27395,"y":-17978},{"t":2132,"d":false,"x":27745,"y":-17433},{"t":2133,"d":false,"x":28032,"y":-16967},{"t":2134,"d":false,"x":28366,"y":-16403},{"t":2135,"d":false,"x":28585,"y":-16018},{"t":2136,"d":false,"x":28902,"y":-15439},{"t":2137,"d":false,"x":29158,"y":-14950},{"t":2138,"d":false,"x":29406,"y":-14456},{"t":2139,"d":false,"x":29645,"y":-13958},{"t":2140,"d":false,"x":29855,"y":-13503},{"t":2141,"d":false,"x":30124,"y":-12893},{"t":2142,"d":false,"x":30276,"y":-12532},{"t":2143,"d":false,"x":30525,"y":-11912},{"t":2144,"d":false,"x":30691,"y":-11478},{"t":2145,"d":false,"x":30881,"y":-10958},{"t":2146,"d":false,"x":31048,"y":-10474},{"t":2147,"d":false,"x":31244,"y":-9873},{"t":2148,"d":false,"x":31406,"y":-9347},{"t":2149,"d":false,"x":31581,"y":-8738},{"t":2150,"d":false,"x":31683,"y":-8357},{"t":2151,"d":false,"x":31811,"y":-7859},{"t":2152,"d":false,"x":31957,"y":-7240},{"t":2153,"d":false,"x":32061,"y":-6763},{"t":2154,"d":false,"x":32164,"y":-6258},{"t":2155,"d":false,"x":32254,"y":-5773},{"t":2156,"d":false,"x":32361,"y":-5143},{"t":2157,"d":false,"x":32438,"y":-4634},{"t":2158,"d":false,"x":32504,"y":-4141},{"t":2159,"d":false,"x":32565,"y":-3632},{"t":2160,"d":false,"x":32617,"y":-3136},{"t":2161,"d":false,"x":32661,"y":-2628},{"t":2162,"d":false,"x":32698,"y":-2130},{"t":2163,"d":false,"x":32732,"y":-1505},{"t":2164,"d":false,"x":32752,"y":-1004},{"d":false,"t":2165,"x":32763,"y":-502},{"d":false,"t":2166,"x":32767,"y":0},{"d":false,"t":2167,"x":32763,"y":500},{"d":false,"t":2168,"x":32752,"y":1004},{"d":false,"t":2169,"x":32738,"y":1380},{"d":false,"t":2170,"x":32713,"y":1880},{"d":false,"t":2171,"x":32681,"y":2379},{"d":false,"t":2172,"x":-30583,"y":11763},{"d":false,"t":2173,"x":32679,"y":2397},{"d":false,"t":2174,"x":-31928,"y":7368},{"d":false,"t":2175,"x":32679,"y":2407},{"d":false,"t":2176,"x":-32386,"y":4982},{"d":false,"t":2177,"x":32678,"y":2416},{"d":false,"t":2178,"x":-32670,"y":2513},{"d":false,"t":2179,"x":32687,"y":2289},{"d":false,"t":2180,"x":-32767,"y":0},{"d":false,"t":2181,"x":32686,"y":2298},{"d":false,"t":2182,"x":-32767,"y":0},{"d":false,"t":2183,"x":32686,"y":2298},{"d":false,"t":2184,"x":-32767,"y":0},{"d":false,"t":2185,"x":32686,"y":2298},{"d":false,"t":2186,"x":-32670,"y":-2513},{"d":false,"t":2187,"x":32686,"y":2298},{"d":false,"t":2188,"x":-32670,"y":-2513},{"d":false,"t":2189,"x":32686,"y":2298},{"d":false,"t":2190,"x":-32670,"y":-2513},{"d":false,"t":2191,"x":32686,"y":2298},{"d":false,"t":2192,"x":-32670,"y":-2513},{"d":false,"t":2193,"x":32686,"y":2298},{"d":false,"t":2194,"x":-32767,"y":0},{"d":false,"t":2195,"x":32686,"y":2298},{"d":false,"t":2196,"x":-32670,"y":-2513},{"d":false,"t":2197,"x":32686,"y":2298},{"d":false,"t":2198,"x":-32670,"y":-2513},{"d":false,"t":2199,"x":32686,"y":2298},{"d":false,"t":2200,"x":-32670,"y":-2513},{"d":false,"t":2201,"y":2298,"x":32686},{"d":false,"t":2202,"y":-2513,"x":-32670},{"d":false,"t":2203,"y":2298,"x":32686},{"d":false,"t":2204,"y":-2513,"x":-32670},{"d":false,"t":2205,"y":2298,"x":32686},{"d":false,"t":2206,"y":-2513,"x":-32670},{"d":false,"t":2207,"y":2298,"x":32686},{"d":false,"t":2208,"y":-2513,"x":-32670},{"d":false,"t":2209,"y":2298,"x":32686},{"d":false,"t":2210,"y":32615,"x":3156},{"d":false,"t":2211,"y":32567,"x":3619},{"d":false,"t":2212,"y":32644,"x":2839},{"d":false,"t":2213,"y":32587,"x":3430},{"d":false,"t":2214,"y":32750,"x":1056},{"d":false,"t":2215,"y":23170,"x":-23170},{"d":false,"t":2216,"y":23170,"x":-23170},{"d":false,"t":2217,"y":31225,"x":9935},{"d":false,"t":2218,"y":31086,"x":10362},{"d":false,"t":2219,"y":32321,"x":5387},{"d":false,"t":2220,"y":32386,"x":4982},{"d":false,"t":2221,"y":32467,"x":4427},{"d":false,"t":2222,"y":32321,"x":5387},{"d":false,"t":2223,"y":32694,"x":2180},{"d":false,"t":2224,"y":32670,"x":2513},{"d":false,"t":2225,"y":32733,"x":1488},{"d":false,"t":2226,"y":32717,"x":1818},{"d":false,"t":2227,"y":29308,"x":-14654},{"d":false,"t":2228,"y":29523,"x":-14215},{"d":false,"t":2229,"y":29560,"x":-14138},{"d":false,"t":2230,"y":29308,"x":-14654},{"d":false,"t":2231,"y":29308,"x":-14654},{"d":false,"t":2232,"y":26105,"x":-19804},{"d":false,"t":2233,"y":25587,"x":-20469},{"d":false,"t":2234,"y":25928,"x":-20035},{"d":false,"t":2235,"y":25718,"x":-20304},{"d":false,"t":2236,"y":26214,"x":-19660},{"y":24397,"x":-21873,"t":2237,"d":false},{"y":24542,"x":-21711,"t":2238,"d":false},{"y":24198,"x":-22094,"t":2239,"d":false},{"y":24356,"x":-21920,"t":2240,"d":false},{"y":24570,"x":-21679,"t":2241,"d":false},{"y":24011,"x":-22296,"t":2242,"d":false},{"y":30727,"x":-11380,"t":2243,"d":false},{"y":30948,"x":-10765,"t":2244,"d":false},{"y":30747,"x":-11328,"t":2245,"d":false},{"y":30681,"x":-11505,"t":2246,"d":false},{"y":32438,"x":-4634,"t":2247,"d":false},{"y":32321,"x":-5387,"t":2248,"d":false},{"y":32404,"x":-4861,"t":2249,"d":false},{"y":32624,"x":-3058,"t":2250,"d":false},{"y":32684,"x":-2335,"t":2251,"d":false},{"y":32654,"x":-2721,"t":2252,"d":false},{"y":32604,"x":-3260,"t":2253,"d":false},{"y":28937,"x":-15373,"t":2254,"d":false},{"y":29104,"x":-15054,"t":2255,"d":false},{"y":29071,"x":-15117,"t":2256,"d":false},{"y":28450,"x":-16257,"t":2257,"d":false},{"y":28644,"x":-15913,"t":2258,"d":false},{"y":25587,"x":-20469,"t":2259,"d":false},{"y":25865,"x":-20117,"t":2260,"d":false},{"y":25691,"x":-20339,"t":2261,"d":false},{"y":26064,"x":-19858,"t":2262,"d":false},{"y":25865,"x":-20117,"t":2263,"d":false},{"y":26423,"x":-19377,"t":2264,"d":false},{"y":24043,"x":-22262,"t":2265,"d":false},{"y":24599,"x":-21647,"t":2266,"d":false},{"y":24246,"x":-22041,"t":2267,"d":false},{"y":24419,"x":-21849,"t":2268,"d":false},{"y":24660,"x":-21577,"t":2269,"d":false},{"y":24077,"x":-22225,"t":2270,"d":false},{"y":24356,"x":-21920,"t":2271,"d":false},{"y":30050,"x":13065,"t":2272,"d":false},{"y":30199,"d":false,"t":2273,"x":12715},{"y":29693,"d":false,"t":2274,"x":13857},{"y":30246,"d":false,"t":2275,"x":12603},{"y":-32396,"d":false,"t":2276,"x":4917},{"y":31789,"d":false,"t":2277,"x":7947},{"y":31789,"d":false,"t":2278,"x":7947},{"y":-32545,"d":false,"t":2279,"x":3812},{"y":32767,"d":false,"t":2280,"x":0},{"y":-32575,"d":false,"t":2281,"x":3538},{"y":32767,"d":false,"t":2282,"x":0},{"y":-32607,"d":false,"t":2283,"x":3231},{"y":32767,"d":false,"t":2284,"x":0},{"y":-32607,"d":false,"t":2285,"x":3231},{"y":32514,"d":false,"t":2286,"x":-4064},{"y":-32607,"d":false,"t":2287,"x":3231},{"y":32514,"d":false,"t":2288,"x":-4064},{"y":-32607,"d":false,"t":2289,"x":3231},{"y":32514,"d":false,"t":2290,"x":-4064},{"y":-32609,"d":false,"t":2291,"x":3217},{"y":32767,"d":false,"t":2292,"x":0},{"y":-32609,"d":false,"t":2293,"x":3217},{"y":32514,"d":false,"t":2294,"x":-4064},{"y":-32609,"d":false,"t":2295,"x":3217},{"y":32514,"d":false,"t":2296,"x":-4064},{"y":-32609,"d":false,"t":2297,"x":3217},{"y":32514,"d":false,"t":2298,"x":-4064},{"y":-32610,"d":false,"t":2299,"x":3203},{"y":32514,"d":false,"t":2300,"x":-4064},{"y":-32610,"d":false,"t":2301,"x":3203},{"y":32767,"d":false,"t":2302,"x":0},{"y":-32610,"d":false,"t":2303,"x":3203},{"y":32514,"d":false,"t":2304,"x":-4064},{"y":-32610,"d":false,"t":2305,"x":3203},{"y":32514,"d":false,"t":2306,"x":-4064},{"y":-32611,"d":false,"t":2307,"x":3189},{"y":32514,"d":false,"t":2308,"x":-4064},{"d":false,"x":3189,"t":2309,"y":-32611},{"d":false,"x":-4064,"t":2310,"y":32514},{"d":false,"x":3189,"t":2311,"y":-32611},{"d":false,"x":0,"t":2312,"y":32767},{"d":false,"x":3189,"t":2313,"y":-32611},{"d":false,"x":-4064,"t":2314,"y":32514},{"d":false,"x":3175,"t":2315,"y":-32613},{"d":false,"x":-4064,"t":2316,"y":32514},{"d":false,"x":3175,"t":2317,"y":-32613},{"d":false,"x":-4064,"t":2318,"y":32514},{"d":false,"x":3175,"t":2319,"y":-32613},{"d":false,"x":-4064,"t":2320,"y":32514},{"d":false,"x":3175,"t":2321,"y":-32613},{"d":false,"x":0,"t":2322,"y":32767},{"d":false,"x":3161,"t":2323,"y":-32614},{"d":false,"x":-4064,"t":2324,"y":32514},{"d":false,"x":3161,"t":2325,"y":-32614},{"d":false,"x":-4064,"t":2326,"y":32514},{"d":false,"x":3161,"t":2327,"y":-32614},{"d":false,"x":-4064,"t":2328,"y":32514},{"d":false,"x":3161,"t":2329,"y":-32614},{"d":false,"x":0,"t":2330,"y":32767},{"d":false,"x":3147,"t":2331,"y":-32616},{"d":false,"x":-4064,"t":2332,"y":32514},{"d":false,"x":3147,"t":2333,"y":-32616},{"d":false,"x":-4064,"t":2334,"y":32514},{"d":false,"x":3147,"t":2335,"y":-32616},{"d":false,"x":-4064,"t":2336,"y":32514},{"d":false,"x":3147,"t":2337,"y":-32616},{"d":false,"x":0,"t":2338,"y":32767},{"d":false,"x":3147,"t":2339,"y":-32616},{"d":false,"x":-4064,"t":2340,"y":32514},{"d":false,"x":3147,"t":2341,"y":-32616},{"d":false,"x":-4064,"t":2342,"y":32514},{"d":false,"x":3147,"t":2343,"y":-32616},{"d":false,"x":-4064,"t":2344,"y":32514},{"d":false,"y":-32616,"x":3147,"t":2345},{"d":false,"y":32514,"x":-4064,"t":2346},{"d":false,"y":-32616,"x":3147,"t":2347},{"d":false,"y":32767,"x":0,"t":2348},{"d":false,"y":-32616,"x":3147,"t":2349},{"d":false,"y":32514,"x":-4064,"t":2350},{"d":false,"y":-32616,"x":3147,"t":2351},{"d":false,"y":32514,"x":-4064,"t":2352},{"d":false,"y":-32616,"x":3147,"t":2353},{"d":false,"y":32514,"x":-4064,"t":2354},{"d":false,"y":-32616,"x":3147,"t":2355},{"d":false,"y":32767,"x":0,"t":2356},{"d":false,"y":-32616,"x":3147,"t":2357},{"d":false,"y":32514,"x":-4064,"t":2358},{"d":false,"y":-32616,"x":3147,"t":2359},{"d":false,"y":32514,"x":-4064,"t":2360},{"d":false,"y":-32616,"x":3147,"t":2361},{"d":false,"y":32514,"x":-4064,"t":2362},{"d":false,"y":-32616,"x":3147,"t":2363},{"d":false,"y":32514,"x":-4064,"t":2364},{"d":false,"y":23170,"x":23170,"t":2365},{"d":false,"y":32767,"x":0,"t":2366},{"d":false,"y":-23170,"x":-23170,"t":2367},{"d":false,"y":23170,"x":23170,"t":2368},{"d":false,"y":-23170,"x":-23170,"t":2369},{"d":false,"y":23170,"x":23170,"t":2370},{"d":false,"y":-23170,"x":-23170,"t":2371},{"d":false,"y":23170,"x":23170,"t":2372},{"d":false,"y":32767,"x":0,"t":2373},{"d":false,"y":-23170,"x":-23170,"t":2374},{"d":false,"y":23170,"x":23170,"t":2375},{"d":false,"y":-23170,"x":-23170,"t":2376},{"d":false,"y":23170,"x":23170,"t":2377},{"d":false,"y":-23170,"x":-23170,"t":2378},{"d":false,"y":23170,"x":23170,"t":2379},{"d":false,"y":32767,"x":0,"t":2380},{"t":2381,"x":23170,"d":false,"y":23170},{"t":2382,"x":0,"d":false,"y":32767},{"t":2383,"x":23170,"d":false,"y":23170},{"t":2384,"x":0,"d":false,"y":32767},{"t":2385,"x":23170,"d":false,"y":23170},{"t":2386,"x":-1345,"d":false,"y":-32739},{"t":2387,"x":0,"d":false,"y":32767},{"t":2388,"x":23170,"d":false,"y":23170},{"t":2389,"x":-2090,"d":false,"y":-32700},{"t":2390,"x":23170,"d":false,"y":23170},{"t":2391,"x":-1951,"d":false,"y":-32709},{"t":2392,"x":23170,"d":false,"y":23170},{"t":2393,"x":0,"d":true,"y":32767},{"t":2394,"x":-2819,"d":false,"y":-32645},{"t":2395,"x":23170,"d":true,"y":23170},{"t":2396,"x":-2721,"d":false,"y":-32654},{"t":2397,"x":23170,"d":true,"y":23170},{"t":2398,"x":-2607,"d":false,"y":-32663},{"t":2399,"x":-1364,"d":false,"y":-32739},{"t":2400,"x":-151,"d":false,"y":-32767},{"t":2401,"x":1052,"d":false,"y":-32750},{"t":2402,"x":-32746,"d":false,"y":1170},{"t":2403,"x":-32726,"d":false,"y":1636},{"t":2404,"x":1671,"d":false,"y":-32724},{"t":2405,"x":-27906,"d":false,"y":17173},{"t":2406,"x":-27264,"d":false,"y":18176},{"t":2407,"x":-27264,"d":false,"y":18176},{"t":2408,"x":-27264,"d":false,"y":18176},{"t":2409,"x":32767,"d":false,"y":0},{"t":2410,"x":-32767,"d":false,"y":0},{"t":2411,"x":32767,"d":false,"y":0},{"t":2412,"x":-32767,"d":false,"y":0},{"t":2413,"x":32767,"d":false,"y":0},{"t":2414,"x":20663,"d":false,"y":25431},{"t":2415,"x":10682,"d":false,"y":30977},{"t":2416,"x":11099,"d":false,"y":30830},{"x":10362,"y":31086,"t":2417,"d":false},{"x":0,"y":0,"t":2418,"u":1,"d":false},{"x":32733,"y":1488,"t":2419,"d":false},{"x":32717,"y":1818,"t":2420,"d":false},{"x":28508,"y":16155,"t":2421,"d":false},{"x":28644,"y":15913,"t":2422,"d":false},{"x":28526,"y":16123,"t":2423,"d":false},{"x":28711,"y":15791,"t":2424,"d":false},{"x":28559,"y":16064,"t":2425,"d":false},{"x":25673,"y":20361,"t":2426,"d":false},{"x":25491,"y":20589,"t":2427,"d":false},{"x":25360,"y":20749,"t":2428,"d":false},{"x":25064,"y":21106,"t":2429,"d":false},{"x":25431,"y":20663,"t":2430,"d":false},{"x":24397,"y":21873,"t":2431,"d":false},{"x":24077,"y":22225,"t":2432,"d":false},{"x":24198,"y":22094,"t":2433,"d":false},{"x":24356,"y":21920,"t":2434,"d":false},{"x":23861,"y":22457,"t":2435,"d":false},{"x":24011,"y":22296,"t":2436,"d":false},{"x":24011,"y":22296,"t":2437,"d":false},{"x":24114,"y":22185,"t":2438,"d":false},{"x":23702,"y":22625,"t":2439,"d":false},{"x":23787,"y":22535,"t":2440,"d":false},{"x":23905,"y":22411,"t":2441,"d":false},{"x":23170,"y":23170,"t":2442,"d":false},{"x":23170,"y":23170,"t":2443,"d":false},{"x":23170,"y":23170,"t":2444,"d":false},{"x":23170,"y":23170,"t":2445,"d":false},{"x":23822,"y":22499,"t":2446,"d":false},{"x":23954,"y":22358,"t":2447,"d":false},{"x":23170,"y":23170,"t":2448,"d":false},{"x":23170,"y":23170,"t":2449,"d":false},{"x":23170,"y":23170,"t":2450,"d":false},{"x":23170,"y":23170,"t":2451,"d":false},{"x":23170,"y":23170,"t":2452,"d":false},{"x":23170,"t":2453,"y":23170,"d":false},{"x":23170,"t":2454,"y":23170,"d":false},{"x":23170,"t":2455,"y":23170,"d":false},{"x":23170,"t":2456,"y":23170,"d":false},{"x":23170,"t":2457,"y":23170,"d":false},{"x":23905,"t":2458,"y":22411,"d":false},{"x":23170,"t":2459,"y":23170,"d":false},{"x":23170,"t":2460,"y":23170,"d":false},{"x":23170,"t":2461,"y":23170,"d":false},{"x":23170,"t":2462,"y":23170,"d":false},{"x":23170,"t":2463,"y":23170,"d":false},{"x":22358,"t":2464,"y":23954,"d":false},{"x":23170,"t":2465,"y":23170,"d":false},{"x":23170,"t":2466,"y":23170,"d":false},{"x":23170,"t":2467,"y":23170,"d":false},{"x":23170,"t":2468,"y":23170,"d":false},{"x":23170,"t":2469,"y":23170,"d":false},{"x":24011,"t":2470,"y":22296,"d":false},{"x":23170,"t":2471,"y":23170,"d":false},{"x":23170,"t":2472,"y":23170,"d":false},{"x":23170,"t":2473,"y":23170,"d":false},{"x":23170,"t":2474,"y":23170,"d":false},{"x":23170,"t":2475,"y":23170,"d":false},{"x":23170,"t":2476,"y":23170,"d":false},{"x":23170,"t":2477,"y":23170,"d":false},{"x":23170,"t":2478,"y":23170,"d":false},{"x":23170,"t":2479,"y":23170,"d":false},{"x":23170,"t":2480,"y":23170,"d":false},{"x":23170,"t":2481,"y":23170,"d":false},{"x":23170,"t":2482,"y":23170,"d":false},{"x":23170,"t":2483,"y":23170,"d":false},{"x":23170,"t":2484,"y":23170,"d":false},{"x":23170,"t":2485,"y":23170,"d":false},{"x":23170,"t":2486,"y":23170,"d":false},{"x":22296,"t":2487,"y":24011,"d":false},{"x":23170,"t":2488,"y":23170,"d":false},{"x":23170,"d":false,"t":2489,"y":23170},{"x":23170,"d":false,"t":2490,"y":23170},{"x":23170,"d":false,"t":2491,"y":23170},{"x":23170,"d":false,"t":2492,"y":23170},{"x":24077,"d":false,"t":2493,"y":22225},{"x":23170,"d":false,"t":2494,"y":23170},{"x":23170,"d":false,"t":2495,"y":23170},{"x":23170,"d":false,"t":2496,"y":23170},{"x":23170,"d":false,"t":2497,"y":23170},{"x":23170,"d":false,"t":2498,"y":23170},{"x":22745,"d":false,"t":2499,"y":23587},{"x":23170,"d":false,"t":2500,"y":23170},{"x":23170,"d":false,"t":2501,"y":23170},{"x":23170,"d":false,"t":2502,"y":23170},{"x":23170,"d":false,"t":2503,"y":23170},{"x":23170,"d":false,"t":2504,"y":23170},{"x":23170,"d":false,"t":2505,"y":23170},{"x":23170,"d":false,"t":2506,"y":23170},{"x":23170,"d":false,"t":2507,"y":23170},{"x":23170,"d":false,"t":2508,"y":23170},{"x":23170,"d":false,"t":2509,"y":23170},{"x":23170,"d":false,"t":2510,"y":23170},{"x":23170,"d":false,"t":2511,"y":23170},{"x":23170,"d":false,"t":2512,"y":23170},{"x":23170,"d":false,"t":2513,"y":23170},{"x":23170,"d":false,"t":2514,"y":23170},{"x":23170,"d":false,"t":2515,"y":23170},{"x":23170,"d":false,"t":2516,"y":23170},{"x":23170,"d":false,"t":2517,"y":23170},{"x":23170,"d":false,"t":2518,"y":23170},{"x":23170,"d":false,"t":2519,"y":23170},{"x":23170,"d":false,"t":2520,"y":23170},{"x":23170,"d":false,"t":2521,"y":23170},{"x":23170,"d":false,"t":2522,"y":23170},{"x":23170,"d":false,"t":2523,"y":23170},{"x":23170,"d":false,"t":2524,"y":23170},{"x":-32704,"y":2030,"t":2563,"d":false},{"x":-32673,"y":2479,"t":2564,"d":false},{"x":-32643,"y":2853,"t":2565,"d":false},{"x":-32597,"y":3329,"t":2566,"d":false},{"x":29308,"y":14654,"t":2567,"d":false},{"x":-32589,"y":3412,"t":2568,"d":false},{"x":29308,"y":-14654,"t":2569,"d":false},{"x":-32584,"y":3461,"t":2570,"d":false},{"x":32767,"y":0,"t":2571,"d":false},{"x":-32590,"y":3405,"t":2572,"d":false},{"x":31086,"y":-10362,"t":2573,"d":false},{"x":-32586,"y":3443,"t":2574,"d":false},{"x":32767,"y":0,"t":2575,"d":false},{"x":-32590,"y":3397,"t":2576,"d":false},{"x":32767,"y":0,"t":2577,"d":false},{"x":-32583,"y":3464,"t":2578,"d":false},{"x":31086,"y":-10362,"t":2579,"d":false},{"x":-32591,"y":3389,"t":2580,"d":false},{"x":32767,"y":0,"t":2581,"d":false},{"x":-32584,"y":3458,"t":2582,"d":false},{"x":32767,"y":0,"t":2583,"d":false},{"x":-32591,"y":3395,"t":2584,"d":false},{"x":31086,"y":-10362,"t":2585,"d":false},{"x":-32585,"y":3452,"t":2586,"d":false},{"x":32767,"y":0,"t":2587,"d":false},{"x":-32590,"y":3401,"t":2588,"d":false},{"x":32767,"y":0,"t":2589,"d":false},{"x":-32584,"y":3460,"t":2590,"d":false},{"x":31086,"y":-10362,"t":2591,"d":false},{"x":-32593,"y":3377,"t":2592,"d":false},{"x":32767,"y":0,"t":2593,"d":false},{"x":-32583,"y":3469,"t":2594,"d":false},{"x":32767,"y":0,"t":2595,"d":false},{"x":-32590,"y":3398,"t":2596,"d":false},{"x":32767,"y":0,"t":2597,"d":false},{"x":-32598,"y":3323,"t":2598,"d":false},{"x":31086,"t":2599,"y":-10362,"d":false},{"x":-32591,"t":2600,"y":3388,"d":false},{"x":32767,"t":2601,"y":0,"d":false},{"x":-32599,"t":2602,"y":3310,"d":false},{"x":32767,"t":2603,"y":0,"d":false},{"x":-32591,"t":2604,"y":3395,"d":false},{"x":31086,"t":2605,"y":-10362,"d":false},{"x":-32581,"t":2606,"y":3485,"d":false},{"x":32767,"t":2607,"y":0,"d":false},{"x":-32573,"t":2608,"y":3560,"d":false},{"x":32767,"t":2609,"y":0,"d":false},{"x":-23170,"t":2610,"y":-23170,"d":false},{"x":-23170,"t":2611,"y":-23170,"d":false},{"x":23170,"t":2612,"y":23170,"d":false},{"x":-23170,"t":2613,"y":-23170,"d":false},{"x":23170,"t":2614,"y":23170,"d":false},{"x":-23170,"t":2615,"y":-23170,"d":false},{"x":23170,"t":2616,"y":23170,"d":false},{"x":-23170,"t":2617,"y":-23170,"d":false},{"x":23170,"t":2618,"y":23170,"d":false},{"x":-23170,"t":2619,"y":-23170,"d":false},{"x":23170,"t":2620,"y":23170,"d":false},{"x":-23170,"t":2621,"y":-23170,"d":false},{"x":23170,"t":2622,"y":23170,"d":false},{"x":-23170,"t":2623,"y":-23170,"d":false},{"x":5967,"t":2624,"y":-32219,"d":false},{"x":-23170,"t":2625,"y":-23170,"d":false},{"x":10825,"t":2626,"y":-30927,"d":false},{"x":11505,"t":2627,"y":-30681,"d":false},{"x":-23170,"t":2628,"y":-23170,"d":false},{"x":-23170,"t":2629,"y":-23170,"d":false},{"x":13065,"t":2630,"y":-30050,"d":false},{"x":14027,"t":2631,"y":-29613,"d":false},{"x":-23170,"t":2632,"y":-23170,"d":false},{"x":-23170,"t":2633,"y":-23170,"d":false},{"x":25972,"t":2634,"y":-19978,"d":false},{"y":-23170,"x":-23170,"d":false,"t":2635},{"y":-23170,"x":-23170,"d":false,"t":2636},{"y":-4331,"x":32480,"d":false,"t":2637},{"y":-23170,"x":-23170,"d":false,"t":2638},{"y":-23170,"x":-23170,"d":false,"t":2639},{"y":-32746,"x":1170,"d":false,"t":2640},{"y":-23170,"x":-23170,"d":false,"t":2641},{"y":-23170,"x":-23170,"d":false,"t":2642},{"y":-31086,"x":10362,"d":false,"t":2643},{"y":-23170,"x":-23170,"d":false,"t":2644},{"y":-26500,"x":19273,"d":false,"t":2645},{"y":-23170,"x":-23170,"d":false,"t":2646},{"y":-23170,"x":-23170,"d":false,"t":2647},{"y":-23170,"x":-23170,"d":false,"t":2648},{"y":0,"x":32767,"d":false,"t":2649},{"y":-23170,"x":-23170,"d":false,"t":2650},{"y":7368,"x":31928,"d":false,"t":2651},{"y":7108,"x":31987,"d":false,"t":2652},{"y":6426,"x":32131,"d":false,"t":2653},{"y":23170,"x":23170,"d":false,"t":2654},{"y":-23170,"x":-23170,"d":false,"t":2655},{"y":23170,"x":23170,"d":false,"t":2656},{"y":-23170,"x":-23170,"d":false,"t":2657},{"y":23170,"x":23170,"d":false,"t":2658},{"y":-23170,"x":-23170,"d":false,"t":2659},{"y":23170,"x":23170,"d":false,"t":2660},{"y":-23170,"x":-23170,"d":false,"t":2661},{"y":23170,"x":23170,"d":false,"t":2662},{"y":-23170,"x":-23170,"d":false,"t":2663},{"y":23170,"x":23170,"d":false,"t":2664},{"y":-23170,"x":-23170,"d":false,"t":2665},{"y":23170,"x":23170,"d":false,"t":2666},{"y":-23170,"x":-23170,"d":false,"t":2667},{"y":23170,"x":23170,"d":false,"t":2668},{"y":-23170,"x":-23170,"d":false,"t":2669},{"y":23170,"x":23170,"d":false,"t":2670},{"d":false,"t":2671,"y":-23170,"x":-23170},{"d":false,"t":2672,"y":23170,"x":23170},{"d":false,"t":2673,"y":-23170,"x":-23170},{"d":false,"t":2674,"y":23170,"x":23170},{"d":false,"t":2675,"y":4347,"x":-32477},{"d":false,"t":2676,"y":-27264,"x":18176},{"d":false,"t":2677,"y":32767,"x":0},{"d":false,"t":2678,"y":-6039,"x":32206},{"d":false,"t":2679,"y":4227,"x":-32493},{"d":false,"t":2680,"y":-6039,"x":32206},{"d":false,"t":2681,"y":4261,"x":-32489},{"d":false,"t":2682,"y":-6039,"x":32206},{"d":false,"t":2683,"y":4331,"x":-32480},{"d":false,"t":2684,"y":4921,"x":-32395},{"d":false,"t":2685,"y":-4861,"x":32404},{"d":false,"t":2686,"y":4982,"x":-32386},{"d":false,"t":2687,"y":-4861,"x":32404},{"d":false,"t":2688,"y":5067,"x":-32373},{"d":false,"t":2689,"y":-4861,"x":32404},{"d":false,"t":2690,"y":5132,"x":-32363},{"d":false,"t":2691,"y":-4861,"x":32404},{"d":false,"t":2692,"y":5222,"x":-32348},{"d":false,"t":2693,"y":-4861,"x":32404},{"d":false,"t":2694,"y":5291,"x":-32337},{"d":false,"t":2695,"y":-6426,"x":32131},{"d":false,"t":2696,"y":5387,"x":-32321},{"d":false,"t":2697,"y":-4861,"x":32404},{"d":false,"t":2698,"y":5486,"x":-32305},{"d":false,"t":2699,"y":6103,"x":-32194},{"d":false,"t":2700,"y":-5387,"x":32321},{"d":false,"t":2701,"y":6188,"x":-32177},{"d":false,"t":2702,"y":-5387,"x":32321},{"d":false,"t":2703,"y":6188,"x":-32177},{"d":false,"t":2704,"y":-5387,"x":32321},{"d":false,"t":2705,"y":6188,"x":-32177},{"d":false,"t":2706,"y":-6683,"x":32078},{"d":false,"t":2707,"x":-32177,"y":6188},{"d":false,"t":2708,"x":32321,"y":-5387},{"d":false,"t":2709,"x":-32177,"y":6188},{"d":false,"t":2710,"x":32078,"y":-6683},{"d":false,"t":2711,"x":-32177,"y":6188},{"d":false,"t":2712,"x":32321,"y":-5387},{"d":false,"t":2713,"x":-32177,"y":6188},{"d":false,"t":2714,"x":32078,"y":-6683},{"d":false,"t":2715,"x":-32177,"y":6188},{"d":false,"t":2716,"x":32078,"y":-6683},{"d":false,"t":2717,"x":-32177,"y":6188},{"d":false,"t":2718,"x":32321,"y":-5387},{"d":false,"t":2719,"x":-32177,"y":6188},{"d":false,"t":2720,"x":32078,"y":-6683},{"d":false,"t":2721,"x":-32177,"y":6188},{"d":false,"t":2722,"x":32321,"y":-5387},{"d":false,"t":2723,"x":-32177,"y":6188},{"d":false,"t":2724,"x":32078,"y":-6683},{"d":false,"t":2725,"x":-32177,"y":6188},{"d":false,"t":2726,"x":32078,"y":-6683},{"d":false,"t":2727,"x":-32177,"y":6188},{"d":false,"t":2728,"x":32321,"y":-5387},{"d":false,"t":2729,"x":-32177,"y":6188},{"d":false,"t":2730,"x":32078,"y":-6683},{"d":false,"t":2731,"x":-32149,"y":6335},{"d":false,"t":2732,"x":32078,"y":-6683},{"d":false,"t":2733,"x":-32085,"y":6650},{"d":false,"t":2734,"x":-31896,"y":7505},{"d":false,"t":2735,"x":32257,"y":-5760},{"d":false,"t":2736,"x":-31799,"y":7905},{"d":false,"t":2737,"x":-23170,"y":-23170},{"d":false,"t":2738,"x":-23170,"y":-23170},{"d":false,"t":2739,"x":-23170,"y":-23170},{"d":false,"t":2740,"x":-23170,"y":-23170},{"d":false,"t":2741,"x":-23170,"y":-23170},{"d":false,"t":2742,"x":-23170,"y":-23170},{"y":-23170,"x":-23170,"d":false,"t":2743},{"y":-23170,"x":-23170,"d":false,"t":2744},{"y":-23170,"x":-23170,"d":false,"t":2745},{"y":-23170,"x":-23170,"d":false,"t":2746},{"y":-23170,"x":-23170,"d":false,"t":2747},{"y":-23170,"x":-23170,"d":false,"t":2748},{"y":-23170,"x":-23170,"d":false,"t":2749},{"y":-23170,"x":-23170,"d":false,"t":2750},{"y":-23170,"x":-23170,"d":false,"t":2751},{"y":-23170,"x":-23170,"d":false,"t":2752},{"y":-23170,"x":-23170,"d":false,"t":2753},{"y":-23170,"x":-23170,"d":false,"t":2754},{"y":-23170,"x":-23170,"d":false,"t":2755},{"y":-23170,"x":-23170,"d":false,"t":2756},{"y":-23170,"x":-23170,"d":false,"t":2757},{"y":18960,"x":-26724,"d":false,"t":2758},{"y":19573,"x":-26279,"d":false,"t":2759},{"y":20204,"x":-25797,"d":false,"t":2760},{"y":20710,"x":-25392,"d":false,"t":2761},{"y":21295,"x":-24904,"d":false,"t":2762},{"y":21870,"x":-24400,"d":false,"t":2763},{"y":22345,"x":-23966,"d":false,"t":2764},{"y":22898,"x":-23439,"d":false,"t":2765},{"y":23439,"x":-22898,"d":false,"t":2766},{"y":23882,"x":-22435,"d":false,"t":2767},{"y":24400,"x":-21870,"d":false,"t":2768},{"y":24904,"x":-21295,"d":false,"t":2769},{"y":25320,"x":-20799,"d":false,"t":2770},{"y":25797,"x":-20204,"d":false,"t":2771},{"y":26192,"x":-19689,"d":false,"t":2772},{"y":26639,"x":-19079,"d":false,"t":2773},{"y":27012,"x":-18548,"d":false,"t":2774},{"y":27457,"x":-17883,"d":false,"t":2775},{"y":27857,"x":-17253,"d":false,"t":2776},{"y":28192,"x":-16700,"d":false,"t":2777},{"y":28592,"x":-16005,"d":false,"t":2778},{"x":-15438,"y":28902,"d":false,"t":2779},{"x":-14726,"y":29272,"d":false,"t":2780},{"x":-14220,"y":29521,"d":false,"t":2781},{"x":-13491,"y":29861,"d":false,"t":2782},{"x":-12756,"y":30182,"d":false,"t":2783},{"x":-12231,"y":30399,"d":false,"t":2784},{"x":-11486,"y":30688,"d":false,"t":2785},{"x":-23170,"y":-23170,"d":false,"t":2786},{"x":-23170,"y":-23170,"d":false,"t":2787},{"x":-23170,"y":-23170,"d":false,"t":2788},{"x":-23170,"y":-23170,"d":false,"t":2789},{"x":-23170,"y":-23170,"d":false,"t":2790},{"x":-23170,"y":-23170,"d":false,"t":2791},{"x":-23170,"y":-23170,"d":false,"t":2792},{"x":-23170,"y":-23170,"d":false,"t":2793},{"x":-23170,"y":-23170,"d":false,"t":2794},{"x":-23170,"y":-23170,"d":false,"t":2795},{"x":-23170,"y":-23170,"d":false,"t":2796},{"x":-23170,"y":-23170,"d":false,"t":2797},{"x":-23170,"y":-23170,"d":false,"t":2798},{"x":-23170,"y":-23170,"d":false,"t":2799},{"x":-23170,"y":-23170,"d":false,"t":2800},{"x":-23170,"y":-23170,"d":false,"t":2801},{"x":-23170,"y":-23170,"d":false,"t":2802},{"x":-23170,"y":-23170,"d":false,"t":2803},{"x":-23170,"y":-23170,"d":false,"t":2804},{"x":-23170,"y":-23170,"d":false,"t":2805},{"x":-23170,"y":-23170,"d":false,"t":2806},{"x":-23170,"y":-23170,"d":false,"t":2807},{"x":-23170,"y":-23170,"d":false,"t":2808},{"x":-23170,"y":-23170,"d":false,"t":2809},{"x":-23170,"y":-23170,"d":false,"t":2810},{"x":-23170,"y":-23170,"d":false,"t":2811},{"x":-23170,"y":-23170,"d":false,"t":2812},{"x":-23170,"y":-23170,"d":false,"t":2813},{"x":-23170,"y":-23170,"d":false,"t":2814},{"d":false,"y":-23170,"x":-23170,"t":2815},{"d":false,"y":-23170,"x":-23170,"t":2816},{"d":false,"y":26343,"x":-19487,"t":2817},{"d":false,"y":26724,"x":-18960,"t":2818},{"d":false,"y":27236,"x":-18217,"t":2819},{"d":false,"y":27592,"x":-17673,"t":2820},{"d":false,"y":27937,"x":-17123,"t":2821},{"d":false,"y":28349,"x":-16432,"t":2822},{"d":false,"y":28669,"x":-15867,"t":2823},{"d":false,"y":29051,"x":-15157,"t":2824},{"d":false,"y":29344,"x":-14582,"t":2825},{"d":false,"y":29693,"x":-13857,"t":2826},{"d":false,"y":29928,"x":-13341,"t":2827},{"d":false,"y":30246,"x":-12603,"t":2828},{"d":false,"y":30546,"x":-11859,"t":2829},{"d":false,"y":30747,"x":-11328,"t":2830},{"d":false,"y":30994,"x":-10632,"t":2831},{"d":false,"y":31243,"x":-9876,"t":2832},{"d":false,"y":31458,"x":-9168,"t":2833},{"d":false,"y":-13134,"x":30020,"t":2834},{"d":false,"y":-5760,"x":32257,"t":2835},{"d":false,"y":-5387,"x":32321,"t":2836},{"d":false,"y":-6426,"x":32131,"t":2837},{"d":false,"y":-5694,"x":32268,"t":2838},{"d":false,"y":-2254,"x":32689,"t":2839},{"d":false,"y":-2613,"x":32663,"t":2840},{"d":false,"y":-3107,"x":32619,"t":2841},{"d":false,"y":-1924,"x":32710,"t":2842},{"d":false,"y":-1129,"x":32748,"t":2843},{"d":false,"y":-1310,"x":32741,"t":2844},{"d":false,"y":-1559,"x":32730,"t":2845},{"d":false,"y":0,"x":32767,"t":2846},{"d":false,"y":0,"x":32767,"t":2847},{"d":false,"y":0,"x":32767,"t":2848},{"d":false,"y":0,"x":32767,"t":2849},{"d":false,"y":0,"x":32767,"t":2850},{"t":2851,"x":32767,"y":0,"d":false},{"t":2852,"x":32767,"y":0,"d":false},{"t":2853,"x":32767,"y":0,"d":false},{"t":2854,"x":32767,"y":0,"d":false},{"t":2855,"x":28690,"y":-15829,"d":false},{"t":2856,"x":28097,"y":-16858,"d":false},{"t":2857,"x":28210,"y":-16670,"d":false},{"t":2858,"x":28644,"y":-15913,"d":false},{"t":2859,"x":28097,"y":-16858,"d":false},{"t":2860,"x":25402,"y":-20698,"d":false},{"t":2861,"x":25172,"y":-20977,"d":false},{"t":2862,"x":25468,"y":-20617,"d":false},{"t":2863,"x":25172,"y":-20977,"d":false},{"t":2864,"x":25587,"y":-20469,"d":false},{"t":2865,"x":24011,"y":-22296,"d":false},{"t":2866,"x":24114,"y":-22185,"d":false},{"t":2867,"x":24246,"y":-22041,"d":false},{"t":2868,"x":23787,"y":-22535,"d":false},{"t":2869,"x":23905,"y":-22411,"d":false},{"t":2870,"x":24077,"y":-22225,"d":false},{"t":2871,"x":23620,"y":-22711,"d":false},{"t":2872,"x":23170,"y":-23170,"d":false},{"t":2873,"x":23728,"y":-22598,"d":false},{"t":2874,"x":23822,"y":-22499,"d":false},{"t":2875,"x":23954,"y":-22358,"d":false},{"t":2876,"x":23170,"y":-23170,"d":false},{"t":2877,"x":23170,"y":-23170,"d":false},{"t":2878,"x":23170,"y":-23170,"d":false},{"t":2879,"x":23170,"y":-23170,"d":false},{"t":2880,"x":23861,"y":-22457,"d":false},{"t":2881,"x":23170,"y":-23170,"d":false},{"t":2882,"x":23170,"y":-23170,"d":false},{"t":2883,"x":23170,"y":-23170,"d":false},{"t":2884,"x":23170,"y":-23170,"d":false},{"t":2885,"x":23170,"y":-23170,"d":false},{"t":2886,"x":23170,"y":-23170,"d":false},{"t":2887,"x":23170,"y":-23170,"d":false},{"t":2888,"x":23170,"y":-23170,"d":false},{"t":2889,"x":23170,"y":-23170,"d":false},{"t":2890,"x":23170,"y":-23170,"d":false},{"t":2891,"x":23170,"y":-23170,"d":false},{"t":2892,"x":23954,"y":-22358,"d":false},{"t":2893,"x":23170,"y":-23170,"d":false},{"t":2894,"x":31553,"y":8835,"d":false},{"t":2895,"x":31506,"y":9002,"d":false},{"t":2896,"x":31436,"y":9246,"d":false},{"t":2897,"x":31318,"y":9636,"d":false},{"t":2898,"x":31086,"y":10362,"d":false},{"t":2899,"x":32321,"y":5387,"d":false},{"t":2900,"x":-31770,"y":8020,"d":false},{"t":2901,"x":-31657,"y":8456,"d":false},{"t":2902,"x":32567,"y":-3619,"d":false},{"t":2903,"x":-31681,"y":8365,"d":false},{"t":2904,"x":31987,"y":-7108,"d":false},{"t":2905,"x":32131,"y":-6426,"d":false},{"t":2906,"x":-31795,"y":7922,"d":false},{"t":2907,"x":-31680,"y":8370,"d":false},{"t":2908,"x":31987,"y":-7108,"d":false},{"t":2909,"x":-31685,"y":8350,"d":false},{"t":2910,"x":23170,"y":-23170,"d":false},{"t":2911,"x":-31652,"y":8476,"d":false},{"t":2912,"x":-23170,"y":23170,"d":false},{"t":2913,"x":23170,"y":-23170,"d":false},{"t":2914,"x":-23170,"y":23170,"d":false},{"t":2915,"x":23170,"y":-23170,"d":false},{"t":2916,"x":32604,"y":-3260,"d":false},{"t":2917,"x":23170,"y":-23170,"d":false},{"t":2918,"x":-23170,"y":23170,"d":false},{"t":2919,"x":23170,"y":-23170,"d":false},{"t":2920,"x":-23170,"y":23170,"d":false},{"t":2921,"x":23170,"y":-23170,"d":false},{"t":2922,"x":-23170,"y":23170,"d":false},{"x":23170,"d":false,"t":2923,"y":-23170},{"x":-23170,"d":false,"t":2924,"y":23170},{"x":23170,"d":false,"t":2925,"y":-23170},{"x":23170,"d":false,"t":2926,"y":-23170},{"x":-23170,"d":false,"t":2927,"y":23170},{"x":23170,"d":false,"t":2928,"y":-23170},{"x":-23170,"d":false,"t":2929,"y":23170},{"x":23170,"d":false,"t":2930,"y":-23170},{"x":-23170,"d":false,"t":2931,"y":23170},{"x":23170,"d":false,"t":2932,"y":-23170},{"x":-23170,"d":false,"t":2933,"y":23170},{"x":23170,"d":false,"t":2934,"y":-23170},{"x":-23170,"d":false,"t":2935,"y":23170},{"x":23170,"d":false,"t":2936,"y":-23170},{"x":-23170,"d":false,"t":2937,"y":23170},{"x":23170,"d":false,"t":2938,"y":-23170},{"x":-23170,"d":false,"t":2939,"y":23170},{"x":23170,"d":false,"t":2940,"y":-23170},{"x":23170,"d":false,"t":2941,"y":-23170},{"x":23170,"d":false,"t":2942,"y":-23170},{"x":23170,"d":false,"t":2943,"y":-23170},{"x":23170,"d":false,"t":2944,"y":-23170},{"x":23170,"d":false,"t":2945,"y":-23170},{"x":23170,"d":false,"t":2946,"y":-23170},{"x":23170,"d":false,"t":2947,"y":-23170},{"x":23170,"d":false,"t":2948,"y":-23170},{"x":-31869,"d":false,"t":2949,"y":7619},{"x":23170,"d":true,"t":2950,"y":-23170},{"x":-31956,"d":false,"t":2951,"y":7243},{"x":23170,"d":true,"t":2952,"y":-23170},{"x":-31915,"d":false,"t":2953,"y":7422},{"x":23170,"d":true,"t":2954,"y":-23170},{"x":-31903,"d":false,"t":2955,"y":7476},{"x":23170,"d":true,"t":2956,"y":-23170},{"x":23170,"d":true,"t":2957,"y":-23170},{"x":-32023,"d":false,"t":2958,"y":6943},{"t":2959,"x":-31819,"d":false,"y":7824},{"t":2960,"x":-31595,"d":false,"y":8684},{"t":2961,"x":-31405,"d":false,"y":9348},{"t":2962,"x":-31138,"d":false,"y":10204},{"t":2963,"x":-31022,"d":false,"y":10552},{"t":2964,"x":-30889,"d":false,"y":10933},{"t":2965,"x":-30728,"d":false,"y":11377},{"t":2966,"x":-30583,"d":false,"y":11763},{"t":2967,"x":-30394,"d":false,"y":12243},{"t":2968,"x":-30288,"d":false,"y":12503},{"t":2969,"x":-30084,"d":false,"y":12986},{"t":2970,"x":-29929,"d":false,"y":13338},{"t":2971,"x":-29751,"d":false,"y":13731},{"t":2972,"x":-29566,"d":false,"y":14126},{"t":2973,"x":-29308,"d":false,"y":14654},{"t":2974,"x":-29086,"d":false,"y":15090},{"t":2975,"x":-28741,"d":false,"y":15736},{"t":2976,"x":-28503,"d":false,"y":16163},{"t":2977,"x":-28184,"d":false,"y":16714},{"t":2978,"x":-27903,"d":false,"y":17179},{"t":2979,"x":-27595,"d":false,"y":17669},{"t":2980,"x":-27297,"d":false,"y":18125},{"t":2981,"x":-26992,"d":false,"y":18577},{"t":2982,"x":-26627,"d":false,"y":19097},{"t":2983,"x":-26305,"d":false,"y":19538},{"t":2984,"x":-25976,"d":false,"y":19973},{"t":2985,"x":-25704,"d":false,"y":20322},{"t":2986,"x":-25404,"d":false,"y":20696},{"t":2987,"x":-24956,"d":false,"y":21234},{"t":2988,"x":-24599,"d":false,"y":21647},{"t":2989,"x":-24241,"d":false,"y":22047},{"t":2990,"x":-23819,"d":false,"y":22502},{"t":2991,"x":-23550,"d":false,"y":22783},{"t":2992,"x":-23115,"d":false,"y":23224},{"t":2993,"x":-22672,"d":false,"y":23657},{"t":2994,"x":-22221,"d":false,"y":24082},{"y":24448,"t":2995,"x":-21817,"d":false},{"y":24809,"t":2996,"x":-21406,"d":false},{"y":25208,"t":2997,"x":-20934,"d":false},{"y":25555,"t":2998,"x":-20509,"d":false},{"y":25935,"t":2999,"x":-20026,"d":false},{"y":26227,"t":3000,"x":-19643,"d":false},{"y":26589,"t":3001,"x":-19149,"d":false},{"y":26957,"t":3002,"x":-18629,"d":false},{"y":27179,"t":3003,"x":-18302,"d":false},{"y":27563,"t":3004,"x":-17719,"d":false},{"y":27903,"t":3005,"x":-17179,"d":false},{"y":28155,"t":3006,"x":-16762,"d":false},{"y":28477,"t":3007,"x":-16210,"d":false},{"y":28716,"t":3008,"x":-15783,"d":false},{"y":29017,"t":3009,"x":-15220,"d":false},{"y":29264,"t":3010,"x":-14741,"d":false},{"y":29523,"t":3011,"x":-14215,"d":false},{"y":29732,"t":3012,"x":-13773,"d":false},{"y":29974,"t":3013,"x":-13237,"d":false},{"y":30224,"t":3014,"x":-12657,"d":false},{"y":30393,"t":3015,"x":-12245,"d":false},{"y":30608,"t":3016,"x":-11697,"d":false},{"y":30813,"t":3017,"x":-11145,"d":false},{"y":30997,"t":3018,"x":-10624,"d":false},{"y":31150,"t":3019,"x":-10165,"d":false},{"y":31287,"t":3020,"x":-9736,"d":false},{"y":31418,"t":3021,"x":-9305,"d":false},{"y":31543,"t":3022,"x":-8872,"d":false},{"y":31662,"t":3023,"x":-8436,"d":false},{"y":31750,"t":3024,"x":-8102,"d":false},{"y":31858,"t":3025,"x":-7663,"d":false},{"y":31961,"t":3026,"x":-7224,"d":false},{"y":32057,"t":3027,"x":-6783,"d":false},{"y":32147,"t":3028,"x":-6342,"d":false},{"y":32231,"t":3029,"x":-5900,"d":false},{"y":32309,"t":3030,"x":-5458,"d":false},{"x":-5032,"y":32378,"d":false,"t":3031},{"x":-4588,"y":32444,"d":false,"t":3032},{"x":-4159,"y":32502,"d":false,"t":3033},{"x":-3714,"y":32556,"d":false,"t":3034},{"x":-3282,"y":32602,"d":false,"t":3035},{"x":-2839,"y":32644,"d":false,"t":3036},{"x":-2404,"y":32679,"d":false,"t":3037},{"x":-1969,"y":32708,"d":false,"t":3038},{"x":-1527,"y":32731,"d":false,"t":3039},{"x":-1092,"y":32749,"d":false,"t":3040},{"x":-655,"y":32760,"d":false,"t":3041},{"x":-218,"y":32766,"d":false,"t":3042},{"x":218,"y":32766,"d":false,"t":3043},{"x":11505,"y":-30681,"d":false,"t":3044},{"x":219,"y":32766,"d":false,"t":3045},{"x":9774,"y":-31275,"d":false,"t":3046},{"x":221,"y":32766,"d":false,"t":3047},{"x":6039,"y":-32206,"d":false,"t":3048},{"x":221,"y":32766,"d":false,"t":3049},{"x":6039,"y":-32206,"d":false,"t":3050},{"x":443,"y":32764,"d":false,"t":3051},{"x":4064,"y":-32514,"d":false,"t":3052},{"x":666,"y":32760,"d":false,"t":3053},{"x":2044,"y":-32703,"d":false,"t":3054},{"x":999,"y":32752,"d":false,"t":3055},{"x":2044,"y":-32703,"d":false,"t":3056},{"x":1221,"y":32744,"d":false,"t":3057},{"x":0,"y":32767,"d":false,"t":3058},{"x":0,"y":32767,"d":false,"t":3059},{"x":0,"y":32767,"d":false,"t":3060},{"x":0,"y":32767,"d":false,"t":3061},{"x":0,"y":32767,"d":false,"t":3062},{"x":0,"y":32767,"d":false,"t":3063},{"x":0,"y":32767,"d":false,"t":3064},{"x":0,"y":32767,"d":false,"t":3065},{"x":0,"y":-32767,"d":false,"t":3066},{"d":false,"t":3067,"x":0,"y":32767},{"d":false,"t":3068,"x":0,"y":-32767},{"d":false,"t":3069,"x":0,"y":32767},{"d":false,"t":3070,"x":0,"y":-32767},{"d":false,"t":3071,"x":0,"y":32767},{"d":false,"t":3072,"x":0,"y":-32767},{"d":false,"t":3073,"x":0,"y":32767},{"d":false,"t":3074,"x":0,"y":-32767},{"d":false,"t":3075,"x":0,"y":32767},{"d":false,"t":3076,"x":0,"y":-32767},{"d":false,"t":3077,"x":0,"y":32767},{"d":false,"t":3078,"x":0,"y":-32767},{"d":false,"t":3079,"x":0,"y":32767},{"d":false,"t":3080,"x":0,"y":32767},{"d":false,"t":3081,"x":0,"y":-32767},{"d":false,"t":3082,"x":0,"y":-32767},{"d":false,"t":3083,"x":0,"y":32767},{"d":false,"t":3084,"x":0,"y":-32767},{"d":false,"t":3085,"x":0,"y":32767},{"d":false,"t":3086,"x":0,"y":-32767},{"d":false,"t":3087,"x":0,"y":32767},{"d":false,"t":3088,"x":0,"y":-32767},{"d":false,"t":3089,"x":0,"y":32767},{"d":false,"t":3090,"x":0,"y":-32767},{"d":true,"t":3091,"x":0,"y":32767},{"d":false,"t":3092,"x":0,"y":-32767},{"d":true,"t":3093,"x":0,"y":32767},{"d":false,"t":3094,"x":0,"y":-32767},{"d":true,"t":3095,"x":0,"y":32767},{"d":false,"t":3096,"x":0,"y":-32767},{"d":true,"t":3097,"x":0,"y":32767},{"d":false,"t":3098,"x":0,"y":-32767},{"d":false,"t":3099,"x":0,"y":-32767},{"d":false,"t":3100,"x":0,"y":-32767},{"d":false,"t":3101,"x":0,"y":-32767},{"d":false,"t":3102,"x":7921,"y":31795},{"t":3103,"y":-32746,"d":false,"x":-1170},{"t":3104,"y":-32739,"d":false,"x":-1364},{"t":3105,"y":31672,"d":false,"x":8400},{"t":3106,"y":-32654,"d":false,"x":-2721},{"t":3107,"y":31599,"d":false,"x":8670},{"t":3108,"y":-30681,"d":false,"x":-11505},{"t":3109,"y":31540,"d":false,"x":8881},{"t":3110,"y":-30681,"d":false,"x":-11505},{"t":3111,"y":31450,"d":false,"x":9197},{"t":3112,"y":-31789,"d":false,"x":-7947},{"t":3113,"y":31379,"d":false,"x":9436},{"t":3114,"y":-30681,"d":false,"x":-11505},{"t":3115,"y":31316,"d":false,"x":9644},{"t":3116,"y":-31789,"d":false,"x":-7947},{"t":3117,"y":31241,"d":false,"x":9883},{"t":3118,"y":-30681,"d":false,"x":-11505},{"t":3119,"y":31131,"d":false,"x":10225},{"t":3120,"y":-31789,"d":false,"x":-7947},{"t":3121,"y":31051,"d":false,"x":10464},{"t":3122,"y":-30681,"d":false,"x":-11505},{"t":3123,"y":30982,"d":false,"x":10668},{"t":3124,"y":-30681,"d":false,"x":-11505},{"t":3125,"y":30899,"d":false,"x":10906},{"t":3126,"y":30653,"d":false,"x":11580},{"t":3127,"y":-31086,"d":false,"x":-10362},{"t":3128,"y":30562,"d":false,"x":11816},{"t":3129,"y":-31086,"d":false,"x":-10362},{"t":3130,"y":30470,"d":false,"x":12052},{"t":3131,"y":-31086,"d":false,"x":-10362},{"t":3132,"y":30376,"d":false,"x":12287},{"t":3133,"y":-29830,"d":false,"x":-13559},{"t":3134,"y":30280,"d":false,"x":12522},{"t":3135,"y":-30794,"d":false,"x":-11198},{"t":3136,"y":30141,"d":false,"x":12853},{"t":3137,"y":-29830,"d":false,"x":-13559},{"t":3138,"y":30041,"d":false,"x":13086},{"y":-29830,"t":3139,"x":-13559,"d":false},{"y":29938,"t":3140,"x":13319,"d":false},{"y":-29830,"t":3141,"x":-13559,"d":false},{"y":29834,"t":3142,"x":13551,"d":false},{"y":-29830,"t":3143,"x":-13559,"d":false},{"y":29728,"t":3144,"x":13782,"d":false},{"y":-29830,"t":3145,"x":-13559,"d":false},{"y":29576,"t":3146,"x":14105,"d":false},{"y":-29830,"t":3147,"x":-13559,"d":false},{"y":29465,"t":3148,"x":14334,"d":false},{"y":-29830,"t":3149,"x":-13559,"d":false},{"y":29353,"t":3150,"x":14563,"d":false},{"y":-29830,"t":3151,"x":-13559,"d":false},{"y":29239,"t":3152,"x":14790,"d":false},{"y":-28981,"t":3153,"x":-15289,"d":false},{"y":-29123,"t":3154,"x":-15017,"d":false},{"y":-29285,"t":3155,"x":-14699,"d":false},{"y":-29420,"t":3156,"x":-14426,"d":false},{"y":-29554,"t":3157,"x":-14150,"d":false},{"y":-29684,"t":3158,"x":-13875,"d":false},{"y":-29791,"t":3159,"x":-13645,"d":false},{"y":-29938,"t":3160,"x":-13319,"d":false},{"y":-30082,"t":3161,"x":-12990,"d":false},{"y":-30199,"t":3162,"x":-12715,"d":false},{"y":-30320,"t":3163,"x":-12424,"d":false},{"y":-30470,"t":3164,"x":-12052,"d":false},{"y":-30548,"t":3165,"x":-11854,"d":false},{"y":-30690,"t":3166,"x":-11480,"d":false},{"y":-30778,"t":3167,"x":-11243,"d":false},{"y":-30886,"t":3168,"x":-10941,"d":false},{"y":-31017,"t":3169,"x":-10566,"d":false},{"y":-31164,"t":3170,"x":-10123,"d":false},{"y":-31306,"t":3171,"x":-9676,"d":false},{"y":-31441,"t":3172,"x":-9227,"d":false},{"y":-31578,"t":3173,"x":-8746,"d":false},{"y":2421,"t":3174,"x":32677,"d":false},{"t":3175,"x":32644,"y":2839,"d":false},{"t":3176,"x":32587,"y":3430,"d":false},{"t":3177,"x":32750,"y":1056,"d":false},{"t":3178,"x":32745,"y":1213,"d":false},{"t":3179,"x":32736,"y":1423,"d":false},{"t":3180,"x":32722,"y":1722,"d":false},{"t":3181,"x":32750,"y":1056,"d":false},{"t":3182,"x":32745,"y":1213,"d":false},{"t":3183,"x":32767,"y":0,"d":false},{"t":3184,"x":32767,"y":0,"d":false},{"t":3185,"x":32767,"y":0,"d":false},{"t":3186,"x":32767,"y":0,"d":false},{"t":3187,"x":32767,"y":0,"d":false},{"t":3188,"x":32767,"y":0,"d":false},{"t":3189,"x":32767,"y":0,"d":false},{"t":3190,"x":32767,"y":0,"d":false},{"t":3191,"x":32767,"y":0,"d":false},{"t":3192,"x":32767,"y":0,"d":false},{"t":3193,"x":32767,"y":0,"d":false},{"t":3194,"x":32767,"y":0,"d":false},{"t":3195,"x":32767,"y":0,"d":false},{"t":3196,"x":32767,"y":0,"d":false},{"t":3197,"x":32767,"y":0,"d":false},{"t":3198,"x":32767,"y":0,"d":false},{"t":3199,"x":32767,"y":0,"d":false},{"t":3200,"x":32767,"y":0,"d":false},{"t":3201,"x":32767,"y":0,"d":false},{"t":3202,"x":32767,"y":0,"d":false},{"t":3203,"x":32767,"y":0,"d":false},{"t":3204,"x":32767,"y":0,"d":false},{"t":3205,"x":32767,"y":0,"d":false},{"t":3206,"x":32767,"y":0,"d":false},{"t":3207,"x":32767,"y":0,"d":false},{"t":3208,"x":32767,"y":0,"d":false},{"t":3209,"x":32767,"y":0,"d":false},{"t":3210,"x":32767,"y":0,"d":false},{"y":0,"x":32767,"t":3211,"d":false},{"y":0,"x":32767,"t":3212,"d":false},{"y":0,"x":32767,"t":3213,"d":false},{"y":0,"x":32767,"t":3214,"d":false},{"y":0,"x":32767,"t":3215,"d":false},{"y":0,"x":32767,"t":3216,"d":false},{"y":0,"x":32767,"t":3217,"d":false},{"y":0,"x":32767,"t":3218,"d":false},{"y":0,"x":32767,"t":3219,"d":false},{"y":0,"x":32767,"t":3220,"d":false},{"y":0,"x":32767,"t":3221,"d":false},{"y":0,"x":32767,"t":3222,"d":false},{"y":0,"x":32767,"t":3223,"d":false},{"y":0,"x":32767,"t":3224,"d":false},{"y":0,"x":32767,"t":3225,"d":false},{"y":0,"x":32767,"t":3226,"d":false},{"y":0,"x":32767,"t":3227,"d":false},{"y":0,"x":32767,"t":3228,"d":false},{"y":15028,"x":29117,"t":3229,"d":false},{"y":15913,"x":28644,"t":3230,"d":false},{"y":15606,"x":28812,"t":3231,"d":false},{"y":15791,"x":28711,"t":3232,"d":false},{"y":15331,"x":28959,"t":3233,"d":false},{"y":20361,"x":25673,"t":3234,"d":false},{"y":19978,"x":25972,"t":3235,"d":false},{"y":20195,"x":25804,"t":3236,"d":false},{"y":20469,"x":25587,"t":3237,"d":false},{"y":20663,"x":25431,"t":3238,"d":false},{"y":21166,"x":25014,"t":3239,"d":false},{"y":22225,"x":24077,"t":3240,"d":false},{"y":22094,"x":24198,"t":3241,"d":false},{"y":-2247,"x":32690,"t":3249,"d":false},{"y":-1799,"x":32718,"t":3250,"d":false},{"y":-1251,"x":32743,"t":3251,"d":false},{"y":-802,"x":32757,"t":3252,"d":false},{"y":-347,"x":32765,"t":3253,"d":false},{"x":32767,"t":3254,"d":false,"y":117},{"x":32762,"t":3255,"d":false,"y":587},{"x":32750,"t":3256,"d":false,"y":1068},{"x":32736,"t":3257,"d":false,"y":1434},{"x":32710,"t":3258,"d":false,"y":1931},{"x":32677,"t":3259,"d":false,"y":2430},{"x":32634,"t":3260,"d":false,"y":2944},{"x":32583,"t":3261,"d":false,"y":3469},{"x":32553,"t":3262,"d":false,"y":3742},{"x":32484,"t":3263,"d":false,"y":4297},{"x":32409,"t":3264,"d":false,"y":4830},{"x":-32342,"t":3265,"d":false,"y":-5262},{"x":-32414,"t":3266,"d":false,"y":-4797},{"x":-32481,"t":3267,"d":false,"y":-4322},{"x":-32543,"t":3268,"d":false,"y":-3821},{"x":-32596,"t":3269,"d":false,"y":-3340},{"x":-32645,"t":3270,"d":false,"y":-2821},{"x":-32685,"t":3271,"d":false,"y":-2315},{"x":-32718,"t":3272,"d":false,"y":-1787},{"x":-32743,"t":3273,"d":false,"y":-1243},{"x":-32760,"t":3274,"d":false,"y":-700},{"x":-32767,"t":3275,"d":false,"y":-141},{"x":-32764,"t":3276,"d":false,"y":429},{"x":-32751,"t":3277,"d":false,"y":1010},{"x":-32728,"t":3278,"d":false,"y":1600},{"x":-32692,"t":3279,"d":false,"y":2219},{"x":-32644,"t":3280,"d":false,"y":2832},{"x":-32583,"t":3281,"d":false,"y":3469},{"x":-32526,"t":3282,"d":false,"y":3970},{"x":-32441,"t":3283,"d":false,"y":4612},{"x":-32334,"t":3284,"d":false,"y":5311},{"x":-32246,"t":3285,"d":false,"y":5820},{"x":32767,"t":3286,"d":false,"y":0},{"x":-32244,"t":3287,"d":false,"y":5833},{"x":32514,"t":3288,"d":false,"y":-4064},{"x":-32246,"t":3289,"d":false,"y":5818},{"x":32514,"t":3290,"d":false,"y":-4064},{"x":32767,"t":3291,"d":false,"y":0},{"x":-32353,"t":3292,"d":false,"y":5190},{"x":31789,"t":3293,"d":false,"y":-7947},{"x":-32363,"t":3294,"d":false,"y":5129},{"x":31789,"t":3295,"d":false,"y":-7947},{"x":-32369,"t":3296,"d":false,"y":5092},{"x":-23170,"t":3297,"d":false,"y":-23170},{"x":31506,"t":3298,"d":false,"y":9002},{"x":-23170,"t":3299,"d":false,"y":-23170},{"x":14654,"t":3300,"d":false,"y":-29308},{"x":-23170,"t":3301,"d":false,"y":-23170},{"x":26664,"t":3302,"d":false,"y":-19045},{"x":-23170,"t":3303,"d":false,"y":-23170},{"x":-23170,"t":3304,"d":false,"y":-23170},{"x":31086,"t":3305,"d":false,"y":10362},{"x":-23170,"t":3306,"d":false,"y":-23170},{"x":-23170,"t":3307,"d":false,"y":-23170},{"x":27644,"t":3308,"d":false,"y":17592},{"x":-23170,"t":3309,"d":false,"y":-23170},{"x":26500,"t":3310,"d":false,"y":19273},{"x":-23170,"t":3311,"d":false,"y":-23170},{"x":25587,"t":3312,"d":false,"y":20469},{"x":-23170,"t":3313,"d":false,"y":-23170},{"x":25587,"t":3314,"d":false,"y":20469},{"x":-23170,"t":3315,"d":false,"y":-23170},{"x":24356,"t":3316,"d":false,"y":21920},{"x":-23170,"t":3317,"d":false,"y":-23170},{"x":24356,"t":3318,"d":false,"y":21920},{"x":-23170,"t":3319,"d":false,"y":-23170},{"x":-23170,"t":3320,"d":false,"y":-23170},{"x":23170,"t":3321,"d":false,"y":23170},{"x":-23170,"t":3322,"d":false,"y":-23170},{"x":23170,"t":3323,"d":false,"y":23170},{"x":-23170,"t":3324,"d":false,"y":-23170},{"x":23170,"t":3325,"d":false,"y":23170},{"t":3326,"d":false,"x":-23170,"y":-23170},{"t":3327,"d":false,"x":23170,"y":23170},{"t":3328,"d":false,"x":-23170,"y":-23170},{"t":3329,"d":false,"x":-23170,"y":-23170},{"t":3330,"d":false,"x":-1924,"y":-32710},{"t":3331,"d":false,"x":-23170,"y":-23170},{"t":3332,"d":false,"x":2513,"y":-32670},{"t":3333,"d":false,"x":-23170,"y":-23170},{"t":3334,"d":false,"x":7947,"y":-31789},{"t":3335,"d":false,"x":-23170,"y":-23170},{"t":3336,"d":false,"x":7688,"y":-31852},{"t":3337,"d":false,"x":-23170,"y":-23170},{"t":3338,"d":false,"x":-23170,"y":-23170},{"t":3339,"d":false,"x":16417,"y":-28357},{"t":3340,"d":false,"x":16064,"y":-28559},{"t":3341,"d":false,"x":16510,"y":-28303},{"t":3342,"d":false,"x":15913,"y":-28644},{"t":3343,"d":false,"x":16858,"y":-28097},{"t":3344,"d":false,"x":14654,"y":-29308},{"t":3345,"d":false,"x":0,"y":32767},{"t":3346,"d":false,"x":0,"y":-32767},{"t":3347,"d":false,"x":0,"y":32767},{"t":3348,"d":false,"x":0,"y":-32767},{"t":3349,"d":false,"x":0,"y":32767},{"t":3350,"d":false,"x":0,"y":-32767},{"t":3351,"d":false,"x":0,"y":32767},{"t":3352,"d":false,"x":0,"y":-32767},{"t":3353,"d":false,"x":0,"y":32767},{"t":3354,"d":false,"x":0,"y":-32767},{"t":3355,"d":false,"x":0,"y":32767},{"t":3356,"d":false,"x":0,"y":-32767},{"t":3357,"d":false,"x":0,"y":32767},{"t":3358,"d":false,"x":0,"y":-32767},{"t":3359,"d":false,"x":0,"y":32767},{"t":3360,"d":false,"x":0,"y":-32767},{"t":3361,"d":false,"x":0,"y":32767},{"y":-32767,"x":0,"t":3362,"d":false},{"y":32767,"x":0,"t":3363,"d":false},{"y":-32767,"x":0,"t":3364,"d":false},{"y":4064,"x":32514,"t":3365,"d":false},{"y":3697,"x":-32558,"t":3366,"d":false},{"y":2044,"x":32703,"t":3367,"d":false},{"y":3867,"x":-32538,"t":3368,"d":false},{"y":0,"x":32767,"t":3369,"d":false},{"y":3551,"x":-32574,"t":3370,"d":false},{"y":-2180,"x":32694,"t":3371,"d":false},{"y":3591,"x":-32570,"t":3372,"d":false},{"y":-2180,"x":32694,"t":3373,"d":false},{"y":3632,"x":-32565,"t":3374,"d":false},{"y":-2180,"x":32694,"t":3375,"d":false},{"y":3674,"x":-32560,"t":3376,"d":false},{"y":-2180,"x":32694,"t":3377,"d":false},{"y":3717,"x":-32555,"t":3378,"d":false},{"y":-2180,"x":32694,"t":3379,"d":false},{"y":3761,"x":-32550,"t":3380,"d":false},{"y":-4331,"x":32480,"t":3381,"d":false},{"y":3806,"x":-32545,"t":3382,"d":false},{"y":-2180,"x":32694,"t":3383,"d":false},{"y":3836,"x":-32542,"t":3384,"d":false},{"y":-4331,"x":32480,"t":3385,"d":false},{"y":3883,"x":-32536,"t":3386,"d":false},{"y":-4331,"x":32480,"t":3387,"d":false},{"y":3931,"x":-32530,"t":3388,"d":false},{"y":-4331,"x":32480,"t":3389,"d":false},{"y":3980,"x":-32524,"t":3390,"d":false},{"y":-4331,"x":32480,"t":3391,"d":false},{"y":4013,"x":-32520,"t":3392,"d":false},{"y":4595,"x":-32443,"t":3393,"d":false},{"y":-3430,"x":32587,"t":3394,"d":false},{"y":4674,"x":-32432,"t":3395,"d":false},{"y":-3430,"x":32587,"t":3396,"d":false},{"y":4714,"x":-32426,"t":3397,"d":false},{"t":3398,"y":-3430,"x":32587,"d":false},{"t":3399,"y":4776,"x":-32417,"d":false},{"t":3400,"y":-5110,"x":32366,"d":false},{"t":3401,"y":4839,"x":-32408,"d":false},{"t":3402,"y":-3430,"x":32587,"d":false},{"t":3403,"y":4904,"x":-32398,"d":false},{"t":3404,"y":-5110,"x":32366,"d":false},{"t":3405,"y":4949,"x":-32391,"d":false},{"t":3406,"y":-5110,"x":32366,"d":false},{"t":3407,"y":5017,"x":-32381,"d":false},{"t":3408,"y":-5110,"x":32366,"d":false},{"t":3409,"y":5087,"x":-32370,"d":false},{"t":3410,"y":-5110,"x":32366,"d":false},{"t":3411,"y":5159,"x":-32358,"d":false},{"t":3412,"y":5793,"x":-32251,"d":false},{"t":3413,"y":-4238,"x":32492,"d":false},{"t":3414,"y":5793,"x":-32251,"d":false},{"t":3415,"y":-5614,"x":32282,"d":false},{"t":3416,"y":5793,"x":-32251,"d":false},{"t":3417,"y":-5614,"x":32282,"d":false},{"t":3418,"y":5820,"x":-32246,"d":false},{"t":3419,"y":-5614,"x":32282,"d":false},{"t":3420,"y":5848,"x":-32241,"d":false},{"t":3421,"y":-5614,"x":32282,"d":false},{"t":3422,"y":5848,"x":-32241,"d":false},{"t":3423,"y":-5614,"x":32282,"d":false},{"t":3424,"y":5876,"x":-32236,"d":false},{"t":3425,"y":-5614,"x":32282,"d":false},{"t":3426,"y":5904,"x":-32231,"d":false},{"t":3427,"y":-16257,"x":28450,"d":false},{"t":3428,"y":6058,"x":-32202,"d":false},{"t":3429,"y":-7947,"x":31789,"d":false},{"t":3430,"y":6029,"x":-32208,"d":false},{"t":3431,"y":-7947,"x":31789,"d":false},{"t":3432,"y":6058,"x":-32202,"d":false},{"t":3433,"y":-7947,"x":31789,"d":false},{"t":3434,"y":6087,"x":-32197,"d":false},{"t":3435,"y":-7947,"x":31789,"d":false},{"t":3436,"y":6087,"x":-32197,"d":false},{"t":3437,"y":-7947,"x":31789,"d":false},{"t":3438,"y":6116,"x":-32191,"d":false},{"t":3439,"y":-4064,"x":32514,"d":false},{"t":3440,"y":6146,"x":-32185,"d":false},{"t":3441,"y":-7947,"x":31789,"d":false},{"t":3442,"y":6146,"x":-32185,"d":false},{"t":3443,"y":-4064,"x":32514,"d":false},{"t":3444,"y":6176,"x":-32180,"d":false},{"t":3445,"y":-7947,"x":31789,"d":false},{"t":3446,"y":6206,"x":-32174,"d":false},{"t":3447,"y":-4064,"x":32514,"d":false},{"t":3448,"y":6206,"x":-32174,"d":false},{"t":3449,"y":-7947,"x":31789,"d":false},{"t":3450,"y":6237,"x":-32168,"d":false},{"t":3451,"y":-4064,"x":32514,"d":false},{"t":3452,"y":6267,"x":-32162,"d":false},{"t":3453,"y":-7947,"x":31789,"d":false},{"t":3454,"y":6299,"x":-32156,"d":false},{"t":3455,"y":-7947,"x":31789,"d":false},{"t":3456,"y":6299,"x":-32156,"d":false},{"t":3457,"y":-4064,"x":32514,"d":false},{"t":3458,"y":6330,"x":-32150,"d":false},{"t":3459,"y":-7947,"x":31789,"d":false},{"t":3460,"y":6362,"x":-32144,"d":false},{"t":3461,"y":-4064,"x":32514,"d":false},{"t":3462,"y":6394,"x":-32137,"d":false},{"t":3463,"y":-7947,"x":31789,"d":false},{"t":3464,"y":6394,"x":-32137,"d":false},{"t":3465,"y":-7947,"x":31789,"d":false},{"t":3466,"y":6394,"x":-32137,"d":false},{"t":3467,"y":-4064,"x":32514,"d":false},{"t":3468,"y":6394,"x":-32137,"d":false},{"t":3469,"y":-7947,"x":31789,"d":false},{"t":3470,"x":-32137,"y":6394,"d":false},{"t":3471,"x":23170,"y":23170,"d":false},{"t":3472,"x":23170,"y":23170,"d":false},{"t":3473,"x":23170,"y":23170,"d":false},{"t":3474,"x":23170,"y":23170,"d":false},{"t":3475,"x":23170,"y":23170,"d":false},{"t":3476,"x":23170,"y":23170,"d":false},{"t":3477,"x":23170,"y":23170,"d":false},{"t":3478,"x":23170,"y":23170,"d":false},{"t":3479,"x":23170,"y":23170,"d":false},{"t":3480,"x":23170,"y":23170,"d":false},{"t":3481,"x":23170,"y":23170,"d":false},{"t":3482,"x":23170,"y":23170,"d":false},{"t":3483,"x":23170,"y":23170,"d":false},{"t":3484,"x":23170,"y":23170,"d":false},{"t":3485,"x":23170,"y":23170,"d":false},{"t":3486,"x":23170,"y":23170,"d":false},{"t":3487,"x":23170,"y":23170,"d":false},{"t":3488,"x":23170,"y":23170,"d":false},{"t":3489,"x":23170,"y":-23170,"d":false},{"t":3490,"x":23170,"y":-23170,"d":false},{"t":3491,"x":23170,"y":-23170,"d":false},{"t":3492,"x":23170,"y":-23170,"d":false},{"t":3493,"x":23170,"y":-23170,"d":false},{"t":3494,"x":23170,"y":-23170,"d":false},{"t":3495,"x":23170,"y":23170,"d":false},{"t":3496,"x":23170,"y":23170,"d":false},{"t":3497,"x":23170,"y":23170,"d":false},{"t":3498,"x":23170,"y":23170,"d":false},{"t":3499,"x":23170,"y":23170,"d":false},{"t":3500,"x":23170,"y":23170,"d":false},{"t":3501,"x":23170,"y":23170,"d":false},{"t":3502,"x":23170,"y":23170,"d":false},{"t":3503,"x":23170,"y":23170,"d":false},{"t":3504,"x":23170,"y":23170,"d":false},{"t":3505,"x":23170,"y":23170,"d":false},{"t":3506,"x":23170,"d":false,"y":23170},{"t":3507,"x":23170,"d":false,"y":23170},{"t":3508,"x":0,"d":false,"y":32767},{"t":3509,"x":0,"d":false,"y":32767},{"t":3510,"x":0,"d":false,"y":32767},{"t":3511,"x":0,"d":false,"y":32767},{"t":3512,"x":0,"d":false,"y":32767},{"t":3513,"x":23170,"d":false,"y":23170},{"t":3514,"x":23170,"d":false,"y":23170},{"t":3515,"x":23170,"d":false,"y":23170},{"t":3516,"x":23170,"d":false,"y":23170},{"t":3517,"x":23170,"d":false,"y":23170},{"t":3518,"x":23170,"d":false,"y":23170},{"t":3519,"x":23170,"d":false,"y":23170},{"t":3520,"x":23170,"d":false,"y":23170},{"t":3521,"x":32767,"d":false,"y":0},{"t":3522,"x":32767,"d":false,"y":0},{"t":3523,"x":32767,"d":false,"y":0},{"t":3524,"x":32767,"d":false,"y":0},{"t":3525,"x":32767,"d":false,"y":0},{"t":3526,"x":32767,"d":false,"y":0},{"t":3527,"x":32767,"d":false,"y":0},{"t":3528,"x":32767,"d":false,"y":0},{"t":3529,"x":32767,"d":false,"y":0},{"t":3530,"x":32767,"d":false,"y":0},{"t":3531,"x":32767,"d":false,"y":0},{"t":3532,"x":32767,"d":false,"y":0},{"t":3533,"x":32767,"d":false,"y":0},{"t":3534,"x":32767,"d":false,"y":0},{"t":3535,"x":32767,"d":false,"y":0},{"t":3536,"x":32767,"d":false,"y":0},{"t":3537,"x":32767,"d":false,"y":0},{"t":3538,"x":32767,"d":false,"y":0},{"t":3539,"x":32767,"d":false,"y":0},{"t":3540,"x":32767,"d":false,"y":0},{"t":3541,"x":32767,"d":false,"y":0},{"d":false,"y":0,"t":3542,"x":32767},{"d":false,"y":0,"t":3543,"x":32767},{"d":false,"y":0,"t":3544,"x":32767},{"d":false,"y":0,"t":3545,"x":32767},{"d":false,"y":32707,"t":3546,"x":1977},{"d":false,"y":32749,"t":3547,"x":1074},{"d":false,"y":32767,"t":3548,"x":0},{"d":false,"y":32755,"t":3549,"x":-895},{"d":false,"y":32718,"t":3550,"x":-1788},{"d":false,"y":32641,"t":3551,"x":-2870},{"d":false,"y":32696,"t":3552,"x":2156},{"d":false,"y":28567,"t":3553,"x":16049},{"d":false,"y":28845,"t":3554,"x":15544},{"d":false,"y":29178,"t":3555,"x":14910},{"d":false,"y":29435,"t":3556,"x":14397},{"d":false,"y":29742,"t":3557,"x":13752},{"d":false,"y":30034,"t":3558,"x":13100},{"d":false,"y":30289,"t":3559,"x":12500},{"d":false,"y":30554,"t":3560,"x":11838},{"d":false,"y":30785,"t":3561,"x":11224},{"d":false,"y":31004,"t":3562,"x":10602},{"d":false,"y":31227,"t":3563,"x":9928},{"d":false,"y":31420,"t":3564,"x":9298},{"d":false,"y":31601,"t":3565,"x":8662},{"d":false,"y":31807,"t":3566,"x":7872},{"d":false,"y":30714,"t":3567,"x":11417},{"d":false,"y":30905,"t":3568,"x":10889},{"d":false,"y":31117,"t":3569,"x":10266},{"d":false,"y":31318,"t":3570,"x":9636},{"d":false,"y":31506,"t":3571,"x":9002},{"d":false,"y":31682,"t":3572,"x":8363},{"d":false,"y":31807,"t":3573,"x":7872},{"d":false,"y":31960,"t":3574,"x":7227},{"d":false,"y":32099,"t":3575,"x":6580},{"d":false,"y":32226,"t":3576,"x":5932},{"d":false,"y":-32338,"t":3577,"x":-5283},{"d":false,"t":3578,"y":-32226,"x":-5932},{"d":false,"t":3579,"y":-32099,"x":-6580},{"d":false,"t":3580,"y":-31968,"x":-7193},{"d":false,"t":3581,"y":-31817,"x":-7834},{"d":false,"t":3582,"y":-31653,"x":-8473},{"d":false,"t":3583,"y":-31518,"x":-8960},{"d":false,"t":3584,"y":-31332,"x":-9591},{"d":false,"t":3585,"y":-32312,"x":-5439},{"d":false,"t":3586,"y":-32202,"x":-6058},{"d":false,"t":3587,"y":-32106,"x":-6549},{"d":false,"t":3588,"y":-31968,"x":-7193},{"d":false,"t":3589,"y":-31817,"x":-7834},{"d":false,"t":3590,"y":-31653,"x":-8473},{"d":false,"t":3591,"y":-31518,"x":-8960},{"d":false,"t":3592,"y":-31376,"x":-9445},{"d":false,"t":3593,"y":-31180,"x":-10074},{"d":false,"t":3594,"y":-30972,"x":-10696},{"d":false,"t":3595,"y":-30804,"x":-11172},{"d":false,"t":3596,"y":-30554,"x":-11838},{"d":false,"t":3597,"y":-30368,"x":-12307},{"d":false,"t":3598,"y":-30093,"x":-12965},{"d":false,"t":3599,"y":-29890,"x":-13426},{"d":false,"t":3600,"y":-29652,"x":-13944},{"d":false,"t":3601,"y":-29340,"x":-14590},{"d":false,"t":3602,"y":-29048,"x":-15162},{"d":false,"t":3603,"y":28778,"x":15668},{"d":false,"t":3604,"y":29113,"x":15037},{"d":false,"t":3605,"y":29403,"x":14461},{"d":false,"t":3606,"y":29713,"x":13813},{"d":false,"t":3607,"y":29949,"x":13293},{"d":false,"t":3608,"y":30289,"x":12500},{"d":false,"t":3609,"y":30533,"x":11892},{"d":false,"t":3610,"y":30733,"x":11365},{"d":false,"t":3611,"y":30955,"x":10746},{"d":false,"t":3612,"y":31212,"x":9975},{"d":false,"t":3613,"y":31407,"x":9342},{"y":31560,"t":3614,"x":8811,"d":false},{"y":31731,"t":3615,"x":8173,"d":false},{"y":31925,"t":3616,"x":7380,"d":false},{"y":32068,"t":3617,"x":6734,"d":false},{"y":32191,"t":3618,"x":6116,"d":false},{"y":32308,"t":3619,"x":5465,"d":false},{"y":32434,"t":3620,"x":4656,"d":false},{"y":32519,"t":3621,"x":4025,"d":false},{"y":32593,"t":3622,"x":3372,"d":false},{"y":31494,"t":3623,"x":9044,"d":false},{"y":31671,"t":3624,"x":8403,"d":false},{"y":31798,"t":3625,"x":7909,"d":false},{"y":31952,"t":3626,"x":7262,"d":false},{"y":32093,"t":3627,"x":6612,"d":false},{"y":32220,"t":3628,"x":5961,"d":false},{"y":-32334,"t":3629,"x":-5309,"d":false},{"y":-32220,"t":3630,"x":-5961,"d":false},{"y":-32093,"t":3631,"x":-6612,"d":false},{"y":-31960,"t":3632,"x":-7227,"d":false},{"y":-31807,"t":3633,"x":-7872,"d":false},{"y":-31682,"t":3634,"x":-8363,"d":false},{"y":-31506,"t":3635,"x":-9002,"d":false},{"y":-32653,"t":3636,"x":-2734,"d":false},{"y":-32591,"t":3637,"x":-3388,"d":false},{"y":-32519,"t":3638,"x":-4025,"d":false},{"y":-32431,"t":3639,"x":-4679,"d":false},{"y":-32359,"t":3640,"x":-5152,"d":false},{"y":-32249,"t":3641,"x":-5805,"d":false},{"y":-32124,"t":3642,"x":-6457,"d":false},{"y":-31994,"t":3643,"x":-7074,"d":false},{"y":-31881,"t":3644,"x":-7568,"d":false},{"y":-31721,"t":3645,"x":-8212,"d":false},{"y":-31548,"t":3646,"x":-8853,"d":false},{"y":-31407,"t":3647,"x":-9342,"d":false},{"y":-31212,"t":3648,"x":-9975,"d":false},{"y":-31037,"t":3649,"x":-10507,"d":false},{"x":-11133,"t":3650,"y":-30818,"d":false},{"x":-11752,"t":3651,"y":-30587,"d":false},{"x":-12281,"t":3652,"y":-30379,"d":false},{"x":-12752,"t":3653,"y":-30184,"d":false},{"x":-13413,"t":3654,"y":-29896,"d":false},{"x":13874,"t":3655,"y":29685,"d":false},{"x":13413,"t":3656,"y":29896,"d":false},{"x":12614,"t":3657,"y":30242,"d":false},{"x":11946,"t":3658,"y":30512,"d":false},{"x":11470,"t":3659,"y":30694,"d":false},{"x":10846,"t":3660,"y":30920,"d":false},{"x":10022,"t":3661,"y":31197,"d":false},{"x":9386,"t":3662,"y":31394,"d":false},{"x":8745,"t":3663,"y":31579,"d":false},{"x":8251,"t":3664,"y":31711,"d":false},{"x":7451,"t":3665,"y":31909,"d":false},{"x":6799,"t":3666,"y":32054,"d":false},{"x":6146,"t":3667,"y":32185,"d":false},{"x":5492,"t":3668,"y":32304,"d":false},{"x":4702,"t":3669,"y":32428,"d":false},{"x":4044,"t":3670,"y":32516,"d":false},{"x":3405,"t":3671,"y":32590,"d":false},{"x":2748,"t":3672,"y":32652,"d":false},{"x":1943,"t":3673,"y":32709,"d":false},{"x":9579,"t":3674,"y":31336,"d":false},{"x":8895,"t":3675,"y":31537,"d":false},{"x":8403,"t":3676,"y":31671,"d":false},{"x":7757,"t":3677,"y":31836,"d":false},{"x":7108,"t":3678,"y":31987,"d":false},{"x":6489,"t":3679,"y":32118,"d":false},{"x":5833,"t":3680,"y":32244,"d":false},{"x":-5177,"t":3681,"y":-32355,"d":false},{"x":-5833,"t":3682,"y":-32244,"d":false},{"x":-6457,"t":3683,"y":-32124,"d":false},{"x":-7108,"t":3684,"y":-31987,"d":false},{"x":-7757,"t":3685,"y":-31836,"d":false},{"y":-31671,"t":3686,"d":false,"x":-8403},{"y":23170,"t":3687,"d":false,"x":23170},{"y":23170,"t":3688,"d":false,"x":23170},{"y":23170,"t":3689,"d":false,"x":23170},{"y":23170,"t":3690,"d":false,"x":23170},{"y":23170,"t":3691,"d":false,"x":23170},{"y":23170,"t":3692,"d":false,"x":23170},{"y":23170,"t":3693,"d":false,"x":23170},{"y":23170,"t":3694,"d":false,"x":23170},{"y":23170,"t":3695,"d":false,"x":23170},{"y":23170,"t":3696,"d":false,"x":23170},{"y":23170,"t":3697,"d":false,"x":23170},{"y":0,"t":3698,"d":false,"x":32767},{"y":0,"t":3699,"d":false,"x":32767},{"y":0,"t":3700,"d":false,"x":32767},{"y":0,"t":3701,"d":false,"x":32767},{"y":0,"t":3702,"d":false,"x":32767},{"y":0,"t":3703,"d":false,"x":32767},{"y":0,"t":3704,"d":false,"x":32767},{"y":0,"t":3705,"d":false,"x":32767},{"y":-23170,"t":3711,"d":false,"x":-23170},{"y":23170,"t":3712,"d":false,"x":23170},{"y":-23170,"t":3713,"d":false,"x":-23170},{"y":23170,"t":3714,"d":false,"x":23170},{"y":-23170,"t":3715,"d":false,"x":-23170},{"y":23170,"t":3716,"d":false,"x":23170},{"y":-23170,"t":3717,"d":false,"x":-23170},{"y":23170,"t":3718,"d":false,"x":23170},{"y":-23170,"t":3719,"d":false,"x":-23170},{"y":23170,"t":3720,"d":false,"x":23170},{"y":-23170,"t":3721,"d":false,"x":-23170},{"y":23170,"t":3722,"d":false,"x":23170},{"y":-23170,"t":3723,"d":false,"x":-23170},{"y":23170,"t":3724,"d":false,"x":23170},{"y":-23170,"t":3725,"d":false,"x":-23170},{"y":23170,"t":3726,"d":false,"x":23170},{"d":false,"x":-23170,"t":3727,"y":-23170},{"d":false,"x":23170,"t":3728,"y":23170},{"d":false,"x":-23170,"t":3729,"y":-23170},{"d":false,"x":23170,"t":3730,"y":23170},{"d":false,"x":-23170,"t":3731,"y":-23170},{"d":false,"x":23170,"t":3732,"y":23170},{"d":false,"x":-23170,"t":3733,"y":-23170},{"d":false,"x":23170,"t":3734,"y":23170},{"d":false,"x":-23170,"t":3735,"y":-23170},{"d":false,"x":23170,"t":3736,"y":23170},{"d":false,"x":-23170,"t":3737,"y":-23170},{"d":false,"x":23170,"t":3738,"y":23170},{"d":false,"x":-23170,"t":3739,"y":-23170},{"d":false,"x":23170,"t":3740,"y":23170},{"d":false,"x":21679,"t":3857,"y":-24570},{"d":false,"x":21324,"t":3858,"y":-24879},{"d":false,"x":11380,"t":3859,"y":-30727},{"d":false,"x":10765,"t":3860,"y":-30948},{"d":false,"x":11328,"t":3861,"y":-30747},{"d":false,"x":6226,"t":3862,"y":-32170},{"d":false,"x":5967,"t":3863,"y":-32219},{"d":false,"x":5614,"t":3864,"y":-32282},{"d":false,"x":4861,"t":3865,"y":-32404},{"d":false,"x":3058,"t":3866,"y":-32624},{"d":false,"x":2335,"t":3867,"y":-32684},{"d":false,"x":2721,"t":3868,"y":-32654},{"d":false,"x":3260,"t":3869,"y":-32604},{"d":false,"x":-13907,"t":3870,"y":-29669},{"d":false,"x":-13799,"t":3871,"y":-29720},{"d":false,"x":-13653,"t":3872,"y":-29787},{"d":false,"x":-14088,"t":3873,"y":-29584},{"d":false,"x":-13952,"t":3874,"y":-29648},{"d":false,"x":-19377,"t":3875,"y":-26423},{"d":false,"x":-19978,"t":3876,"y":-25972},{"d":false,"x":-19476,"t":3877,"y":-26350},{"d":false,"x":-19660,"t":3878,"y":-26214},{"x":-19904,"t":3879,"y":-26029,"d":false},{"x":-19045,"t":3880,"y":-26664,"d":false},{"x":-30246,"t":3881,"y":-12603,"d":false},{"x":-29881,"t":3882,"y":-13446,"d":false},{"x":-30020,"t":3883,"y":-13134,"d":false},{"x":-26539,"t":3884,"y":-19218,"d":false},{"x":-26456,"t":3885,"y":-19333,"d":false},{"x":-25928,"t":3886,"y":-20035,"d":false},{"x":-26379,"t":3887,"y":-19437,"d":false},{"x":-26214,"t":3888,"y":-19660,"d":false},{"x":-30977,"t":3889,"y":-10682,"d":false},{"x":-31208,"t":3890,"y":-9987,"d":false},{"x":-31086,"t":3891,"y":-10362,"d":false},{"x":-30899,"t":3892,"y":-10906,"d":false},{"x":-32480,"t":3893,"y":-4331,"d":false},{"x":-32386,"t":3894,"y":-4982,"d":false},{"x":-32467,"t":3895,"y":-4427,"d":false},{"x":-32321,"t":3896,"y":-5387,"d":false},{"x":-29693,"t":3897,"y":13857,"d":false},{"x":-29751,"t":3898,"y":13731,"d":false},{"x":-29560,"t":3899,"y":14138,"d":false},{"x":-29613,"t":3900,"y":14027,"d":false},{"x":-26315,"t":3901,"y":19524,"d":false},{"x":-26214,"t":3902,"y":19660,"d":false},{"x":-26592,"t":3903,"y":19146,"d":false},{"x":-26500,"t":3904,"y":19273,"d":false},{"x":-25865,"t":3905,"y":20117,"d":false},{"x":-26423,"t":3906,"y":19377,"d":false},{"x":-26214,"t":3907,"y":19660,"d":false},{"x":-27264,"t":3908,"y":18176,"d":false},{"x":-25587,"t":3909,"y":20469,"d":false},{"x":-23170,"t":3910,"y":23170,"d":false},{"x":-22472,"t":3911,"y":23847,"d":false},{"x":-22820,"t":3912,"y":23515,"d":false},{"x":-23228,"t":3913,"y":23111,"d":false},{"x":-23520,"t":3914,"y":22814,"d":false},{"x":-23871,"y":22446,"d":false,"t":3915},{"x":-24224,"y":22065,"d":false,"t":3916},{"x":-24517,"y":21739,"d":false,"t":3917},{"x":-24870,"y":21335,"d":false,"t":3918},{"x":-25112,"y":21049,"d":false,"t":3919},{"x":-25465,"y":20621,"d":false,"t":3920},{"x":-25709,"y":20316,"d":false,"t":3921},{"x":-26061,"y":19862,"d":false,"t":3922},{"x":-26350,"y":19476,"d":false,"t":3923},{"x":-26698,"y":18997,"d":false,"t":3924},{"x":-27001,"y":18563,"d":false,"t":3925},{"x":-27244,"y":18206,"d":false,"t":3926},{"x":-27546,"y":17746,"d":false,"t":3927},{"x":-27883,"y":17210,"d":false,"t":3928},{"x":-28121,"y":16819,"d":false,"t":3929},{"x":-28323,"y":16476,"d":false,"t":3930},{"x":-28618,"y":15960,"d":false,"t":3931},{"x":-28908,"y":15427,"d":false,"t":3932},{"x":-29195,"y":14878,"d":false,"t":3933},{"x":-29392,"y":14483,"d":false,"t":3934},{"x":-29671,"y":13904,"d":false,"t":3935},{"x":-29943,"y":13308,"d":false,"t":3936},{"x":-30110,"y":12925,"d":false,"t":3937},{"x":-30372,"y":12297,"d":false,"t":3938},{"x":-30575,"y":11783,"d":false,"t":3939},{"x":-30754,"y":11307,"d":false,"t":3940},{"x":-30961,"y":10729,"d":false,"t":3941},{"x":-31192,"y":10037,"d":false,"t":3942},{"x":-31355,"y":9516,"d":false,"t":3943},{"x":-31553,"y":8835,"d":false,"t":3944},{"x":-31692,"y":8323,"d":false,"t":3945},{"x":-31836,"y":7757,"d":false,"t":3946},{"x":-32006,"y":7022,"d":false,"t":3947},{"x":-32124,"y":6458,"d":false,"t":3948},{"x":-32270,"y":5685,"d":false,"t":3949},{"x":-32366,"y":5110,"d":false,"t":3950},{"x":32461,"d":false,"y":-4466,"t":3951},{"x":32380,"d":false,"y":-5021,"t":3952},{"x":32247,"d":false,"y":-5815,"t":3953},{"x":32131,"d":false,"y":-6426,"t":3954},{"x":31961,"d":false,"y":-7223,"t":3955},{"x":23170,"d":false,"y":23170,"t":3956},{"x":23170,"d":false,"y":23170,"t":3957},{"x":31646,"d":false,"y":-8499,"t":3958},{"x":23170,"d":false,"y":23170,"t":3959},{"x":23170,"d":false,"y":23170,"t":3960},{"x":31227,"d":false,"y":-9928,"t":3961},{"x":23170,"d":false,"y":23170,"t":3962},{"x":23170,"d":false,"y":23170,"t":3963},{"x":30784,"d":false,"y":-11227,"t":3964},{"x":23170,"d":false,"y":23170,"t":3965},{"x":30436,"d":false,"y":-12138,"t":3966},{"x":23170,"d":false,"y":23170,"t":3967},{"x":23170,"d":false,"y":23170,"t":3968},{"x":29965,"d":false,"y":-13257,"t":3969},{"x":23170,"d":false,"y":23170,"t":3970},{"x":23170,"d":false,"y":23170,"t":3971},{"x":29380,"d":false,"y":-14509,"t":3972},{"x":23170,"d":false,"y":23170,"t":3973},{"x":23170,"d":false,"y":23170,"t":3974},{"x":28937,"d":false,"y":-15373,"t":3975},{"x":0,"d":false,"y":32767,"t":3976},{"x":0,"d":false,"y":32767,"t":3977},{"x":28937,"d":false,"y":-15373,"t":3978},{"x":0,"d":false,"y":32767,"t":3979},{"x":28703,"d":false,"y":-15805,"t":3980},{"x":0,"d":false,"y":32767,"t":3981},{"x":0,"d":false,"y":32767,"t":3982},{"x":0,"d":false,"y":32767,"t":3983},{"x":-28821,"d":false,"y":15589,"t":3984},{"x":0,"d":false,"y":32767,"t":3985},{"x":0,"d":false,"y":32767,"t":3986},{"x":-29486,"d":false,"t":3987,"y":14291},{"x":0,"d":false,"t":3988,"y":32767},{"x":0,"d":false,"t":3989,"y":32767},{"x":-30061,"d":false,"t":3990,"y":13039},{"x":23170,"d":false,"t":3991,"y":23170},{"x":-30192,"d":false,"t":3992,"y":12732},{"x":23170,"d":false,"t":3993,"y":23170},{"x":0,"d":false,"t":3994,"y":32767},{"x":-30498,"d":false,"t":3995,"y":11981},{"x":23170,"d":false,"t":3996,"y":23170},{"x":23170,"d":false,"t":3997,"y":23170},{"x":-30498,"d":false,"t":3998,"y":11981},{"x":23170,"d":false,"t":3999,"y":23170},{"x":0,"d":false,"t":4000,"y":32767},{"x":-30784,"d":false,"t":4001,"y":11227},{"x":-32351,"d":false,"t":4002,"y":5207},{"x":-32433,"d":false,"t":4003,"y":4665},{"x":-32491,"d":false,"t":4004,"y":4243},{"x":-32543,"d":false,"t":4005,"y":3829},{"x":-32591,"d":false,"t":4006,"y":3395},{"x":-32632,"d":false,"t":4007,"y":2967},{"x":-32678,"d":false,"t":4008,"y":2408},{"x":-32708,"d":false,"t":4009,"y":1958},{"x":-32732,"d":false,"t":4010,"y":1509},{"x":-32750,"d":false,"t":4011,"y":1053},{"x":-32762,"d":false,"t":4012,"y":589},{"x":-32767,"d":false,"t":4013,"y":118},{"x":-32765,"d":false,"t":4014,"y":-357},{"x":-32756,"d":false,"t":4015,"y":-840},{"x":-32740,"d":false,"t":4016,"y":-1329},{"x":-32716,"d":false,"t":4017,"y":-1824},{"x":-32693,"d":false,"t":4018,"y":-2196},{"x":-32655,"d":false,"t":4019,"y":-2711},{"x":-32608,"d":false,"t":4020,"y":-3224},{"x":32553,"d":false,"t":4021,"y":3742},{"x":32604,"d":false,"t":4022,"y":3260},{"x":32649,"d":false,"t":4023,"y":2773},{"x":32696,"d":false,"t":4024,"y":2163},{"x":32725,"d":false,"t":4025,"y":1668},{"x":32746,"d":false,"t":4026,"y":1165},{"x":32761,"d":false,"t":4027,"y":647},{"x":32767,"d":false,"t":4028,"y":131},{"x":32765,"d":false,"t":4029,"y":-395},{"x":32754,"d":false,"t":4030,"y":-928},{"x":32734,"d":false,"t":4031,"y":-1476},{"x":32713,"d":false,"t":4032,"y":-1885},{"x":32676,"d":false,"t":4033,"y":-2441},{"x":32629,"d":false,"t":4034,"y":-3004},{"x":32573,"d":false,"t":4035,"y":-3558},{"x":32510,"d":false,"t":4036,"y":-4098},{"x":32435,"d":false,"t":4037,"y":-4653},{"x":32354,"d":false,"t":4038,"y":-5188},{"x":32260,"d":false,"t":4039,"y":-5741},{"x":32162,"d":false,"t":4040,"y":-6269},{"x":-32050,"d":false,"t":4041,"y":6819},{"x":-32162,"d":false,"t":4042,"y":6269},{"x":-32260,"d":false,"t":4043,"y":5741},{"x":-32354,"d":false,"t":4044,"y":5188},{"x":-32438,"d":false,"t":4045,"y":4634},{"x":-32510,"d":false,"t":4046,"y":4098},{"x":-32575,"d":false,"t":4047,"y":3544},{"x":-32629,"d":false,"t":4048,"y":3004},{"x":-32675,"d":false,"t":4049,"y":2451},{"x":-32711,"d":false,"t":4050,"y":1908},{"x":-32739,"d":false,"t":4051,"y":1364},{"x":-32757,"d":false,"t":4052,"y":819},{"x":-32766,"d":false,"t":4053,"y":273},{"x":-32766,"d":false,"t":4054,"y":-273},{"x":-23170,"d":false,"t":4055,"y":23170},{"x":32767,"d":false,"t":4056,"y":0},{"x":-23170,"d":false,"t":4057,"y":23170},{"x":32767,"d":false,"t":4058,"y":0},{"x":-23170,"y":23170,"d":false,"t":4059},{"x":32767,"y":0,"d":false,"t":4060},{"x":32767,"y":0,"d":false,"t":4061},{"x":-23170,"y":23170,"d":false,"t":4062},{"x":32767,"y":0,"d":false,"t":4063},{"x":-23170,"y":23170,"d":false,"t":4064},{"x":32767,"y":0,"d":false,"t":4065},{"x":-23170,"y":23170,"d":false,"t":4066},{"x":32767,"y":0,"d":false,"t":4067},{"x":32767,"y":0,"d":false,"t":4068},{"x":-23170,"y":23170,"d":false,"t":4069},{"x":32767,"y":0,"d":false,"t":4070},{"x":-23170,"y":23170,"d":false,"t":4071},{"x":32767,"y":0,"d":false,"t":4072},{"x":-23170,"y":23170,"d":false,"t":4073},{"x":32767,"y":0,"d":false,"t":4074},{"x":-23170,"y":23170,"d":false,"t":4075},{"x":32767,"y":0,"d":false,"t":4076},{"x":32767,"y":0,"d":false,"t":4077},{"x":23170,"y":-23170,"d":false,"t":4078},{"x":32767,"y":0,"d":false,"t":4079},{"x":23170,"y":-23170,"d":false,"t":4080},{"x":-32680,"y":2384,"d":false,"t":4081},{"x":23170,"y":-23170,"d":false,"t":4082},{"x":32767,"y":0,"d":false,"t":4083},{"x":-32685,"y":2314,"d":false,"t":4084},{"x":23170,"y":-23170,"d":false,"t":4085},{"x":-32719,"y":1777,"d":false,"t":4086},{"x":23170,"y":-23170,"d":false,"t":4087},{"x":32767,"y":0,"d":false,"t":4088},{"x":23170,"y":-23170,"d":false,"t":4089},{"x":-32687,"y":2291,"d":false,"t":4090},{"x":-32723,"y":1690,"d":false,"t":4091},{"x":23170,"y":-23170,"d":false,"t":4092},{"x":32767,"y":0,"d":true,"t":4093},{"x":-32672,"y":2489,"d":false,"t":4094},{"t":4095,"d":true,"y":0,"x":32767},{"t":4096,"d":false,"y":2324,"x":-32685},{"t":4097,"d":true,"y":0,"x":32767},{"t":4098,"d":false,"y":6608,"x":-32094},{"t":4099,"d":false,"y":5387,"x":-32321},{"t":4100,"d":false,"y":4005,"x":-32521},{"t":4101,"d":false,"y":2761,"x":-32650},{"t":4102,"d":false,"y":1473,"x":-32734},{"t":4103,"d":false,"y":166,"x":-32767},{"t":4104,"d":false,"y":-1175,"x":-32746},{"t":4105,"d":false,"y":-2539,"x":-32668},{"t":4106,"d":false,"y":-3260,"x":-32604},{"t":4107,"d":false,"y":-3829,"x":-32543},{"t":4108,"d":false,"y":4560,"x":32448},{"t":4109,"d":false,"y":3932,"x":32530},{"t":4110,"d":false,"y":3064,"x":32623},{"t":4111,"d":false,"y":23170,"x":-23170},{"t":4112,"d":false,"y":23170,"x":-23170},{"t":4113,"d":false,"y":3260,"x":32604},{"t":4114,"d":false,"y":23170,"x":-23170},{"t":4115,"d":false,"y":23170,"x":-23170},{"t":4116,"d":false,"y":23170,"x":-23170},{"t":4117,"d":false,"y":3997,"x":32522},{"t":4118,"d":false,"y":23170,"x":-23170},{"t":4119,"d":false,"y":23170,"x":-23170},{"t":4120,"d":false,"y":32767,"x":0},{"t":4121,"d":false,"y":4153,"x":32503},{"t":4122,"d":false,"y":23170,"x":-23170},{"t":4123,"d":false,"y":23170,"x":-23170},{"t":4124,"d":false,"y":32767,"x":0},{"t":4125,"d":false,"y":4153,"x":32503},{"t":4126,"d":false,"y":23170,"x":-23170},{"t":4127,"d":false,"y":32767,"x":0},{"t":4128,"d":false,"y":3797,"x":32546},{"t":4129,"d":false,"y":23170,"x":-23170},{"t":4130,"d":false,"y":3459,"x":32584},{"d":false,"y":23170,"t":4131,"x":-23170},{"d":false,"y":23170,"t":4132,"x":-23170},{"d":false,"y":32767,"t":4133,"x":0},{"d":false,"y":3619,"t":4134,"x":32567},{"d":false,"y":23170,"t":4135,"x":-23170},{"d":false,"y":32767,"t":4136,"x":0},{"d":false,"y":3459,"t":4137,"x":32584},{"d":false,"y":23170,"t":4138,"x":-23170},{"d":false,"y":23170,"t":4139,"x":-23170},{"d":false,"y":23170,"t":4140,"x":-23170},{"d":false,"y":3997,"t":4141,"x":32522},{"d":false,"y":23170,"t":4142,"x":-23170},{"d":false,"y":23170,"t":4143,"x":-23170},{"d":false,"y":23170,"t":4144,"x":-23170},{"d":false,"y":23170,"t":4145,"x":-23170},{"d":false,"y":4887,"t":4146,"x":32400},{"d":false,"y":23170,"t":4147,"x":-23170},{"d":false,"y":23170,"t":4148,"x":-23170},{"d":false,"y":5092,"t":4149,"x":32369},{"d":false,"y":23170,"t":4150,"x":-23170},{"d":false,"y":23170,"t":4151,"x":-23170},{"d":false,"y":429,"t":4152,"x":32764},{"d":false,"y":-143,"t":4153,"x":32767},{"d":false,"y":-715,"t":4154,"x":32759},{"d":false,"y":-1287,"t":4155,"x":32742},{"d":false,"y":-1857,"t":4156,"x":32714},{"d":false,"y":-2426,"t":4157,"x":32677},{"d":false,"y":-2992,"t":4158,"x":32630},{"d":false,"y":-3571,"t":4159,"x":32572},{"d":false,"y":-4134,"t":4160,"x":32505},{"d":false,"y":-4714,"t":4161,"x":32426},{"d":false,"y":-5271,"t":4162,"x":32340},{"d":false,"y":-5849,"t":4163,"x":32241},{"d":false,"y":1430,"t":4164,"x":32736},{"d":false,"y":855,"t":4165,"x":32756},{"d":false,"y":285,"t":4166,"x":32766},{"y":-285,"t":4167,"x":32766,"d":false},{"y":-855,"t":4168,"x":32756,"d":false},{"y":-1423,"t":4169,"x":32736,"d":false},{"y":-1999,"t":4170,"x":32706,"d":false},{"y":-2568,"t":4171,"x":32666,"d":false},{"y":-3133,"t":4172,"x":32617,"d":false},{"y":-3713,"t":4173,"x":32556,"d":false},{"y":-4275,"t":4174,"x":32487,"d":false},{"y":-4854,"t":4175,"x":32406,"d":false},{"y":5410,"t":4176,"x":-32317,"d":false},{"y":4833,"t":4177,"x":-32409,"d":false},{"y":4275,"t":4178,"x":-32487,"d":false},{"y":10974,"t":4179,"x":-30875,"d":false},{"y":10362,"t":4180,"x":-31086,"d":false},{"y":9669,"t":4181,"x":-31308,"d":false},{"y":9271,"t":4182,"x":-31428,"d":false},{"y":8513,"t":4183,"x":-31642,"d":false},{"y":7715,"t":4184,"x":-31846,"d":false},{"y":6912,"t":4185,"x":-32030,"d":false},{"y":6091,"t":4186,"x":-32196,"d":false},{"y":5156,"t":4187,"x":-32359,"d":false},{"y":23170,"t":4188,"x":23170,"d":false},{"y":23170,"t":4189,"x":23170,"d":false},{"y":23170,"t":4190,"x":23170,"d":false},{"y":23170,"t":4191,"x":23170,"d":false},{"y":23170,"t":4192,"x":23170,"d":false},{"y":23170,"t":4193,"x":23170,"d":false},{"y":23170,"t":4194,"x":23170,"d":false},{"y":23170,"t":4195,"x":23170,"d":false},{"y":23170,"t":4196,"x":23170,"d":false},{"y":23170,"t":4197,"x":23170,"d":false},{"y":23170,"t":4198,"x":23170,"d":false},{"y":23170,"t":4199,"x":23170,"d":false},{"y":23170,"t":4200,"x":23170,"d":false},{"y":23170,"t":4201,"x":23170,"d":false},{"y":23170,"t":4202,"x":23170,"d":false},{"d":false,"x":23170,"y":23170,"t":4203},{"d":false,"x":23170,"y":23170,"t":4204},{"d":false,"x":23170,"y":23170,"t":4205},{"d":false,"x":-31380,"y":9432,"t":4206},{"d":false,"x":-31587,"y":8714,"t":4207},{"d":false,"x":-31778,"y":7990,"t":4208},{"d":false,"x":-31952,"y":7262,"t":4209},{"d":false,"x":-32074,"y":6705,"t":4210},{"d":false,"x":-23170,"y":23170,"t":4211},{"d":false,"x":-23170,"y":23170,"t":4212},{"d":false,"x":-23170,"y":23170,"t":4213},{"d":false,"x":-23170,"y":23170,"t":4214},{"d":false,"x":-23170,"y":23170,"t":4215},{"d":false,"x":-32608,"y":3227,"t":4216},{"d":false,"x":-32667,"y":2552,"t":4217},{"d":false,"x":-32713,"y":1874,"t":4218},{"d":false,"x":-32745,"y":1188,"t":4219},{"d":false,"x":32763,"y":-509,"t":4220},{"d":false,"x":32745,"y":-1188,"t":4221},{"d":false,"x":32714,"y":-1865,"t":4222},{"d":false,"x":32667,"y":-2552,"t":4223},{"d":false,"x":-32767,"y":0,"t":4224},{"d":false,"x":32667,"y":-2552,"t":4225},{"d":false,"x":-32767,"y":0,"t":4226},{"d":false,"x":32667,"y":-2552,"t":4227},{"d":false,"x":32606,"y":-3244,"t":4228},{"d":false,"x":-32767,"y":0,"t":4229},{"d":false,"x":-32767,"y":0,"t":4230},{"d":false,"x":32666,"y":-2565,"t":4231},{"d":false,"x":32615,"y":-3156,"t":4232},{"d":false,"x":-32767,"y":0,"t":4233},{"d":false,"x":32767,"y":0,"t":4234},{"d":false,"x":-32767,"y":0,"t":4235},{"d":false,"x":32767,"y":0,"t":4236},{"d":false,"x":-32767,"y":0,"t":4237},{"d":false,"x":32767,"y":0,"t":4238},{"x":-32767,"t":4239,"d":false,"y":0},{"x":32767,"t":4240,"d":false,"y":0},{"x":-32767,"t":4241,"d":false,"y":0},{"x":32767,"t":4242,"d":false,"y":0},{"x":-32767,"t":4243,"d":false,"y":0},{"x":32767,"t":4244,"d":false,"y":0},{"x":-32767,"t":4245,"d":false,"y":0},{"x":32767,"t":4246,"d":false,"y":0},{"x":-32767,"t":4247,"d":true,"y":0}],"contentVersion":"civic-seam-content-006","digest":"d3802f536474ccaed97abd8a28a2fe24692cc62cf881097f9085ee099e84ddc5","ticks":4248,"seed":1} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-control-reduced-false.png b/docs/review/hud-safe-camera/BP010-field-encounter-control-reduced-false.png new file mode 100644 index 00000000..db5c2c73 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-field-encounter-control-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-control-reduced-true.png b/docs/review/hud-safe-camera/BP010-field-encounter-control-reduced-true.png new file mode 100644 index 00000000..e781ec32 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-field-encounter-control-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-dark-reduced-false.png b/docs/review/hud-safe-camera/BP010-field-encounter-dark-reduced-false.png new file mode 100644 index 00000000..89214451 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-field-encounter-dark-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-dark-reduced-true.png b/docs/review/hud-safe-camera/BP010-field-encounter-dark-reduced-true.png new file mode 100644 index 00000000..60989e88 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-field-encounter-dark-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-paired-reduced-false.png b/docs/review/hud-safe-camera/BP010-field-encounter-paired-reduced-false.png new file mode 100644 index 00000000..b0c046e0 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-field-encounter-paired-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-paired-reduced-true.png b/docs/review/hud-safe-camera/BP010-field-encounter-paired-reduced-true.png new file mode 100644 index 00000000..85a2cc25 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-field-encounter-paired-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-record.txt b/docs/review/hud-safe-camera/BP010-field-encounter-record.txt new file mode 100644 index 00000000..79fcd73a --- /dev/null +++ b/docs/review/hud-safe-camera/BP010-field-encounter-record.txt @@ -0,0 +1,7 @@ +Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. +tick=4248, player=1327,1495, facing=w +enemies=4, projectiles=1, telegraphs=0 +Production GameScene/HUD/fog/ground/projection; painted neutral Player and complete Camera candidate family. +Same unedited snapshot across control/dark/paired and normal/Reduced Motion. +digest=d3802f536474ccaed97abd8a28a2fe24692cc62cf881097f9085ee099e84ddc5; candidate source: docs/review/camera-clips. +Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-registration-coordinates.json b/docs/review/hud-safe-camera/BP010-field-encounter-registration-coordinates.json new file mode 100644 index 00000000..8347c575 --- /dev/null +++ b/docs/review/hud-safe-camera/BP010-field-encounter-registration-coordinates.json @@ -0,0 +1,19 @@ +[ + { + "fieldQ8" : [ + 329256, + 381162 + ], + "headingMilliDegrees" : 290000, + "mount" : [ + 1280, + 1472 + ], + "q8Scale" : 256, + "socket" : "cam-z04-b", + "targetQ8" : [ + 329081, + 380681 + ] + } +] \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP010-field-encounter-registration.png b/docs/review/hud-safe-camera/BP010-field-encounter-registration.png new file mode 100644 index 00000000..da18523d Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-field-encounter-registration.png differ diff --git a/docs/review/hud-safe-camera/BP010-legal-projected-100-reduced-false.png b/docs/review/hud-safe-camera/BP010-legal-projected-100-reduced-false.png new file mode 100644 index 00000000..d94d6b33 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-legal-projected-100-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP010-legal-projected-100-reduced-true.png b/docs/review/hud-safe-camera/BP010-legal-projected-100-reduced-true.png new file mode 100644 index 00000000..dddd4068 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-legal-projected-100-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP010-legal-projected-125-reduced-false.png b/docs/review/hud-safe-camera/BP010-legal-projected-125-reduced-false.png new file mode 100644 index 00000000..6d15a634 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-legal-projected-125-reduced-false.png differ diff --git a/docs/review/hud-safe-camera/BP010-legal-projected-125-reduced-true.png b/docs/review/hud-safe-camera/BP010-legal-projected-125-reduced-true.png new file mode 100644 index 00000000..1cb661f9 Binary files /dev/null and b/docs/review/hud-safe-camera/BP010-legal-projected-125-reduced-true.png differ diff --git a/docs/review/hud-safe-camera/BP010-legal-visibility-100-reduced-false.json b/docs/review/hud-safe-camera/BP010-legal-visibility-100-reduced-false.json new file mode 100644 index 00000000..3a82d217 --- /dev/null +++ b/docs/review/hud-safe-camera/BP010-legal-visibility-100-reduced-false.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1597.989013671875, + 728.47698974609375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1202.010009765625, + 824.64398193359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1394.342041015625, + 1056.574951171875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1190.696044921875, + 1384.6719970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1643.2440185546875, + 1429.927001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1643.2440185546875, + 1294.1629638671875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2005.282958984375, + 1475.1820068359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2299.43896484375, + 1260.2220458984375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1207.666015625, + 1409.4210205078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1084.6300048828125, + 1266.5860595703125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1280.498046875, + 1374.4189453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1452.324951171875, + 1271.5350341796875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1666.5789794921875, + 1283.9100341796875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1381.1710205078125, + 532.469970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1385.3719482421875, + 639.4229736328125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1153.926025390625, + 598.4110107421875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1449.93994140625, + 605.56597900390625, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1429.781005859375, + 740.802978515625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1433.4549560546875, + 793.1710205078125, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1219.949951171875, + 774.7030029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1484.491943359375, + 875.15301513671875, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1563.1610107421875, + 1166.43994140625, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1241.6070556640625, + 1317.3590087890625, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2128.845947265625, + 1230.0789794921875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2041.5670166015625, + 1323.5009765625, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1750.7239990234375, + 1321.073974609375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2639.821044921875, + 1098.156005859375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 887.1669921875, + 412.59500122070312, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 781.79400634765625, + 742.301025390625, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1203.949951171875, + 808.24200439453125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1171.949951171875, + 861.260986328125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1549.989013671875, + 1005.260986328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1194.5780029296875, + 1108.2220458984375, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1261.7249755859375, + 1275.927001953125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1627.2440185546875, + 1144.907958984375, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1928.0279541015625, + 1170.280029296875, + 127.9998779296875, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1882.77294921875, + 1328.6719970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2186.302001953125, + 1275.41796875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2367.322021484375, + 1365.927001953125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2503.0859375, + 1015.77099609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2774.614990234375, + 1151.5350341796875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "legacy", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1373 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP010-legal-visibility-100-reduced-true.json b/docs/review/hud-safe-camera/BP010-legal-visibility-100-reduced-true.json new file mode 100644 index 00000000..3a82d217 --- /dev/null +++ b/docs/review/hud-safe-camera/BP010-legal-visibility-100-reduced-true.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1597.989013671875, + 728.47698974609375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1202.010009765625, + 824.64398193359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1394.342041015625, + 1056.574951171875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1190.696044921875, + 1384.6719970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1643.2440185546875, + 1429.927001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1643.2440185546875, + 1294.1629638671875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2005.282958984375, + 1475.1820068359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2299.43896484375, + 1260.2220458984375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1207.666015625, + 1409.4210205078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1084.6300048828125, + 1266.5860595703125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1280.498046875, + 1374.4189453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1452.324951171875, + 1271.5350341796875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1666.5789794921875, + 1283.9100341796875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1381.1710205078125, + 532.469970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1385.3719482421875, + 639.4229736328125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1153.926025390625, + 598.4110107421875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1449.93994140625, + 605.56597900390625, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1429.781005859375, + 740.802978515625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1433.4549560546875, + 793.1710205078125, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1219.949951171875, + 774.7030029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1484.491943359375, + 875.15301513671875, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1563.1610107421875, + 1166.43994140625, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1241.6070556640625, + 1317.3590087890625, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2128.845947265625, + 1230.0789794921875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2041.5670166015625, + 1323.5009765625, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1750.7239990234375, + 1321.073974609375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2639.821044921875, + 1098.156005859375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 887.1669921875, + 412.59500122070312, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 781.79400634765625, + 742.301025390625, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1203.949951171875, + 808.24200439453125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1171.949951171875, + 861.260986328125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1549.989013671875, + 1005.260986328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1194.5780029296875, + 1108.2220458984375, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1261.7249755859375, + 1275.927001953125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1627.2440185546875, + 1144.907958984375, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1928.0279541015625, + 1170.280029296875, + 127.9998779296875, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1882.77294921875, + 1328.6719970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2186.302001953125, + 1275.41796875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2367.322021484375, + 1365.927001953125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2503.0859375, + 1015.77099609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2774.614990234375, + 1151.5350341796875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "legacy", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1373 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP010-legal-visibility-125-reduced-false.json b/docs/review/hud-safe-camera/BP010-legal-visibility-125-reduced-false.json new file mode 100644 index 00000000..df558dc3 --- /dev/null +++ b/docs/review/hud-safe-camera/BP010-legal-visibility-125-reduced-false.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1622.896728515625, + 536.09625244140625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1127.9228515625, + 656.304931640625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.337890625, + 946.21875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1113.780517578125, + 1356.3399658203125, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1679.46533203125, + 1412.90869140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1679.46533203125, + 1243.2037353515625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2132.01416015625, + 1469.4775390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2499.709228515625, + 1200.777587890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1134.992919921875, + 1387.2762451171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 981.1978759765625, + 1208.7325439453125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1226.032958984375, + 1343.523681640625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1440.816650390625, + 1214.9188232421875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1708.634033203125, + 1230.3875732421875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1351.8741455078125, + 291.08746337890625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1357.1253662109375, + 424.7786865234375, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1067.81787109375, + 373.5137939453125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1437.8353271484375, + 382.45745849609375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1412.63671875, + 551.50372314453125, + 200, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1417.2291259765625, + 616.9637451171875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1150.347900390625, + 593.8787841796875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1481.025390625, + 719.4412841796875, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1579.3616943359375, + 1083.5499267578125, + 159.9998779296875, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1177.419189453125, + 1272.19873046875, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2286.4677734375, + 1163.0987548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2177.369140625, + 1279.876220703125, + 59.999755859375, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1813.8154296875, + 1276.842529296875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2925.186767578125, + 998.195068359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 734.369140625, + 141.2437744140625, + 160, + 639.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 602.6529541015625, + 553.37628173828125, + 479.9998779296875, + 239.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1130.347900390625, + 635.802490234375, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1090.347900390625, + 702.076171875, + 240, + 480 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1562.896728515625, + 882.076171875, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1118.6329345703125, + 1010.777587890625, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1202.566650390625, + 1220.40869140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1659.4654541015625, + 1056.635009765625, + 119.9998779296875, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2035.4453125, + 1088.35009765625, + 159.999755859375, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1978.876708984375, + 1286.3399658203125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2358.287841796875, + 1219.7724609375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2584.56298828125, + 1332.90869140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2754.267822265625, + 895.2137451171875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3093.67919921875, + 1064.9188232421875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "legacy", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1373 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/BP010-legal-visibility-125-reduced-true.json b/docs/review/hud-safe-camera/BP010-legal-visibility-125-reduced-true.json new file mode 100644 index 00000000..df558dc3 --- /dev/null +++ b/docs/review/hud-safe-camera/BP010-legal-visibility-125-reduced-true.json @@ -0,0 +1,479 @@ +{ + "actors" : [ + { + "bounds" : [ + 1622.896728515625, + 536.09625244140625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1127.9228515625, + 656.304931640625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.337890625, + 946.21875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1113.780517578125, + 1356.3399658203125, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1679.46533203125, + 1412.90869140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1679.46533203125, + 1243.2037353515625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2132.01416015625, + 1469.4775390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2499.709228515625, + 1200.777587890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1134.992919921875, + 1387.2762451171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 981.1978759765625, + 1208.7325439453125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1226.032958984375, + 1343.523681640625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1440.816650390625, + 1214.9188232421875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1708.634033203125, + 1230.3875732421875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1351.8741455078125, + 291.08746337890625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1357.1253662109375, + 424.7786865234375, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1067.81787109375, + 373.5137939453125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1437.8353271484375, + 382.45745849609375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1412.63671875, + 551.50372314453125, + 200, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1417.2291259765625, + 616.9637451171875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1150.347900390625, + 593.8787841796875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1481.025390625, + 719.4412841796875, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1579.3616943359375, + 1083.5499267578125, + 159.9998779296875, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1177.419189453125, + 1272.19873046875, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2286.4677734375, + 1163.0987548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2177.369140625, + 1279.876220703125, + 59.999755859375, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1813.8154296875, + 1276.842529296875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2925.186767578125, + 998.195068359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 734.369140625, + 141.2437744140625, + 160, + 639.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 602.6529541015625, + 553.37628173828125, + 479.9998779296875, + 239.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1130.347900390625, + 635.802490234375, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1090.347900390625, + 702.076171875, + 240, + 480 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1562.896728515625, + 882.076171875, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1118.6329345703125, + 1010.777587890625, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1202.566650390625, + 1220.40869140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1659.4654541015625, + 1056.635009765625, + 119.9998779296875, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2035.4453125, + 1088.35009765625, + 159.999755859375, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1978.876708984375, + 1286.3399658203125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2358.287841796875, + 1219.7724609375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2584.56298828125, + 1332.90869140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2754.267822265625, + 895.2137451171875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3093.67919921875, + 1064.9188232421875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "legacy", + "hudExclusions" : [ + + ], + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "safeRegion" : [ + + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1373 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/hud-safe-camera/README.md b/docs/review/hud-safe-camera/README.md new file mode 100644 index 00000000..67fb9237 --- /dev/null +++ b/docs/review/hud-safe-camera/README.md @@ -0,0 +1,11 @@ +# HUD-safe framing candidate + +Research and authored policy are recorded in SS-specs benchmark-production.md, “HUD-safe camera composition candidate.” Implementation: BenchmarkProjectionGeometry.unobstructedRegion plus optional safeRegion in playerVisibleCenter; capture harness measures actual visible HUD node bounds in camera coordinates. No gameplay camera adoption or simulation geometry change. + +Focused iOS Simulator test: 1 passed, 0 failures, 38.721 seconds; Test-SSRuntime-2026.10.15_23-07-46--0700.xcresult. Four policies × two zooms × two motion settings. HUD-safe captures measure 25 visible HUD nodes and choose camera-local region [-191.36499,-163,418.01498,266]. Full player canvas lies inside, and overlaps no HUD exclusion beyond the 0.002-unit numerical tolerance. Digest/replay invariants pass. + +Inspected normal-motion 1x and 1.25x images. Player is clear of the health bar; camera post/character occlusion remains visually wrong. At 1x all four enemy canvases and cameras 5/6/7 are contained. At 1.25x enemy 151 and cameras 6/7 are outside the image. Hostile projectile 163 origin is visible at both zooms. Canvas containment does not prove unoccluded pixels or threat lead time. Dark outside-arena area and legacy props remain unresolved. Diagnostic bright outline remains, not a clean art review. + +Host checks pass: 784 independent SpriteKit corner conversions, 36 HUD-safe boundary positions across four zooms, three no-fit/unobstructed edge cases and existing six visibility probes. Synthetic HUD fixtures are geometry tests; simulator captures use actual HUD nodes. Specs validator and runtime diff check pass. A first host compiler invocation hit duplicate module-cache path spelling; rebuilt successfully using its canonical absolute path. Only rebuilt checks are cited. + +Next: reserve stable HUD regions across transient states/settings; run continuous legal traversal with reversal/dodge, evaluate camera velocity and threat notice time; fix depth/contact and boundary dressing. The current largest-region calculation is static diagnostic code and may change discontinuously when HUD geometry changes. Neither zoom nor camera policy is admitted. diff --git a/docs/review/hud-safe-camera/app-summary.json b/docs/review/hud-safe-camera/app-summary.json new file mode 100644 index 00000000..7b701bb2 --- /dev/null +++ b/docs/review/hud-safe-camera/app-summary.json @@ -0,0 +1,42 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 1, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792130953.225, + "passedTests" : 1, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792130866.078, + "statistics" : [ + + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + + ], + "totalTestCount" : 1 +} diff --git a/docs/review/hud-safe-camera/host-geometry.json b/docs/review/hud-safe-camera/host-geometry.json new file mode 100644 index 00000000..289a4e4b --- /dev/null +++ b/docs/review/hud-safe-camera/host-geometry.json @@ -0,0 +1,141 @@ +{ + "hudRegionEdgeCases" : 3, + "hudSafeBoundaryChecks" : 36, + "invalidInputChecks" : 2, + "scope" : "Host SpriteKit geometry, not iOS displayed framing or production camera admission", + "spriteKitCornerChecks" : 784, + "visibilityConflicts" : [ + { + "canvasVisible" : false, + "focus" : [ + 479.41839764447917, + 479.41839764447917 + ], + "player" : [ + 18, + 18 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 237.20310216782971, + 237.20310216782971 + ], + "requiredBackdropOvershootXY" : [ + 242.21529547664946, + 242.21529547664946 + ], + "rootVisible" : false, + "zoom" : 1 + }, + { + "canvasVisible" : false, + "focus" : [ + 1824.5816023555208, + 1056.5816023555208 + ], + "player" : [ + 2286, + 1518 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 2134.6791488260787, + 1366.679148826079 + ], + "requiredBackdropOvershootXY" : [ + 310.09754647055797, + 310.0975464705582 + ], + "rootVisible" : false, + "zoom" : 1 + }, + { + "canvasVisible" : false, + "focus" : [ + 1327, + 1056.5816023555208 + ], + "player" : [ + 1327, + 1495 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 1394.8883476483186, + 1124.4699500038394 + ], + "requiredBackdropOvershootXY" : [ + 0, + 67.888347648318586 + ], + "rootVisible" : true, + "zoom" : 1 + }, + { + "canvasVisible" : false, + "focus" : [ + 383.53471811558336, + 383.53471811558336 + ], + "player" : [ + 18, + 18 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 191.09974003446681, + 191.09974003446681 + ], + "requiredBackdropOvershootXY" : [ + 192.43497808111661, + 192.43497808111661 + ], + "rootVisible" : false, + "zoom" : 1.25 + }, + { + "canvasVisible" : false, + "focus" : [ + 1920.4652818844165, + 1152.4652818844165 + ], + "player" : [ + 2286, + 1518 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 2180.7825109594414, + 1412.7825109594417 + ], + "requiredBackdropOvershootXY" : [ + 260.3172290750249, + 260.31722907502512 + ], + "rootVisible" : false, + "zoom" : 1.25 + }, + { + "canvasVisible" : false, + "focus" : [ + 1327, + 1152.4652818844165 + ], + "player" : [ + 1327, + 1495 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 1393.0498700172336, + 1218.5151519016501 + ], + "requiredBackdropOvershootXY" : [ + 0, + 66.049870017233616 + ], + "rootVisible" : true, + "zoom" : 1.25 + } + ] +} diff --git a/docs/review/hud-safe-camera/index.html b/docs/review/hud-safe-camera/index.html new file mode 100644 index 00000000..ccd43c81 --- /dev/null +++ b/docs/review/hud-safe-camera/index.html @@ -0,0 +1 @@ +HUD-clearance comparison

Player framing clear of the HUD

The revised candidate measures the rendered HUD and keeps the full player canvas clear. This fixes the health-bar overlap in this encounter. Static diagnostic capture only: depth, boundary art and moving camera behavior remain unresolved.

Before: visible canvas, HUD overlap

After: HUD clearance

1× retains all four enemy canvases and cameras 5/6/7. 1.25× loses enemy 151 and cameras 6/7. Hostile projectile 163 is on screen at both. Focused test passed; neither zoom is approved. Bright outlines remain diagnostic.

\ No newline at end of file diff --git a/docs/review/knee-transition/README.md b/docs/review/knee-transition/README.md new file mode 100644 index 00000000..fd832105 --- /dev/null +++ b/docs/review/knee-transition/README.md @@ -0,0 +1,13 @@ +# Knee transition in the whole-character source cycle + +Status: source joint treatment candidate, not art admission. + +An authored 2.2-unit-radius joint cover is centered on each solved knee. Its anterior direction follows the knee's displacement from the hip-to-ankle line, keeping the pad on the front of the bend. Retained knee-pad pixels map only to the anterior sector; the rear uses provisional plain cloth. The thigh's longitudinal paint mapping now stops before the original pad region so that the pad is not stretched along the thigh and duplicated onto the joint. + +The joint participates in the shared lower-body depth buffer. The sixteen-pose sheet was inspected: the previously exposed calf ends are covered in the reviewed recovery poses. The overall source still has weak boot detailing, repetitive calf cloth and simple torso/coat motion. This does not establish complete joint-range acceptance, anatomical accuracy, final proportions or benchmark fidelity. Radius and texture mapping are explicit authored choices, not recovered anatomy. + +check_joints.py verifies all 32 projected knee-center samples are opaque and have finite surface depth in front of the source joint center. This is a narrow coverage check, not proof that every contour/intersection is correct. Assembly reproduces sixteen distinct fixed-canvas images and retains the existing 0.5-second source duration; slow GIF uses 125ms/frame. Both scripts completed exit 0. Original source art remains preserved in the archive. + +Authority: SS-specs d602775 controlled-character-source.md/BP-002/BP-008, which requires authored hidden surfaces and pose-range review. No active runtime code/art/metadata or specification pin changes. Latest clean core result remains 773 tests in 109 suites; no new simulator/device acceptance. + +Reproduce with Python + NumPy + Pillow: assemble.py, then check_joints.py. The archive includes the exact layered source, rig, pose samples, boot/calf images and depth arrays, editable thigh/joint/assembly code and review artifacts. Next remains boot/material refinement and whole-source motion/occlusion review before the four-facing and real-renderer travel gates. diff --git a/docs/review/knee-transition/assembly-record.json b/docs/review/knee-transition/assembly-record.json new file mode 100644 index 00000000..54376a97 --- /dev/null +++ b/docs/review/knee-transition/assembly-record.json @@ -0,0 +1,214 @@ +{ + "status": "WHOLE_CHARACTER_SOURCE_CANDIDATE_NOT_ADMITTED", + "cycleSeconds": 0.5, + "previewFrameMilliseconds": 125, + "controls": { + "shoulderDegrees": 6, + "elbowDegrees": 4, + "coatHemPixels": 4, + "bodyBob": "derived from authored pelvis height" + }, + "controlAuthority": "Authored candidate values, not research-derived acceptance criteria", + "depthPolicy": "shared per-pixel source depth for both boots/calves/thighs; coat and torso retain front-layer policy", + "limits": [ + "Thigh plus authored anterior knee-cover surface; rear cloth is provisional", + "Torso/coat are still layered rather than part of the lower-body depth buffer", + "Boot proxy materials remain below benchmark", + "One facing only", + "No real-renderer world-travel test" + ], + "frames": [ + { + "frame": 0, + "time": 0.0, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 61, + "finiteDepthPixels": 7192, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "0c818c873759a3f7238441182cf7c083fbf2557ea0fb59b92343d084afdfc3e1" + }, + { + "frame": 1, + "time": 0.03125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 176, + "finiteDepthPixels": 6462, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "881cc09cf840b736fa038efb8881da42f210f9a06f4e80b3ca00c9cda6ce950a" + }, + { + "frame": 2, + "time": 0.0625, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 333, + "finiteDepthPixels": 6336, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "6af01d2da77f38740650f35382fc4e28606aa7257561acd8cc6b1cd9ecf81af8" + }, + { + "frame": 3, + "time": 0.09375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 35, + "finiteDepthPixels": 6368, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "806a31d2a21f5da499dd2572b88b15ce381bd53cc6c20d6cc800ba92cddbd38c" + }, + { + "frame": 4, + "time": 0.125, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 37, + "finiteDepthPixels": 6618, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "2bc3726df12c23484e9951c7edc314c12cc3ba943c9efa336c307b5b53b93014" + }, + { + "frame": 5, + "time": 0.15625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 52, + "finiteDepthPixels": 7288, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "da2cb9e7974da6fb423b1b211660b4c2fe5e3f78c01da720515fcf9b0f99e0c6" + }, + { + "frame": 6, + "time": 0.1875, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 98, + "finiteDepthPixels": 7742, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "084b3fca8d572e8edf0261b5848642e9071c58184c9a618f94ad6dc551677679" + }, + { + "frame": 7, + "time": 0.21875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 173, + "finiteDepthPixels": 7780, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "19dc9573b3597ac8a0ac1036e9daf78a7e18c94c405cec6413b8ef388e322d32" + }, + { + "frame": 8, + "time": 0.25, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 64, + "finiteDepthPixels": 7192, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "ae1da732063fc6dd261987d82516f82d737e7c3ea38981fa5dd9f3456b7c7a5d" + }, + { + "frame": 9, + "time": 0.28125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 178, + "finiteDepthPixels": 6462, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "cdbe687dec7f14496f97516e6b91304e586806c67f6859a52e7caaf8e2326bc8" + }, + { + "frame": 10, + "time": 0.3125, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 338, + "finiteDepthPixels": 6336, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "f29764a6323ec295b6a68e1f53a80fc2d58508a57869a5a9dbe174c545b78a03" + }, + { + "frame": 11, + "time": 0.34375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 36, + "finiteDepthPixels": 6368, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "fd4c003675b8267f92ca7e31ba11dde7d2bdd6e9523da484604ed67e373c87f1" + }, + { + "frame": 12, + "time": 0.375, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 37, + "finiteDepthPixels": 6618, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "3ff63ac2fd666ff25b70436fe22921a89acd62b0ffb49ad2524c6a670c45b3d2" + }, + { + "frame": 13, + "time": 0.40625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 53, + "finiteDepthPixels": 7288, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "0f5b855baee26c6dcc08750e0d30e8aeaba2282b77c99314fd207b53c8cd9970" + }, + { + "frame": 14, + "time": 0.4375, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 103, + "finiteDepthPixels": 7742, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "4c952ba9fab95108fc35721381a79001be4d7d5d94a018602d13f28165e2fc1e" + }, + { + "frame": 15, + "time": 0.46875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 182, + "finiteDepthPixels": 7780, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "3ce3219bff4672708901ec033e9abaa069ddddc1abbe4598f45564891a9843ba" + } + ] +} diff --git a/docs/review/knee-transition/hashes.json b/docs/review/knee-transition/hashes.json new file mode 100644 index 00000000..cfaf92bb --- /dev/null +++ b/docs/review/knee-transition/hashes.json @@ -0,0 +1,132 @@ +{ + "thigh.py": "21e3bc693b6efc0cef9975337a5c892e2d52defac83a51315eec2d486f540e4a", + "joint-verification.json": "1225950fa61c7b8c9708eb6ff6d3d88b66fba0fb276ee57171efbc6da6f97777", + "assembly-record.json": "14873a800391f4e2a82ae2cf7f4b5f1f8b1d33228effa52bdcfe456f59072842", + "sixteen-character-poses.png": "64e5455ff0897c3cc9ec220169fc0536cca510def7929465f00e2e40b87f9aac", + "assemble.py": "f9571e78ed1f703fc3a8ec23682a5c628af4aa8f92db51fcae662dd35e09303b", + "README.md": "01b167c5b73f6ba069dd6953010c187c4720496b0ff777935ec83a44da309643", + "slow-character-cycle.gif": "3c49d7f6302fafd946fe1acd0865a775e53f16c70a99f7d86356e126a9714de3", + "check_joints.py": "48c56b165a9c7fe993945c0b62a6b5288e913dad464b2f16e7d1dc1461391a4b", + "source/samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "source/body-rig.json": "c1d53f25495c4e17bd3f1f4df1b0e0e87bd047872420625642a88b8cdc26530b", + "frames/14.png": "0698a6ee9ede4a2d3502a979c252217f0995092f4562937f8a67bae34574d440", + "frames/00.png": "944e9bccc3f9b3c75d19db8ad3d981b7c2a1e3fb4dff0ad1d6899b9732dc0972", + "frames/01.png": "d8a397b67052de45ce97958b9f671c7130f60adb63b9bd68053d4ecaff4a3924", + "frames/15.png": "ccaad8d12ddc326e38b168a90c25e3af864441a6a66113ce16963236356d7ab4", + "frames/03.png": "aeef83e573d140873ecbe4c8aafd37256a509f1292b70085aa3ef2e86147cd4e", + "frames/02.png": "206dfe3d2a5044f8f777abbeddadd061d5f57f72b323607afee6f66bef837eaf", + "frames/06.png": "5dd031e78ec6330eafba02d2eaca0d234a7aab8d4a2b6a8278a7883700ba0d9e", + "frames/12.png": "196099adfdc23148be79e399fe70b0b6f220b7e4d168b57958b0d65b0f7ce272", + "frames/13.png": "e15104f0a2a8e932a6e3a31f421ae5c644ce443cb8e660e35dc891e03368387a", + "frames/07.png": "3cd903ea88d2babb21b26ba9ad5096382cfae885a6692c308fc2f089ab2b0824", + "frames/11.png": "7dbd97c0b5862ad7f2913b3d98983bdd9f37b316161a89e36072719e34d6cd9a", + "frames/05.png": "7195c4dcd21c35cc5f12afeff0db501a57050e32e253c63236aac0cbc20463bf", + "frames/04.png": "5f65f1521876d77f3200c1db267afabe26ac52d1dcd043002c441b1c979b538c", + "frames/10.png": "4160d4a87f77718c25889621e734d4dc15bda67ca06990bb1be76d4514a47324", + "frames/09.png": "01bec8f49f7d4a5867f4d7575c1277445221e9ea7a23b9c5248adb165b046b68", + "frames/08.png": "9cc3c1dc68e8de4e94f70647f8a549e4d17ea30c60dd61ee32d7dff3dd8a7aac", + "source/body-source/left_boot_hidden.png": "703a1b66afb35559cafd60231df1ba6439550fd4ef0da7e33e491b10004d56da", + "source/body-source/left_shin_boot.png": "58eb39c047ebb4f20aaae08ec63a6052624d54f5ea82bb2b7ca60f4847843593", + "source/body-source/right_thigh.png": "92bb25e717a8704dd6147e3d42d61a039a16e0a3fd8953b6b4838b8171599085", + "source/body-source/left_thigh.png": "d56129dd205b54dcf6a8a55a65f2eba79bd6ed062fb03db85cea4a8a2aefc4bb", + "source/body-source/left_knee_hidden.png": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29", + "source/body-source/left_elbow_hidden.png": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac", + "source/body-source/left_shoulder_hidden.png": "635f66fb1d4198ea9b3d8ac719e1df8aacedd1cdc2b9e44c4c3c219b653fc1e5", + "source/body-source/right_upper_arm.png": "c033da2620b7cf8fab8d06c34a344005bfed86f8967004a5be0a33306c0c8690", + "source/body-source/left_coat_tail.png": "932a93161bd638df053f33b58d82a57e722eaa60cbadc95a71274f8a42d948f4", + "source/body-source/right_forearm_hand.png": "64eeb0b1ce4c40176b84b4c9153e42f2bc2d341b4aa480fc879f9e1ebb6cffbe", + "source/body-source/right_boot_hidden.png": "e5f9d6d93d2baac11c0d3b72ecfb32ce36e921b084317a05687c25a4a3a63a52", + "source/body-source/right_shin_boot.png": "4105dea24e6add878d02a7b4afa77de277c48780ac7ea37c058d1802c49243c5", + "source/body-source/left_forearm_hand.png": "168ac896495617d0d076c40c0d297affd8bbf6e2c645b18b28d3362d37bd51a4", + "source/body-source/hood.png": "061546675424a684d3470974a611d886bdde8192b41d09c5eaf6604cd4bfd183", + "source/body-source/left_boot.png": "162f9554e7b38a3d33dd58683c4021a4da91a79ff0aaf1c4c2639b1de6b0f232", + "source/body-source/right_boot.png": "60ecc1a390005e0ce07a622fac7e88da8d074b603e363549fd33eb35656e3559", + "source/body-source/right_elbow_hidden.png": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4", + "source/body-source/right_coat_tail.png": "585f21888a103ec52d494d1de1c992cba654936215f097a7ae7ddc95e870339b", + "source/body-source/right_knee_hidden.png": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288", + "source/body-source/torso_coat_equipment.png": "6fc702c5b5c4f1ad123d3862da795d539190dad9d609d49923f2bf3c9d952baf", + "source/body-source/right_hip_hidden.png": "5d541656fd4817ba5536f4fab469fecb42cde3ae2487a8e18ec6262da0afade1", + "source/body-source/left_upper_arm.png": "47fd20562122a6358a1b0528fc12818a53c4868499d684cf6e7fdfe7b6680d24", + "source/body-source/right_shoulder_hidden.png": "bc570fe28204d21d1924c8f416a5a2b5f058db9d3ac14ae452d59a27c170da7a", + "source/body-source/left_hip_hidden.png": "78648454e0f8abba6b1c4deb7880ed589a1baf35732e015733c851632812b49a", + "boot/frames/15-both.png": "45efa3ab4ab779d0652b576676ce02e3339cb57691b30aeb85f431a257d55170", + "boot/frames/14-both.png": "e976b404516e33957d397d83b749ffe0dd2dd7d9eeafed75217dca937bd44cb6", + "boot/frames/07-left-depth.npy": "18c8bc8c7c08d19b179217651115c411c494f0c79b1a6991c5e1b8e0a555285e", + "boot/frames/12-left-depth.npy": "0515e6833b353a4581448f6df6ac45a2f36bf24a3aee2b5fe2bc9d1503f9bca8", + "boot/frames/08-right.png": "92517e66a6080dd3033c92a1d37e2d9dbb128d648078be18a2639085c9d56f5f", + "boot/frames/01-right-depth.npy": "892a279449190b82dd3c720cf21e8434b206441e82f00e38b436fc8d62330df1", + "boot/frames/08-left-depth.npy": "e03e61ea4bc3bdfc0e1a79743d916a59873efd789bdb44602d68095e4122751c", + "boot/frames/05-left.png": "4593ecf7f8bb4d401405d36e403fe39a3a7bd9535b176645514fe4fda3210896", + "boot/frames/04-left.png": "98e3338080173515e1370e33d89bb6cf8dcd0ccc53e9309b4b1a65a1c58165ec", + "boot/frames/11-right.png": "438e678f5d0f364c4224d00f041a296ff4f39edd935a05361b2e0e0c1fc1a31c", + "boot/frames/15-left-depth.npy": "6988ebd45d559ea1068fe5103f998fbf83a77d48303a04c263557f15b9b3af46", + "boot/frames/00-left-depth.npy": "a310d282d9811619ad830c036fe48f767a528a34a4c6ebcc2a80f13fa00bfa0a", + "boot/frames/05-right.png": "3ca9e33d3dcab9a9567f62dc6765b7b55206c7d4d0baac95e30af7bbd3285bd4", + "boot/frames/01-left-depth.npy": "af6398dd4e5920ffb6b071376c36562abb26325b647dbe040f06d38b9c26aa35", + "boot/frames/14-left-depth.npy": "ecaef02ee3fbbd6fae4abd6fbf135e810c074cc0eda501d309ca6b23d19fc4c4", + "boot/frames/02-both.png": "8ef05ea97b15a25a3f3139c3aaeef659ec13e7279382a42907eb9681494c9400", + "boot/frames/03-both.png": "be0ce7bf905401c1592133e4f848a755204e7e7ae17aa8cd120aa40bb3456e49", + "boot/frames/10-right-depth.npy": "1552bc5db67aba59efc13d479181e6549b4bf1e23b5d966f070cec1c865323bf", + "boot/frames/09-right-depth.npy": "dd23ae0ad70ce2669332e1704825521b8cd3c568cafb3f6e5131375d93811f7e", + "boot/frames/09-left-depth.npy": "2b2312148d09a895b237023cec0278364384e1330ff00b40b7390b1e507b804e", + "boot/frames/12-left.png": "bfde02ad84e29fd856eda5d08a1f409d52d466e81e3e1f1dcae0fc93ed2fb443", + "boot/frames/13-left.png": "119a804a9343fd960d5ef2359f1464dc0ef1dc77790e1ba2c2d609fbf5eb7b7b", + "boot/frames/06-right-depth.npy": "2d5a859520f001ff8ed9d0bd6c9010058c77c26b6d9bb4b48dce8405bd95e2d5", + "boot/frames/13-left-depth.npy": "2cf373b6507f2dea471c1844534343f26f322c8fd8e6f87ba242d0e920a8976d", + "boot/frames/06-left-depth.npy": "cd4c4113eeb1d8a4a5c18ffc82153f2d2a63b617072a933e242e0f32cba1bec1", + "boot/frames/08-both.png": "a9570dea4b4c6aa4b4c0fc02476ca2dd6d57d7ada1bd88121b256d44695a73b5", + "boot/frames/09-both.png": "e418ea18bd33f6d3631136a8b04a6814487fa2a75455e12900bc0a2899e0d978", + "boot/frames/03-right.png": "9ed653794b143a45ce2b13de99855c47fe123e6945dc3a8c87f0fd6a92158007", + "boot/frames/05-both.png": "9b75a5cee46a4dcd92a73dd487e2829a4db1f944cc6b9f4067f83be90417bffd", + "boot/frames/11-right-depth.npy": "7c797e41b5d5e2ee2405f0b2b73506ead5d3cdb11a407c9ad37f844e63924f9e", + "boot/frames/04-both.png": "f9d8072a2bdb5d322f9a2c6c5c9660ec7a12b71eb3b9da31be6b9ba87c0eac9c", + "boot/frames/11-left-depth.npy": "982bf177af3674e0653077f906b1d95faa7508e4bc4ee94988ee15328a7b5016", + "boot/frames/04-left-depth.npy": "05652ce0548e9bf95ad671c66d2eeef9dc5e3be166c46bda29d92c2d069fc207", + "boot/frames/09-right.png": "2ecaa008fbe396ab6be1d374dfe0aae67535cb79e3a1f920271ce0328da25be3", + "boot/frames/08-right-depth.npy": "984f488f393f62e02aafed0b61d92177a1e53088ed28430ec4c6e97f78f31672", + "boot/frames/15-left.png": "e98db8b2918d7ff2af5c6fd5af45897edb29973147097d43e0ffa43ce0e8ca0d", + "boot/frames/14-left.png": "6d0dbecf48a406c683f58bdf1eca34bf2e3c231bd5eaa087505a4bee09875aa3", + "boot/frames/07-right-depth.npy": "875a41ce82406df39b7394a59476f66bb20036e0e4924e2324f916e91fa9aafd", + "boot/frames/03-left-depth.npy": "2e687fea63cf8bba126b7e470fb698d616c2c83c2a1c73590f47d99b6e1b8733", + "boot/frames/04-right.png": "f076feb7b479488aee49df64feec27450160c70b74b4135c6c66f7b7cde74174", + "boot/frames/10-right.png": "8e04229dd95bc721bbcf6fe71ace86ec110e2c630d4b7a14d7c12a50687d7154", + "boot/frames/08-left.png": "6bdfced7f67bdd4545161d86cff6c7c6c788a1670adefadafe7f371c17764631", + "boot/frames/09-left.png": "095187ac042d1f40f15bedbadd0b0f91e3b28c6c1457e682003da84056b7839a", + "boot/frames/12-both.png": "22143120f53a45a7e914978a21333c308c92faec4d52116758d3a001f91330a8", + "boot/frames/13-both.png": "674388598fcb4267161665aa54564b72413e91fb98f136d54a70755638c924f4", + "boot/frames/00-right-depth.npy": "97fb41519222e497bbb9d60937062ee48d46e92ec78d8b676ddafcae2520278f", + "boot/frames/02-left-depth.npy": "aedb32ba85b3771c6bb033a3338dec1566d637a0a535e0241803fd477092a007", + "boot/frames/02-right.png": "c7d4a09de1a0d3d4cbc50942388614ccc660a59332ee023d21e7167e3d2cab1d", + "boot/frames/02-left.png": "576718b0b31d5601fc030dc5309fc85f31232ce0b6d762e4ce496229d6ae7785", + "boot/frames/03-left.png": "e9146223f32ec60408ab594164885ba0134ce519194f1f49a7d6f965a5d21256", + "boot/frames/05-left-depth.npy": "e0b1df9ddcbb2cb7cacac79a14ed7b4246885f0f0eec183fde14035fc54ba8eb", + "boot/frames/10-left-depth.npy": "9abcf9370f2e3a6b984b1231ae478520120bd4a6e2de092c385084b458afa42e", + "boot/frames/11-left.png": "41360aa65852a65fbfb022a9f2adfb38933fae0833b49005b9ff2f52dc203729", + "boot/frames/10-left.png": "14fee6e5a1a379502974da5746124f53120aa47e1d2a56c8377b6a5473f92843", + "boot/frames/13-right-depth.npy": "39b84b669df7cf9ad58589a926a268562ee39c9a8d0edd82e8ecc70fa7f3d599", + "boot/frames/01-both.png": "ecc39484c9e4cb8e0e93cf79d444587b30025816d1e67f9b07ff519066f5be23", + "boot/frames/13-right.png": "b1651a4b492e9e76761750aa3c397cb3926a2826060f6c105dfd8662c65c0a5a", + "boot/frames/00-both.png": "1474cc02dcbc0e57a822380b6d0c3450c0ee5251e08be299e19d6d672400f4e8", + "boot/frames/07-right.png": "99f61f0785cb6cbce1f422b9785c4a80a905ce7a1cbe09846b153a13b8a12ea2", + "boot/frames/05-right-depth.npy": "38d9d9e6df5c3c4244f04d758ee0f16f3310bf18c054615285f68a3a00c6a815", + "boot/frames/02-right-depth.npy": "621721aacf40c8d14c86b64b91a62ddbd44feb6a4ec06f459b5f527d49ef7f26", + "boot/frames/06-left.png": "b41612324fcc6f88a8025cf48c751f7b0c7600f25bc95dcc52695aba0b02a8fe", + "boot/frames/07-left.png": "8f8be1728b3d9939323b64bdfed7f15da0a831c1d62358327aa7f0493414a8e0", + "boot/frames/14-right-depth.npy": "2611d42d3ecf0a2720954af9713bd786655dfaf5df7e7fe38e51d582bd4e5c36", + "boot/frames/15-right.png": "43d9131ad01546ee8baa791b4294c1d0d49e4eef59ff4f3ec29250a19800b697", + "boot/frames/01-right.png": "4345cbb9398137c95fb2327056a38a12b21795a02c44bec14e4057f8cd4737a0", + "boot/frames/01-left.png": "a4a35a23ab18b4b80f1aac56e16f231024ab0c07aa4ea2c4c9b7ed7bfe6c5924", + "boot/frames/00-left.png": "9dcefca41a06a873828f6d565176fe376e45cde54c13c2cbbbb0ac64e02cbbd5", + "boot/frames/03-right-depth.npy": "df9fec4007e10b3f594876757ccad16e6bcb958ccda8b3d7289d60bc04552544", + "boot/frames/06-right.png": "05234856ed66a63bfd7690fd2a123fd0974073d989535a5b1e6a29bb09f5ad7d", + "boot/frames/15-right-depth.npy": "d095357a7f84c5f59647dbc7c59a42df57fbbca2290ac7964ff08d7ab9005140", + "boot/frames/11-both.png": "04e4945650fe7f6d2e50f27d843eb8cca9199da54ced907cd62512fb5027f8b8", + "boot/frames/12-right.png": "48b1c32752e2878c69af9768c14f0c5fdb76f67bef010cf3a8a03bf268593f59", + "boot/frames/10-both.png": "8ce4c16ba5877cfe2bc0ee193071b17dc5ce710b5267a978676ac3a2bb475251", + "boot/frames/12-right-depth.npy": "dec468035f15808f0b05191dbd73fa8f922324656b10c665818407f1ebb5acb9", + "boot/frames/06-both.png": "659397ef9683afd7dd0a12932e5e1587a71cbec8eaee388745563e0022943043", + "boot/frames/07-both.png": "409aec60ae489f890f34638c84f00925daa7ab330d0c563c1706ee9f217525c0", + "boot/frames/04-right-depth.npy": "bffdd4fc15a955b0271e8c2fbe972b650cb504bdbc5ac32e5a018f2938160168", + "boot/frames/00-right.png": "9d194649390aa1422299342ac9a7a456a23bd1669e80e88c3ce1545c3cab90c2", + "boot/frames/14-right.png": "f2a20f74760669cb1c405e70eed69c6e045bca252d3f91b2d976f74c02e7d625" +} diff --git a/docs/review/knee-transition/joint-verification.json b/docs/review/knee-transition/joint-verification.json new file mode 100644 index 00000000..68171be2 --- /dev/null +++ b/docs/review/knee-transition/joint-verification.json @@ -0,0 +1,322 @@ +[ + { + "time": 0.0, + "side": "right", + "jointCenterPixel": [ + 171, + 280 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.166170994327331 + }, + { + "time": 0.0, + "side": "left", + "jointCenterPixel": [ + 213, + 244 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.178007568498238 + }, + { + "time": 0.03125, + "side": "right", + "jointCenterPixel": [ + 171, + 286 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1655146612778893 + }, + { + "time": 0.03125, + "side": "left", + "jointCenterPixel": [ + 213, + 204 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.176586044355769 + }, + { + "time": 0.0625, + "side": "right", + "jointCenterPixel": [ + 171, + 292 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.165803126469175 + }, + { + "time": 0.0625, + "side": "left", + "jointCenterPixel": [ + 213, + 198 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.17794649433068 + }, + { + "time": 0.09375, + "side": "right", + "jointCenterPixel": [ + 171, + 280 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.167402522000115 + }, + { + "time": 0.09375, + "side": "left", + "jointCenterPixel": [ + 213, + 214 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.179110621831196 + }, + { + "time": 0.125, + "side": "right", + "jointCenterPixel": [ + 171, + 265 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.5425826337253286 + }, + { + "time": 0.125, + "side": "left", + "jointCenterPixel": [ + 213, + 234 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.17159136575194 + }, + { + "time": 0.15625, + "side": "right", + "jointCenterPixel": [ + 171, + 268 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.2272529646445687 + }, + { + "time": 0.15625, + "side": "left", + "jointCenterPixel": [ + 213, + 253 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.182530477174044 + }, + { + "time": 0.1875, + "side": "right", + "jointCenterPixel": [ + 171, + 276 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.168008575929429 + }, + { + "time": 0.1875, + "side": "left", + "jointCenterPixel": [ + 213, + 268 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.174737275518787 + }, + { + "time": 0.21875, + "side": "right", + "jointCenterPixel": [ + 171, + 274 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.169153601923295 + }, + { + "time": 0.21875, + "side": "left", + "jointCenterPixel": [ + 213, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.182045640794975 + }, + { + "time": 0.25, + "side": "right", + "jointCenterPixel": [ + 171, + 244 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.164903439829196 + }, + { + "time": 0.25, + "side": "left", + "jointCenterPixel": [ + 213, + 280 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1792273366718966 + }, + { + "time": 0.28125, + "side": "right", + "jointCenterPixel": [ + 171, + 204 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1644228548663236 + }, + { + "time": 0.28125, + "side": "left", + "jointCenterPixel": [ + 213, + 286 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1776805640668826 + }, + { + "time": 0.3125, + "side": "right", + "jointCenterPixel": [ + 171, + 198 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1674681230308543 + }, + { + "time": 0.3125, + "side": "left", + "jointCenterPixel": [ + 213, + 292 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1762490442394995 + }, + { + "time": 0.34375, + "side": "right", + "jointCenterPixel": [ + 171, + 214 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1669443875362333 + }, + { + "time": 0.34375, + "side": "left", + "jointCenterPixel": [ + 213, + 280 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.175420849678744 + }, + { + "time": 0.375, + "side": "right", + "jointCenterPixel": [ + 171, + 234 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1593634440932803 + }, + { + "time": 0.375, + "side": "left", + "jointCenterPixel": [ + 213, + 265 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.499657818776436 + }, + { + "time": 0.40625, + "side": "right", + "jointCenterPixel": [ + 171, + 253 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.169471893285312 + }, + { + "time": 0.40625, + "side": "left", + "jointCenterPixel": [ + 213, + 268 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.2041344946141095 + }, + { + "time": 0.4375, + "side": "right", + "jointCenterPixel": [ + 171, + 268 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.161673375584794 + }, + { + "time": 0.4375, + "side": "left", + "jointCenterPixel": [ + 213, + 276 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.17603315822112 + }, + { + "time": 0.46875, + "side": "right", + "jointCenterPixel": [ + 171, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1689395636681255 + }, + { + "time": 0.46875, + "side": "left", + "jointCenterPixel": [ + 213, + 274 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1796230843026763 + } +] diff --git a/docs/review/knee-transition/sixteen-character-poses.png b/docs/review/knee-transition/sixteen-character-poses.png new file mode 100644 index 00000000..c1fc1b61 Binary files /dev/null and b/docs/review/knee-transition/sixteen-character-poses.png differ diff --git a/docs/review/knee-transition/slow-character-cycle.gif b/docs/review/knee-transition/slow-character-cycle.gif new file mode 100644 index 00000000..b1f87a59 Binary files /dev/null and b/docs/review/knee-transition/slow-character-cycle.gif differ diff --git a/docs/review/knee-transition/source.zip b/docs/review/knee-transition/source.zip new file mode 100644 index 00000000..9f51ba03 Binary files /dev/null and b/docs/review/knee-transition/source.zip differ diff --git a/docs/review/layered-source/adoption.json b/docs/review/layered-source/adoption.json new file mode 100644 index 00000000..36e0e9bf --- /dev/null +++ b/docs/review/layered-source/adoption.json @@ -0,0 +1,19 @@ +{ + "specificationCommit": "6c86388d5fca90b1677f78c585178d00e6fdbe8d", + "runtimeBase": "5eb18e29b34a759126d3f83d787e9ebe9797c5af", + "fileSha256": { + "SPEC_BASELINE.md": "71c20fa54d7cc9bde1f49e834bbd2e984a220ef5581573990bb3fddd00e48031", + "Sources/SurveillanceCore/ContractVersions.swift": "0d17dca6a979958b318ca32981b9d4f180cd47cb6ef4cd42dbb1dbedb3a73a04", + "Sources/SurveillanceCore/Resources/SPEC_PIN.txt": "7ff7bde2b0d785d13951d3d90f63d53a6c08123adb9fd29472ea66446b1fe28b", + "Sources/SurveillanceCore/Resources/contracts/asset-catalog-001.json": "81952d89457031cedc106197aa010a252a2bf55c3264c4b777de933bef31d95c" + }, + "assetCatalogChange": "specificationCommit only; parsed entries equal", + "sourceAdmission": "NOT_ANIMATION_READY", + "productionArtChanged": false, + "coreTestResult": { + "status": "passed", + "tests": 773, + "suites": 109, + "durationSeconds": 346.035 + } +} diff --git a/docs/review/layered-source/boot-contact-study/README.md b/docs/review/layered-source/boot-contact-study/README.md new file mode 100644 index 00000000..447dcf6b --- /dev/null +++ b/docs/review/layered-source/boot-contact-study/README.md @@ -0,0 +1,29 @@ +# BP-002 / BP-008 boot attachment study + +Status: REJECTED_FOR_SOURCE_INTEGRATION. Not runtime artwork. + +## Current authority + +Reviewed SS-specs 492d921027c11d809ff18e3a35f520118e13de84, especially controlled-character-source.md and benchmark-production.md BP-002/BP-008. These already require elevated key poses, authored heel/toe contacts, source-space versus projected-space distinctions and actual world-travel evidence. No further product behavior is needed to attempt this source study. Runtime is a325cad; production sprites and contracts are unchanged. + +## Research + +Animation Mentor, [Animating Dynamic Run Cycles](https://www.animationmentor.com/blog/animating-dynamic-run-cycles/), retrieved 2026-10-14, recommends motion reference and blocking stride, down, mid-stride and push-off poses, distinguishing running by airborne intervals. This supports reviewing support and flight separately. It does not establish SS's camera elevation, support duration, stride length, contact geometry or an acceptable slip threshold. No video was inspected in this turn. + +## Experiment and disposition + +Built-in imagegen, using the retained south neutral as the sole costume/view reference. Requested one anatomical right boot in planted, toe-supported push-off and lifted recovery poses, from one elevated front camera. Exact prompt is in prompt.txt. Raw generation is retained in candidate.png. + +OBSERVED visual review: the first two boots retain nearly the same front silhouette, without a sufficiently legible heel-lift relationship. The third is substantially smaller and lacks lower-leg context to distinguish perspective foreshortening from scale drift. All three show open cuffs; they are isolated boot illustrations, not evidence of coherent ankle attachment. The output cannot establish planted or lifted ground contact. No automatic image metric was used to overrule this visual failure. + +Disposition: do not crop, normalize or stretch these into approved attachment variants. Do not update rig.json, active textures, animation metadata, or admission records. Preserve the original source and its boot overlap work. + +## Next source action + +Block the SOUTH lower-leg chain in contact, loaded support, push-off and recovery before painting more attachment variants. Show knees, ankles, a ground plane and explicit proposed contact points in the same view, with retained-character scale alongside. This is an authored geometry/pose experiment, not a reconstruction of hidden anatomy from the neutral raster. Verify the selected pose actually changes visible surfaces, then paint those surfaces using the original material. Compare both anatomical sides without mirroring asymmetric equipment. + +Only after those keys preserve anatomy, costume and contact readability should the south 16-frame cycle be in-betweened. Maximum travel remains 240 units/second and the initial cycle remains 0.5 seconds; actual runtime positions, including stopped/colliding motion, remain the BP-008 authority. No new support interval, projection angle or gait policy was selected here. + +## Verification scope + +Original neutral SHA-256: see provenance.json. Candidate alpha and file hash recorded there; alpha is storage evidence only. This change contains a review image, prompt, provenance and this note. It does not change executable code or production resources. Existing core result: 773 tests passed at f724a50, documented in docs/review/projected-motion/core-tests.log; not rerun or claimed as art validation. Full benchmark, camera, environment, four-facing animation, world-travel and device gates remain open. diff --git a/docs/review/layered-source/boot-contact-study/candidate.png b/docs/review/layered-source/boot-contact-study/candidate.png new file mode 100644 index 00000000..ffd46aa8 Binary files /dev/null and b/docs/review/layered-source/boot-contact-study/candidate.png differ diff --git a/docs/review/layered-source/boot-contact-study/prompt.txt b/docs/review/layered-source/boot-contact-study/prompt.txt new file mode 100644 index 00000000..a8b3cd4a --- /dev/null +++ b/docs/review/layered-source/boot-contact-study/prompt.txt @@ -0,0 +1,6 @@ +Use case: precise-object-edit. Asset type: source attachment study for an elevated top-down game sprite. +Input image 1 is the costume/material and elevated viewing reference. Create ONLY the player's anatomical RIGHT boot (the boot on the LEFT of the attached front-facing character), isolated in a clean 3-column study. Transparent background. No character, leg, text, floor or cast shadow. Each boot complete, same worn dark brown/olive leather, laces, rounded modest toe, dark thin practical sole and ankle cuff as reference, same scale and lighting, generously separated. +Column1: planted neutral boot, same elevated front view as reference. +Column2: push-off with toe contacting ground and heel lifting, ankle tilts forward, preserve the same elevated FRONT camera (do not rotate camera to a side view). This is a new authored attachment, not just a planar rotated copy. +Column3: recovery with foot lifted behind the body and toe pointing downward, from the SAME elevated FRONT camera; show only surfaces actually visible in that orientation, appropriate foreshortening. Do not show underside simply to display it. +Retain restrained painted crisp game-art texture and original boot silhouette/material. No added armor, oversized sneaker soles, new buckles or glowing outline. This is one right boot in three physically different poses; not left/right footwear or a three-view product turntable. Avoid photoreal product rendering. \ No newline at end of file diff --git a/docs/review/layered-source/boot-contact-study/provenance.json b/docs/review/layered-source/boot-contact-study/provenance.json new file mode 100644 index 00000000..6df4c695 --- /dev/null +++ b/docs/review/layered-source/boot-contact-study/provenance.json @@ -0,0 +1,18 @@ +{ + "status": "REJECTED_FOR_SOURCE_INTEGRATION", + "tool": "built-in imagegen", + "source": "outputs/SS-boot-overlap/neutral.png", + "sourceSHA256": "c3710d37281b43c1a1949472ae39ece353c8981be72acd42b94c432c4dc037fd", + "candidateSHA256": "7c36c5602b75512532cc29dfb48c6a413133b459b57a3d2245a7f5c002c7f1b7", + "size": [ + 1774, + 887 + ], + "mode": "RGBA", + "alphaExtrema": [ + 0, + 255 + ], + "promptSHA256": "e0c24bf5aa57dbddf14526caa9291186115ad70086676c224e76eee4b9792592", + "integrated": false +} diff --git a/docs/review/layered-source/boot-overlap/README.md b/docs/review/layered-source/boot-overlap/README.md new file mode 100644 index 00000000..7788d541 --- /dev/null +++ b/docs/review/layered-source/boot-overlap/README.md @@ -0,0 +1,11 @@ +# Boot overlaps and combined source check — BP-002 / BP-008 + +The twenty-four-layer south source adds two boot overlaps cut from the retained upper-boot leather pixels. Both source rectangles and original layer hashes are recorded in overlap-provenance.json. The reused pixels are concealed by the original opaque parent in neutral. They are a texture overlap, not a newly discovered hidden heel or anatomical model. + +The south source now draws the front coat panels and belt/torso before the thighs in compositing order (above the legs in the saved top-to-bottom stack). This corrects the observed source pose where the moving thigh crossed in front of a coat panel. It is an authored south-facing order, not a general solution for all facings or movement phases. + +Neutral remains exactly unchanged. Both signs of the small ±8° boot controls were inspected in enlarged comparisons; the visible cut gaps close. One combined pose exercises shoulders, elbows, hips, knees, boots and ±4px cloth deformation together. Six saved diagnostic poses include neutral, the four isolated boot extremes and the combined pose. These are diagnostic holds, not a locomotion animation. The GIF has not been reviewed in the runtime renderer. + +Use Python 3 and Pillow with render_source.py, rig.json and source/. Joint angles and cloth offsets can be passed through --angles-file and --deformations-file respectively. diagnostic-poses.json records the comparison inputs. Existing --pose values remain the preceding rig's source poses; use the explicit files for the new combined comparison. + +Still required: an authored heel/toe contact model, elevated limb depth/foreshortening, support/flight keys, full gait and four-facing review, actual world-travel comparison and device evidence. A boot seam closing does not establish correct contact or foot rotation. Production resources, timing metadata and gameplay remain unchanged. diff --git a/docs/review/layered-source/boot-overlap/boot-detail.png b/docs/review/layered-source/boot-overlap/boot-detail.png new file mode 100644 index 00000000..20004c22 Binary files /dev/null and b/docs/review/layered-source/boot-overlap/boot-detail.png differ diff --git a/docs/review/layered-source/boot-overlap/boot-opposite-detail.png b/docs/review/layered-source/boot-overlap/boot-opposite-detail.png new file mode 100644 index 00000000..9df86f75 Binary files /dev/null and b/docs/review/layered-source/boot-overlap/boot-opposite-detail.png differ diff --git a/docs/review/layered-source/boot-overlap/pose-05.png b/docs/review/layered-source/boot-overlap/pose-05.png new file mode 100644 index 00000000..a63ad2d9 Binary files /dev/null and b/docs/review/layered-source/boot-overlap/pose-05.png differ diff --git a/docs/review/layered-source/boot-overlap/south-boot-overlap-source.zip b/docs/review/layered-source/boot-overlap/south-boot-overlap-source.zip new file mode 100644 index 00000000..a3d89b52 Binary files /dev/null and b/docs/review/layered-source/boot-overlap/south-boot-overlap-source.zip differ diff --git a/docs/review/layered-source/boot-overlap/verification.json b/docs/review/layered-source/boot-overlap/verification.json new file mode 100644 index 00000000..063c1eef --- /dev/null +++ b/docs/review/layered-source/boot-overlap/verification.json @@ -0,0 +1,9 @@ +{ + "neutralExact": true, + "sourceLayers": 24, + "diagnosticPoses": 6, + "contactModel": "NOT_AUTHORED", + "runtimeAdmission": false, + "visualReview": "Both \u00b18-degree boot endpoints and one combined pose inspected; diagnostic scope only", + "sourceGarmentOrder": "south front coat and torso above thighs; other facings not validated" +} diff --git a/docs/review/layered-source/cloth-deformation/README.md b/docs/review/layered-source/cloth-deformation/README.md new file mode 100644 index 00000000..ec17f6a8 --- /dev/null +++ b/docs/review/layered-source/cloth-deformation/README.md @@ -0,0 +1,21 @@ +# Anchored coat-tail deformation — BP-002 source study + +The existing twenty-two source layers now use ten rigid joint controls plus two independent cloth deformation controls. Coat tails no longer rotate as rigid detached pieces. Each tail uses six authored rows with hem weights [0, 0, 0.15, 0.4, 0.7, 1]. The top two rows remain fixed while the lower rows translate horizontally. The PNG exporter samples a strip mesh; no runtime mesh engine or cloth simulation is added. + +This follows the documented authoring pattern of keeping garment attachment vertices tied to the body while separate controls affect the rest of the garment, illustrated in Spine's mix-and-match example: https://esotericsoftware.com/spine-examples-mix-and-match . The particular rows, weights and diagnostic ±4-source-pixel offsets are authored study parameters, not externally validated SS settings. + +## Reproduce + +Requires Python 3 and Pillow. rig.json contains layer bindings and deformation rows. Put a JSON object such as {"right_coat_tail": 4, "left_coat_tail": -4} in a file, then run: + +```sh +python3 render_source.py --pose 0 --deformations-file cloth.json --output pose.png +``` + +The cloth values are horizontal offsets in source pixels, not angles. Other joint controls retain clockwise image-space angles through --angles-file. Zero deformation returns the original image without resampling. Fixed attachment rows are copied unchanged to avoid alpha-rounding differences during export. + +## Evidence and limits + +Neutral is exact against the preceding source. In all eight diagnostic poses every composite pixel above source row 210 remains unchanged, including each cloth attachment. Nonzero offsets change the cloth pixels. Neutral and both extrema were visually inspected in cloth-endpoints.png. The GIF is a small cloth-control study, not accepted secondary animation or a locomotion cycle. + +The torso is stationary in this comparison. Combined body movement, depth/overdraw, garment follow-through, boot overlaps, authored heel/toe contacts, full gait and other facings remain open. No production resource, active metadata or gameplay identity changed. Prior core test results do not validate artwork. diff --git a/docs/review/layered-source/cloth-deformation/cloth-endpoints.png b/docs/review/layered-source/cloth-deformation/cloth-endpoints.png new file mode 100644 index 00000000..5b124bc6 Binary files /dev/null and b/docs/review/layered-source/cloth-deformation/cloth-endpoints.png differ diff --git a/docs/review/layered-source/cloth-deformation/south-cloth-source.zip b/docs/review/layered-source/cloth-deformation/south-cloth-source.zip new file mode 100644 index 00000000..55f6c3e4 Binary files /dev/null and b/docs/review/layered-source/cloth-deformation/south-cloth-source.zip differ diff --git a/docs/review/layered-source/cloth-deformation/verification.json b/docs/review/layered-source/cloth-deformation/verification.json new file mode 100644 index 00000000..1ab33bb4 --- /dev/null +++ b/docs/review/layered-source/cloth-deformation/verification.json @@ -0,0 +1,8 @@ +{ + "neutralExact": true, + "allPixelsAboveSourceRow210Unchanged": true, + "nonzeroHemControlsChangeClothPixels": true, + "diagnosticFrames": 8, + "simulationOrRuntimeAcceptance": false, + "motionType": "horizontal anchored source deformation only" +} diff --git a/docs/review/layered-source/contact-pose-fit/README.md b/docs/review/layered-source/contact-pose-fit/README.md new file mode 100644 index 00000000..693b7f51 --- /dev/null +++ b/docs/review/layered-source/contact-pose-fit/README.md @@ -0,0 +1,25 @@ +# BP-002 contact-pose fit + +Status: SINGLE PAINTED KEY STUDY; not an admitted animation or full source master. + +The prior lower-leg block was a geometry experiment, not benchmark art. This study fits hip lateral spacing and hip projection approximately to the retained painted source, separates ankle spacing from hip spacing and uses a 3D two-segment chain with a forward pole. The proposed chain was reauthored from 25.5 to 27 units after the raised hip made a landing unreachable. No solver stretch was enabled. parameters.json records these authored choices; they are not anatomical measurements inferred from the neutral raster. + +Existing SS-specs 492d921 BP-002/BP-008 and controlled-character-source.md authorize source geometry and attachment alternatives while keeping world-travel, four-facing and complete-family review open. No new gameplay or art-admission policy was needed. The Animation Mentor run-cycle research cited in the preceding study motivates blocked support/flight keys, not these dimensions or projection values. + +## Source and review + +1. block.py and parameters.json produce the revised candidate geometry, sixteen samples and numerical diagnostics. 1,001 sampled poses remain reachable, segment residual is below 8e-15, sampled heel/toe clearance is nonnegative, and nominal continuous support contact closes. The held-frame drift finding remains 7.44 units; this is not actual renderer evidence. +2. make-guide.py places the original costume beside the contact guide. Screen annotations are approximate. The planted right leg is image-left; the recovered left leg is image-right. +3. Built-in imagegen made painted-contact-source.png from the neutral and guide using prompt.txt. The result retained the costume identity better than isolated boot variants, but the recovered ankle was visibly below its knee rather than folded behind it. +4. A single local correction, recorded in recovery-correction-prompt.txt, produced recovery-corrected-source.png. Visually, the raised boot now sits partly behind its knee/thigh and the two legs have distinct depth treatment. This is improved pose readability, not proof of a correct hidden foot model. +5. assemble.py registers the correction uniformly using two approximate hood/belt landmarks, extracts only the lower-body region and assembles it beneath the original body layers. contact-extraction.json preserves the polygon and transform. The complete original RGBA region above row199 is copied exactly; the original coat and arms also draw above the imported legs below that row. This avoids admitting generated upper-body texture changes. body-source/ and body-rig.json retain the editable original component layers. The imported leg patch is one painted key, not a fully weighted mesh or reusable locomotion rig. + +## Limits and next work + +The corrected pose remains shorter in its forward leg than the projected guide, and the hidden ankle/heel cannot be located reliably from visible pixels alone. Do not stretch the replacement to conceal this mismatch, label it a measured contact pose, or build sixteen independently generated images around it. Reconcile the authored model with reviewed painted proportions and explicit hidden surfaces, then build the support, push-off and opposite-step keys from that source. The current upper body is neutral; arm/torso counter-motion is not yet authored. + +comparison.png shows the original neutral, registered generated correction and retained-body assembly. The assembly was visually inspected. Its lower-body fold is a useful source direction, but no full cycle, complete facing, actual world displacement, runtime visual or device acceptance follows. The 384x416 working canvas permits the forward foot; it is not a change to production canvas, logical size or anchor. + +## Reproduction and provenance + +Python3 + Pillow: run block.py, make-guide.py and assemble.py. The first script validates source geometry; assemble.py verifies exact original upper-region RGBA preservation. This is offline source production, not executable game code. The prior 773-test core result remains the latest; no new runtime test claim is made for this art-only study. sha256.json records files; source.zip contains the editable study and raw images. No active texture, clip, catalog, spec pin, collision, controller or gameplay changes were made. diff --git a/docs/review/layered-source/contact-pose-fit/comparison.png b/docs/review/layered-source/contact-pose-fit/comparison.png new file mode 100644 index 00000000..6c95ff40 Binary files /dev/null and b/docs/review/layered-source/contact-pose-fit/comparison.png differ diff --git a/docs/review/layered-source/contact-pose-fit/measurements.json b/docs/review/layered-source/contact-pose-fit/measurements.json new file mode 100644 index 00000000..a8f11cfb --- /dev/null +++ b/docs/review/layered-source/contact-pose-fit/measurements.json @@ -0,0 +1,15 @@ +{ + "status": "SOURCE_GEOMETRY_ONLY_NOT_RUNTIME_EVIDENCE", + "sampleCount": 1001, + "maxSegmentError": 7.105427357601002e-15, + "minimumSoleLandmarkHeight": 0, + "maxNominalSupportToeDrift": 0.0, + "lastToFirstLocalPositionError": 0.0, + "worldDisplacementPerCycle": 120.0, + "runtimePositionsUsed": false, + "anatomyValidated": false, + "paintedSourceIntegrated": false, + "maxSampledHeldFrameNominalToeDrift": 7.440000000000007, + "heldFrameDurationSeconds": 0.03125, + "maxFiniteDifferenceVelocityMismatch": 0.0006042700133813792 +} diff --git a/docs/review/layered-source/contact-pose-fit/provenance.json b/docs/review/layered-source/contact-pose-fit/provenance.json new file mode 100644 index 00000000..802332b1 --- /dev/null +++ b/docs/review/layered-source/contact-pose-fit/provenance.json @@ -0,0 +1,7 @@ +{ + "upperBodyVisiblePixelsChangedAboveRow199": 0, + "geometryAcceptance": false, + "productionIntegrated": false, + "artworkSource": "built-in imagegen; original upper-body layers retained deterministically", + "upperBodyExactRGBAAboveRow199": true +} diff --git a/docs/review/layered-source/contact-pose-fit/retained-body-contact.png b/docs/review/layered-source/contact-pose-fit/retained-body-contact.png new file mode 100644 index 00000000..98250a0c Binary files /dev/null and b/docs/review/layered-source/contact-pose-fit/retained-body-contact.png differ diff --git a/docs/review/layered-source/contact-pose-fit/source.zip b/docs/review/layered-source/contact-pose-fit/source.zip new file mode 100644 index 00000000..8b949e2a Binary files /dev/null and b/docs/review/layered-source/contact-pose-fit/source.zip differ diff --git a/docs/review/layered-source/core-tests.log b/docs/review/layered-source/core-tests.log new file mode 100644 index 00000000..c793b749 --- /dev/null +++ b/docs/review/layered-source/core-tests.log @@ -0,0 +1,1866 @@ +Building for debugging... +[0/4] Write sources +[1/4] Copying contracts +[2/5] Copying SPEC_PIN.txt +[3/5] Write swift-version--58304C5D6DBC2206.txt +[5/7] Emitting module SurveillanceCore +[6/7] Compiling SurveillanceCore ContractVersions.swift +[7/14] Compiling SurveillanceCore AssetCatalog.swift +[8/14] Compiling SurveillanceCore ReplayEnvelope.swift +[9/14] Compiling SurveillanceCore ProceduralVFX.swift +[10/14] Compiling SurveillanceCore ArenaManifest.swift +[11/14] Compiling SurveillanceCore RunReceipt.swift +[12/14] Compiling SurveillanceCore ReleaseCandidateEvidence.swift +[13/14] Compiling SurveillanceCore Simulation.swift +[14/26] Compiling SurveillanceCoreTests AmbientMotionTests.swift +[15/26] Compiling SurveillanceCoreTests ArenaAndSimulationTests.swift +[16/26] Compiling SurveillanceCoreTests ProceduralVFXTests.swift +[17/26] Compiling SurveillanceCoreTests ReleaseCandidateEvidenceTests.swift +[18/26] Compiling SurveillanceCoreTests ClipMetadataTests.swift +[19/26] Compiling SurveillanceCoreTests DailyRunGhostTests.swift +[20/26] Compiling SurveillanceCoreTests ReadabilityFinishTests.swift +[21/26] Compiling SurveillanceCoreTests AssetCatalogTests.swift +[22/27] Compiling SurveillanceCoreTests ReplayTests.swift +[23/27] Compiling SurveillanceCoreTests CameraPlacementTests.swift +[24/27] Compiling SurveillanceCoreTests ContractVersionsTests.swift +[25/27] Emitting module SurveillanceCoreTests +[25/27] Write Objects.LinkFileList +[26/27] Linking SSRuntimePackageTests +Build complete! (14.09s) +Test Suite 'All tests' started at 2026-10-14 18:57:10.556. +Test Suite 'All tests' passed at 2026-10-14 18:57:10.559. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.003) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite CameraHousingArtTests started. +◇ Suite OriginalArtTests started. +◇ Suite AssetCatalogTests started. +◇ Suite ConeOrientationTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite TransitPatrolTests started. +◇ Suite EventCatalogTests started. +◇ Suite ContractVersionsTests started. +◇ Suite CameraFairnessTests started. +◇ Suite DefectRegistryTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite ProceduralVFXTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite GateVerificationTests started. +◇ Suite CombatCausalityTests started. +◇ Suite AudioProjectorTests started. +◇ Suite AmbientMotionTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite CameraHUDTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite RunTelemetryTests started. +◇ Suite DaemonClipTests started. +◇ Suite GameFeelTests started. +◇ Suite MedalTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite StealthTextureTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite CourtClimaxTests started. +◇ Suite SimulationClockTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite SilhouetteTests started. +◇ Suite ApproximateCueTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite CameraPlacementTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite AwarenessTests started. +◇ Suite CommitClipTests started. +◇ Suite GhostSettingTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite CameraFollowTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite VisualLanguageTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite DailyFlavourTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite CaptainCameraTests started. +◇ Suite OpeningTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite GhostRunTests started. +◇ Suite CaptainClipTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite DeterminismTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite PacingProbeTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite QuietApproachTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite CameraPresentationTests started. +◇ Suite KernelVectorTests started. +◇ Suite ReplayTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite DamageOrderingTests started. +◇ Suite HUDPresentationTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite HUDMappingTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite RunCardTests started. +◇ Suite D021CeilingsTests started. +◇ Suite ContractVectorTests started. +◇ Suite ClipTimingTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite ClipMetadataTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite TamperFloorTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite AssetIntakeChecks started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test currentIdentityIsCompatible() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test originalsAreAdmitted() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test daemonHasClips() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test ghostIsOnByDefault() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test sha256KnownVector() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test exactMigrationVectors() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test currentIdentityIsCompatible() passed after 9.243 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 9.287 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 9.287 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 9.287 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 9.287 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 9.288 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 9.288 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 9.288 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 9.290 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 9.293 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 9.293 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 9.336 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 9.336 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 9.336 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 9.336 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 9.336 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 9.336 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 9.336 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 9.336 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 9.337 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 9.336 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 9.336 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 9.336 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 9.336 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 9.336 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 9.337 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 9.337 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 9.338 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 9.376 seconds. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 9.417 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 9.417 seconds. +✔ Test originalsAreAdmitted() passed after 9.418 seconds. +✔ Test anUnawareKillIsATakedown() passed after 9.418 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 9.418 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 9.417 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 9.418 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 9.418 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 9.417 seconds. +✔ Test daemonHasClips() passed after 9.418 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 9.418 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 9.418 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 9.418 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 9.417 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 9.418 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 9.418 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 9.418 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 9.418 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 9.418 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 9.455 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 9.454 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 9.454 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 9.454 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 9.454 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 9.455 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 9.454 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 9.454 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 9.454 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 9.454 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 9.454 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 9.454 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 9.454 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 9.454 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 9.455 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 9.455 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 9.455 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 9.455 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 9.454 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 9.454 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 9.454 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 9.455 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 9.454 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 9.455 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 9.455 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 9.454 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 9.454 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 9.454 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 9.455 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 9.454 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 9.455 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 9.455 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 9.455 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 9.455 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 9.455 seconds. +✔ Test ghostIsOnByDefault() passed after 9.455 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 9.455 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 9.455 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 9.455 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 9.455 seconds. +✔ Test aFreshRunStartsQuiet() passed after 9.455 seconds. +✔ Test sha256KnownVector() passed after 9.455 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 9.455 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 9.455 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 9.455 seconds. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 9.455 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 9.455 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 9.455 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 9.455 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 9.455 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 9.455 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 9.455 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 9.455 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 9.455 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 9.455 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 9.455 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 9.455 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 9.455 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 9.457 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 9.456 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 9.455 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 9.455 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 9.455 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 9.455 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 9.456 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 9.455 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 9.455 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 9.455 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 9.455 seconds. +✔ Test mappedElementsScaleProportionally() passed after 9.455 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 9.455 seconds. +✔ Test exactMigrationVectors() passed after 9.455 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 9.455 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 9.455 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 9.455 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 9.457 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 9.455 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 9.455 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 9.458 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 9.455 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 9.455 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 9.456 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 9.450 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 9.443 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 9.443 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 9.443 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 9.455 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 9.442 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 9.305 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 9.303 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test everyProjectedClipExistsInTheContract() passed after 9.290 seconds. +✔ Test attackStatesAreUnchanged() passed after 9.290 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 9.288 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 9.288 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 9.286 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 9.276 seconds. +✔ Suite DefectRegistryTests passed after 9.472 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 9.472 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 9.470 seconds. +✔ Suite CameraFollowTests passed after 9.472 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Suite DailyFlavourTests passed after 9.875 seconds. +✔ Suite ClipMetadataV2Tests passed after 9.875 seconds. +✔ Suite ExposureFinalizationTests passed after 9.875 seconds. +✔ Suite CombatFeedbackTests passed after 9.875 seconds. +✔ Suite ClipTimingTests passed after 9.875 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite CanonicalArenaZonesTests passed after 9.875 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 9.875 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 9.076 seconds. +◇ Test unknownIdentityFailsClosed() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test nodeAndCopyAgree() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test playingIsNotTerminal() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test identityMismatchIsRejected() started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Test unknownIdentityFailsClosed() passed after 2.540 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 2.572 seconds. +✔ Test familiesMapToDistinctAssets() passed after 2.572 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 2.572 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 2.573 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 2.573 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 2.573 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 2.573 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 2.573 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 2.573 seconds. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 2.573 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 2.573 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 2.573 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 2.573 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 2.573 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 2.573 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 12.433 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 2.573 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 2.573 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 2.573 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 2.573 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 2.573 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 2.573 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 2.573 seconds. +✔ Test aCompleteGroupIsBacked() passed after 2.573 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 2.573 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 2.573 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 2.573 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 2.573 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 2.573 seconds. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 2.573 seconds. +✔ Test seedIsDeterministicForADate() passed after 2.573 seconds. +✔ Test nodeAndCopyAgree() passed after 2.573 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 2.574 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 2.573 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 2.573 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 12.449 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 2.573 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 2.573 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 2.573 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 2.573 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 2.573 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 2.573 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 2.573 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 2.573 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 2.573 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 2.573 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 2.573 seconds. +✔ Test windowsMatchTheD090Table() passed after 2.573 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 2.573 seconds. +✔ Test captainArtIsAllOrNothing() passed after 2.573 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 2.573 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 2.573 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 2.573 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 2.573 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 2.573 seconds. +✔ Test musicAssetIdsAreReachable() passed after 2.573 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 2.573 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 2.573 seconds. +✔ Test playingIsNotTerminal() passed after 2.573 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 2.572 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 2.571 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 2.573 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 2.571 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 2.571 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 2.571 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 2.574 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 2.571 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 2.571 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 2.574 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 12.449 seconds. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 2.571 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 2.571 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 2.571 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 2.571 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 2.571 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 2.571 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 2.571 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 2.571 seconds. +✔ Test identityMismatchIsRejected() passed after 2.571 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 2.489 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 2.480 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 2.480 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 2.175 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 2.169 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +✔ Suite ContractVersionsTests passed after 12.669 seconds. +✔ Suite CameraMountSolidTests passed after 12.669 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.217 seconds. +✔ Suite SilhouetteTests passed after 12.669 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 2.786 seconds. +✔ Suite AssetCatalogTests passed after 12.669 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 2.786 seconds. +✔ Suite ObjectiveProjectionTests passed after 12.669 seconds. +✔ Suite VisualLanguageTests passed after 12.798 seconds. +✔ Suite SimulationClockTests passed after 12.798 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 12.798 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 12.798 seconds. +✔ Suite CivicSeamIdentityTests passed after 12.798 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 12.805 seconds. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test patrolSlipSearch() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 3.965 seconds. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 2.312 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 2.451 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 2.312 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 2.342 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 2.342 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 2.342 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 2.342 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 2.394 seconds. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 2.394 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 2.394 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 2.394 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 2.395 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 2.394 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 2.394 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 15.198 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 2.394 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 2.394 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 2.394 seconds. +◇ Test profileT406AggregateReportIsStable() started. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 2.394 seconds. +✔ Test successRowsWithNoStoredBest() passed after 5.320 seconds. +✔ Test groupsAreBackedIndependently() passed after 2.394 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 2.394 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 2.394 seconds. +◇ Test encounterEN018MobCSpawnsAware() started. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 2.394 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 2.394 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 15.198 seconds. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 15.201 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 2.394 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 2.394 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 2.275 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 2.394 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 2.394 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 2.275 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 2.275 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 2.275 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 2.275 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 2.275 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 2.275 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 2.275 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 2.275 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 2.275 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 2.275 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 2.275 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 2.395 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 2.275 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 2.275 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 2.275 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 2.275 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 2.395 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 2.275 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 2.274 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 2.274 seconds. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 2.274 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 2.274 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 2.275 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 2.274 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 2.274 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 2.275 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 2.274 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 2.274 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 2.274 seconds. +✔ Test patrolSlipSearch() passed after 2.279 seconds. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 2.279 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 2.279 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 2.279 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 2.279 seconds. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 2.280 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 2.280 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 2.279 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 2.280 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 2.033 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 2.032 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 1.826 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 1.814 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test headingsAdvanceClockwise() started. +✔ Suite EventCatalogTests passed after 16.061 seconds. +✔ Suite CameraHousingArtTests passed after 16.061 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.858 seconds. +✔ Suite ArenaAndSimulationTests passed after 16.061 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 3.131 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 0.858 seconds. +✔ Suite DeviceRunEvidenceTests passed after 16.061 seconds. +✔ Suite TerminalShareGeometryTests passed after 16.061 seconds. +✔ Suite MusicBedCoverageTests passed after 16.061 seconds. +✔ Suite ReceiptArchiveTests passed after 16.060 seconds. +✔ Suite CameraPresentationTests passed after 16.061 seconds. +✔ Suite ExpansionGateDecisionTests passed after 16.061 seconds. +✔ Suite PatrolSlipSearch passed after 16.062 seconds. +✔ Suite HUDPresentationTests passed after 16.061 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 3.132 seconds. +✔ Suite EnvironmentContractTests passed after 16.061 seconds. +✔ Suite CaptainClipTests passed after 16.063 seconds. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +✔ Test headingsAdvanceClockwise() passed after 0.003 seconds. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 0.802 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 5.209 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 5.209 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 2.074 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 2.074 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 2.074 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 2.074 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 5.027 seconds. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 2.124 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 2.124 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 2.124 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 2.124 seconds. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 2.124 seconds. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 2.363 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 2.363 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 2.363 seconds. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 2.363 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 2.363 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 2.363 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 2.363 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 2.363 seconds. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 2.363 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 2.363 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 18.426 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 2.319 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 2.318 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 2.318 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 2.318 seconds. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 2.318 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 2.318 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 2.318 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 2.318 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 2.318 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 2.318 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 2.318 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 2.318 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 2.318 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 2.318 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 2.318 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 2.318 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 2.318 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 2.318 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 2.318 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 2.318 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 2.318 seconds. +✔ Test lockdownOutranksExtraction() passed after 2.318 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 2.318 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 2.365 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 2.318 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 2.318 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 2.318 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 2.318 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 2.364 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 2.318 seconds. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 2.319 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 2.319 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 2.319 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 1.808 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 1.808 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 1.771 seconds. +✔ Test audioCoverageIsMeasurable() passed after 2.319 seconds. +DAILY-RUN-400 distinct=400 salted=0 +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite CameraHUDTests passed after 19.563 seconds. +✔ Suite CombatAuthorityReceiptTests passed after 19.564 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 1.135 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 1.135 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 3.498 seconds. +✔ Suite ApproximateCueTests passed after 19.564 seconds. +✔ Suite TutorialCardDurationTests passed after 19.563 seconds. +✔ Suite AudioProjectorSmokeTests passed after 19.563 seconds. +✔ Suite GhostSettingTests passed after 19.564 seconds. +✔ Suite CaptainCameraTests passed after 19.564 seconds. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 1.134 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test correlatorCommitStaysAStateClip() started. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test anyTouchSkips() started. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test correlatorCommitStaysAStateClip() passed after 0.253 seconds. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 1.518 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 1.518 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 1.518 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 1.518 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 1.518 seconds. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 1.559 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 1.559 seconds. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 1.559 seconds. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 1.648 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 1.755 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 1.755 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 1.755 seconds. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 1.755 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 1.755 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 1.755 seconds. +✔ Test tamperedCommandIsRejected() passed after 5.222 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 1.755 seconds. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 1.755 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 1.755 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 1.755 seconds. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 5.267 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 1.699 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 2.905 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 1.699 seconds. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 1.699 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 1.699 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 1.699 seconds. +✔ Test anyTouchSkips() passed after 1.699 seconds. +✔ Test exposureEX010SingleStateJumpEvent() passed after 1.699 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 1.700 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 1.699 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 1.699 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 1.699 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 1.699 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 1.699 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 4.664 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 1.699 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 1.699 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 1.699 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 1.699 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 1.699 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 1.699 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 1.699 seconds. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 1.699 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 1.699 seconds. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 1.699 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 1.699 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 1.699 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 1.658 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 1.658 seconds. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 11.466 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 5.283 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Suite RunTelemetryTests passed after 21.439 seconds. +✔ Suite AssetIntakeChecks passed after 21.438 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.106 seconds. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 1.739 seconds. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 0.106 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 21.440 seconds. +✔ Suite ReplayMatrixTests passed after 21.440 seconds. +✔ Suite TamperFloorTests passed after 21.439 seconds. +✔ Suite TutorialPreemptionTests passed after 21.440 seconds. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 1.805 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.105 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +✔ Suite D021CeilingsTests passed after 21.454 seconds. +◇ Test informantContactHitShowsItsCommit() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test tamperedDigestIsRejected() started. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +✔ Suite ReplayTests passed after 21.507 seconds. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test informantContactHitShowsItsCommit() passed after 0.541 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 3.094 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 2.969 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 1.216 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 1.216 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 1.216 seconds. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 1.264 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 1.264 seconds. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 1.264 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 1.276 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 1.276 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 1.276 seconds. +◇ Test noTwoPhasesShareABed() started. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 1.276 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 1.276 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 1.276 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 1.399 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 1.276 seconds. +◇ Test labelFormat() started. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 1.276 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 1.276 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 3.097 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 1.226 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 1.226 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 1.225 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 1.225 seconds. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 1.225 seconds. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 1.225 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 1.226 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 1.225 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 1.225 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 1.225 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 1.225 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 1.225 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 1.225 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 1.225 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 1.225 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 1.226 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 1.225 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 1.225 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 1.225 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 1.225 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 1.225 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 1.225 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 1.225 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 1.225 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 1.173 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 1.173 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Suite AudioProjectorTests passed after 22.788 seconds. +✔ Suite ObjectiveGraphTests passed after 22.788 seconds. +✔ Suite CameraDestructionReceiptTests passed after 22.788 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 9.860 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.056 seconds. +✔ Suite ArenaReachabilityTests passed after 22.788 seconds. +✔ Test labelFormat() passed after 0.055 seconds. +✔ Suite ExtractionCountdownTests passed after 22.789 seconds. +✔ Suite DeterminismTests passed after 22.788 seconds. +✔ Suite QuietApproachPresentationTests passed after 22.788 seconds. +✔ Suite DaemonClipTests passed after 22.789 seconds. +✔ Suite DamageOrderingTests passed after 22.788 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.055 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 3.231 seconds. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +✔ Suite DailyRunSeedTests passed after 22.795 seconds. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 1.339 seconds. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +◇ Test playerPC003HalfMagnitude() started. +◇ Test groundTilesAreUniform() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +✔ Suite HUDMappingTests passed after 22.843 seconds. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 0.305 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 1.074 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 1.074 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 1.074 seconds. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test tamperedDigestIsRejected() passed after 2.434 seconds. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 1.096 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 1.124 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 1.124 seconds. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 1.124 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 1.124 seconds. +✔ Test runtimeMountSolidsHaveNoArt() passed after 1.124 seconds. +✔ Test noTwoPhasesShareABed() passed after 1.187 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 1.125 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 1.124 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 1.124 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 1.077 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 1.077 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 1.077 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 1.077 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 1.077 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 1.077 seconds. +✔ Test playerPC003HalfMagnitude() passed after 1.077 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 1.125 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 1.077 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 1.077 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 1.077 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 1.077 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 1.077 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 1.077 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 1.077 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 1.076 seconds. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 1.076 seconds. +✔ Test groundTilesAreUniform() passed after 1.077 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 1.076 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 1.077 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 1.061 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Suite ProceduralVFXTests passed after 23.940 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 1.033 seconds. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.071 seconds. +✔ Suite BossPhaseMusicTests passed after 23.990 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Suite RuntimeBundleTests passed after 23.991 seconds. +✔ Suite RunOutcomeTerminalTests passed after 23.991 seconds. +✔ Suite EnemyBehaviourTests passed after 23.991 seconds. +✔ Suite TerminalPrecedenceTests passed after 23.991 seconds. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.056 seconds. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test tamperedTicksAreRejected() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test upgradeUP001PendingFreezesClock() started. +✔ Suite CombatCausalityTests passed after 24.044 seconds. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.052 seconds. +◇ Test networkBlackoutJoinsTheCameraRow() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 0.714 seconds. +✔ Suite ConeOrientationTests passed after 25.459 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 1.463 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 10.256 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 1.595 seconds. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 1.595 seconds. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 1.608 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 1.608 seconds. +◇ Test clipCatalogRejectsAnchorDrift() started. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 2.857 seconds. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 1.608 seconds. +✔ Test coverageCountsOnlyDeclaredIds() passed after 1.608 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 1.608 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 1.608 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 1.608 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 1.562 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 1.562 seconds. +✔ Test quietRestoreFailsClosed() passed after 1.562 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 1.562 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 1.562 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 1.562 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 1.562 seconds. +✔ Test theLatchIsInTheDigest() passed after 1.562 seconds. +✔ Test coneSightNeedsAClearLine() passed after 1.562 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 1.562 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 1.562 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 1.562 seconds. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 1.562 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 1.562 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 1.609 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 1.447 seconds. +✔ Test tamperedTicksAreRejected() passed after 1.657 seconds. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test clipCatalogRejectsAnchorDrift() passed after 0.083 seconds. +✔ Suite EnvironmentLibraryTests passed after 25.736 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 2.876 seconds. +◇ Test resetClearsCommits() started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test bossSpawnsWithTenDpsContact() started. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.013 seconds. +◇ Test peakDetectionIsTheHighestReached() started. +◇ Test sightRangeIsInclusive() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test swiftIsUnderFiveThirty() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test resetClearsCommits() passed after 0.411 seconds. +✔ Test theEliteIsFullyBacked() passed after 2.397 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 2.556 seconds. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 1.013 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 1.013 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 1.013 seconds. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 1.013 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 1.013 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 1.013 seconds. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 1.013 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 1.013 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 0.964 seconds. +✔ Test sightRangeIsInclusive() passed after 0.964 seconds. +✔ Test patrolBlockFailsClosed() passed after 0.964 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 0.964 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 0.964 seconds. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 0.964 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 0.964 seconds. +✔ Test rs024GhostIsExactlyTheLatch() passed after 0.964 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 0.964 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 0.964 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 7.185 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 0.964 seconds. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 0.964 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 0.964 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 0.964 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 0.914 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 0.914 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 0.976 seconds. +✔ Suite StealthTextureTests passed after 26.776 seconds. +✔ Suite CameraPlacementTests passed after 26.776 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Suite SpawnFairnessTests passed after 26.777 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 0.014 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 1.041 seconds. +◇ Test musicIsNotAnEffectCue() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.014 seconds. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test playerBlockFailsClosed() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test rs021AFailedRunEarnsNothing() started. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 0.336 seconds. +◇ Test noAdmittedAssetShipsFromArtSources() started. +✔ Test damageToANonEnemyIsIgnored() passed after 1.741 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 2.190 seconds. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 2.190 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 2.190 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 2.190 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 28.979 seconds. +✔ Test musicIsNotAnEffectCue() passed after 2.190 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 2.190 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 2.190 seconds. +✔ Suite CompleteRunVectorTests passed after 28.980 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 2.190 seconds. +✔ Test encounterEN020SolidBlocksSight() passed after 2.189 seconds. +✔ Test playerBlockFailsClosed() passed after 2.189 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 2.189 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 2.189 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 2.189 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 2.189 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 2.189 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 2.189 seconds. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 2.189 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 2.190 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 2.189 seconds. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 2.189 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 2.189 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 2.189 seconds. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +✔ Suite CommitClipTests passed after 29.263 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 0.755 seconds. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite AmbientMotionTests passed after 29.989 seconds. +✔ Suite AudioDeliveryTests passed after 29.988 seconds. +✔ Suite OpeningTests passed after 29.989 seconds. +✔ Suite QuietApproachTests passed after 29.988 seconds. +✔ Suite RunCardTests passed after 29.988 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 4.241 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 0.728 seconds. +✔ Suite LegacyAdmissionTests passed after 29.991 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +✔ Suite PeakDensityProfilerTests passed after 29.991 seconds. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.659 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 3.831 seconds. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 0.659 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 0.659 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 0.659 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 0.659 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 0.659 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 0.659 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 0.659 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 0.659 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 0.659 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 0.659 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 0.659 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 0.659 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 9.083 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 0.659 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 0.659 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 0.659 seconds. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +✔ Suite ClipMetadataTests passed after 30.680 seconds. +✔ Suite CombatContentFailClosedTests passed after 30.681 seconds. +✔ Suite PresentationSettingsTests passed after 30.682 seconds. +✔ Suite TutorialStateMachineTests passed after 30.681 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 0.690 seconds. +◇ Test resetClearsEveryReaction() started. +◇ Test lockstepMatchesALiveReplay() started. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 2.044 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 2.704 seconds. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 2.013 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 2.013 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 2.013 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 2.013 seconds. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 2.013 seconds. +✔ Test resetClearsEveryReaction() passed after 2.014 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 2.013 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 2.013 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 2.013 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 2.013 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 2.013 seconds. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite ClipAlignmentTests passed after 34.567 seconds. +✔ Suite ReactionClipTrackerTests passed after 35.193 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 4.511 seconds. +✔ Suite KernelVectorTests passed after 35.193 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 2.496 seconds. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test allyAlertsNeverChain() started. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 0.113 seconds. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 11.388 seconds. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 0.113 seconds. +✔ Test crossfadeTakesOneSecond() passed after 0.113 seconds. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 0.113 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 0.113 seconds. +✔ Test allyAlertsNeverChain() passed after 0.113 seconds. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +✔ Test minesProjectWithTheirArmingState() passed after 0.113 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 0.113 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 0.521 seconds. +✔ Suite ExpansionGateReportTests passed after 36.063 seconds. +✔ Test patrolEN035MovingPastHoldsFire() passed after 0.868 seconds. +✔ Suite CombatVisibilityTests passed after 36.063 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 0.670 seconds. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 0.037 seconds. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.037 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.037 seconds. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.037 seconds. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.037 seconds. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.037 seconds. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 0.037 seconds. +◇ Test aDirectionNeverBorrowsFromAnother() started. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.266 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.605 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 0.346 seconds. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.053 seconds. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.053 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.053 seconds. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.053 seconds. +✔ Test bossPhaseBO002HealthBands() passed after 0.053 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.053 seconds. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.053 seconds. +◇ Test coverageIsWhatTheRecordSays() started. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.001 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.349 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.349 seconds. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +✔ Suite TargetingPriorityTests passed after 37.111 seconds. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +✔ Suite OriginalArtTests passed after 37.118 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.038 seconds. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.038 seconds. +✔ Test trackerUsesReducedPalettes() passed after 0.038 seconds. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.038 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.038 seconds. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 11.401 seconds. +◇ Test playerIntegrityComesFromContent() started. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.038 seconds. +✔ Suite CameraDestructionOrderTests passed after 37.173 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.023 seconds. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test heatBlockDecodesFromTheBundledContract() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.112 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.112 seconds. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.112 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.112 seconds. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.112 seconds. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.112 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.012 seconds. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test lockdownTintNeverBrightens() started. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test heatBlockFailsClosed() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +✔ Test unawareEnemyDealsNoContactDamage() passed after 0.293 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 0.105 seconds. +✔ Test lockdownTintNeverBrightens() passed after 0.105 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 0.105 seconds. +✔ Test heatBlockFailsClosed() passed after 0.105 seconds. +◇ Test patrolIsOutsideHeat() started. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.105 seconds. +✔ Test patrolIsOutsideHeat() passed after 0.008 seconds. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 0.031 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.031 seconds. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.031 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 0.031 seconds. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.031 seconds. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 0.031 seconds. +✔ Suite CourtClimaxTests passed after 39.211 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 3.903 seconds. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test snapshotNamesEveryGate() started. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.016 seconds. +✔ Test snapshotNamesEveryGate() passed after 0.016 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 0.016 seconds. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.016 seconds. +◇ Test ghostStopsAtItsTerminalTick() started. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.016 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 10.852 seconds. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test actorContrastValues() started. +◇ Test tutorialLockdownPreemptsCopy() started. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +◇ Test encounterEN001WaveTotals() started. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.015 seconds. +✔ Test actorContrastValues() passed after 0.015 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.015 seconds. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.015 seconds. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +✔ Test encounterEN001WaveTotals() passed after 0.015 seconds. +✔ Suite ReadabilityFinishTests passed after 41.551 seconds. +✔ Suite GrayscaleSystemsTests passed after 41.551 seconds. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.001 seconds. +◇ Test awarenessIsDigested() started. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +✔ Suite ReleaseCandidateEvidenceTests passed after 41.552 seconds. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +✔ Test awarenessIsDigested() passed after 0.025 seconds. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.025 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 0.025 seconds. +✔ Suite HeatReinforcementTests passed after 41.577 seconds. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.004 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.004 seconds. +◇ Test awarenessBlockFailsClosed() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +✔ Test awarenessBlockFailsClosed() passed after 0.023 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.023 seconds. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.003 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.003 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.003 seconds. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.003 seconds. +✔ Suite ContractVectorTests passed after 41.611 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test ghostStopsAtItsTerminalTick() passed after 2.658 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.742 seconds. +✔ Suite AwarenessTests passed after 42.355 seconds. +✔ Test ghostFadesAfterItsTerminalTick() passed after 2.681 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 5.726 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 1.181 seconds. +✔ Suite GhostRunTests passed after 51.475 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 33.845 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.012 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.116 seconds. +✔ Suite GateVerificationTests passed after 56.430 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 46.566 seconds. +✔ Suite PacingSegmentsTests passed after 66.200 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 106.729 seconds. +✔ Suite CameraFairnessTests passed after 106.732 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 125.918 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 5.466 seconds. +✔ Suite GameFeelTests passed after 168.684 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 197.248 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 204.256 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 231.048 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 42.993 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 240.244 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 224.123 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 242.890 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 273.574 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 82.748 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.014 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 1.530 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.066 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.011 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.081 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.007 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.003 seconds. +✔ Suite TransitPatrolTests passed after 346.034 seconds. +✔ Test run with 773 tests in 109 suites passed after 346.035 seconds. diff --git a/docs/review/layered-source/four-joint-overlaps/controls.json b/docs/review/layered-source/four-joint-overlaps/controls.json new file mode 100644 index 00000000..6a0556d2 --- /dev/null +++ b/docs/review/layered-source/four-joint-overlaps/controls.json @@ -0,0 +1,177 @@ +{ + "status": "APPROXIMATE_DIAGNOSTIC_JOINTS_NOT_GAIT", + "coordinateConvention": "384x384 source pixels, x right, y down; Pillow positive angle counter-clockwise", + "joints": [ + { + "name": "right_elbow", + "child": "right_forearm_hand", + "parent": "right_upper_arm", + "crop": [ + 80, + 100, + 208, + 228 + ], + "mask": [ + [ + 117, + 130 + ], + [ + 143, + 130 + ], + [ + 145, + 150 + ], + [ + 115, + 150 + ] + ], + "pivot": [ + 131, + 145 + ], + "extent": 12, + "detail": [ + 102, + 126, + 156, + 166 + ], + "generatedSha256": "0c78f45a6df1d47451496b04ddc0f16802598387c41831d9c1405ebf79659338", + "hiddenSha256": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4" + }, + { + "name": "left_elbow", + "child": "left_forearm_hand", + "parent": "left_upper_arm", + "crop": [ + 192, + 100, + 320, + 228 + ], + "mask": [ + [ + 238, + 130 + ], + [ + 263, + 130 + ], + [ + 267, + 150 + ], + [ + 240, + 150 + ] + ], + "pivot": [ + 252, + 145 + ], + "extent": 12, + "detail": [ + 230, + 126, + 284, + 166 + ], + "generatedSha256": "1224e476d745415701a108b5a9e69aacc762cb3e248934d85201713bc7a3e3fe", + "hiddenSha256": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac" + }, + { + "name": "left_knee", + "child": "left_shin_boot", + "parent": "left_thigh", + "crop": [ + 160, + 224, + 288, + 352 + ], + "mask": [ + [ + 202, + 254 + ], + [ + 230, + 254 + ], + [ + 237, + 276 + ], + [ + 199, + 276 + ] + ], + "pivot": [ + 217, + 265 + ], + "extent": 8, + "detail": [ + 194, + 244, + 248, + 286 + ], + "generatedSha256": "0d25508f5e28d698c9fead63fb644b2fdc4eb26db1afb90973318e86928df1d1", + "hiddenSha256": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29" + }, + { + "name": "right_knee", + "child": "right_shin_boot", + "parent": "right_thigh", + "pivot": [ + 166, + 265 + ], + "extent": 8, + "detail": [ + 140, + 244, + 194, + 286 + ], + "hiddenSha256": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288" + } + ], + "poses": [ + {}, + { + "right_elbow": 12 + }, + { + "right_elbow": -12 + }, + { + "left_elbow": 12 + }, + { + "left_elbow": -12 + }, + { + "left_knee": 8 + }, + { + "left_knee": -8 + }, + { + "right_knee": 8 + }, + { + "right_knee": -8 + } + ], + "sourceSha256": "51cb032d4ae340a5dfe48b701aa41c619edc9e888480992adf80ddce2fd10765" +} diff --git a/docs/review/layered-source/four-joint-overlaps/coverage.json b/docs/review/layered-source/four-joint-overlaps/coverage.json new file mode 100644 index 00000000..fba46e07 --- /dev/null +++ b/docs/review/layered-source/four-joint-overlaps/coverage.json @@ -0,0 +1,42 @@ +[ + { + "joint": "right_elbow", + "angle": 12, + "addedAlphaPixels": 44 + }, + { + "joint": "right_elbow", + "angle": -12, + "addedAlphaPixels": 31 + }, + { + "joint": "left_elbow", + "angle": 12, + "addedAlphaPixels": 21 + }, + { + "joint": "left_elbow", + "angle": -12, + "addedAlphaPixels": 48 + }, + { + "joint": "left_knee", + "angle": 8, + "addedAlphaPixels": 24 + }, + { + "joint": "left_knee", + "angle": -8, + "addedAlphaPixels": 33 + }, + { + "joint": "right_knee", + "angle": 8, + "addedAlphaPixels": 24 + }, + { + "joint": "right_knee", + "angle": -8, + "addedAlphaPixels": 27 + } +] diff --git a/docs/review/layered-source/four-joint-overlaps/joint-endpoints.png b/docs/review/layered-source/four-joint-overlaps/joint-endpoints.png new file mode 100644 index 00000000..0bfffeea Binary files /dev/null and b/docs/review/layered-source/four-joint-overlaps/joint-endpoints.png differ diff --git a/docs/review/layered-source/four-joint-overlaps/prompts.json b/docs/review/layered-source/four-joint-overlaps/prompts.json new file mode 100644 index 00000000..55142320 --- /dev/null +++ b/docs/review/layered-source/four-joint-overlaps/prompts.json @@ -0,0 +1,5 @@ +{ + "right_elbow": "Use case: precise-object-edit. Edit target: this isolated forearm and gloved hand on transparent 1024x1024 canvas. Extend its cut upper sleeve upward with plain dark charcoal cloth to y=200, between x=300 and x=520. The existing cut runs from around (300,310) to (520,390). This is hidden joint underpaint for a layered game character. Keep every existing visible part, its size, position, camera perspective and painterly texture unchanged. Preserve canvas and placement. Only add plain cloth above the cut; no new armor, kneepad, straps, pockets or body parts. No glow, background, shadow, text or labels. Do not zoom or reposition.", + "left_elbow": "Use case: precise-object-edit. Edit target: this isolated forearm and gloved hand on transparent 1024x1024 canvas. Extend its cut upper sleeve upward with plain dark charcoal cloth to y=200, between x=390 and x=630. The existing cut runs from around (390,390) to (580,310). This is hidden joint underpaint for a layered game character. Keep every existing visible part, its size, position, camera perspective and painterly texture unchanged. Preserve canvas and placement. Only add plain cloth above the cut; no new armor, kneepad, straps, pockets or body parts. No glow, background, shadow, text or labels. Do not zoom or reposition.", + "left_knee": "Use case: precise-object-edit. Edit target: this isolated lower leg and boot on transparent 1024x1024 canvas. Extend its flat upper cut upward with a short rounded plain charcoal trouser sleeve to y=240, between x=370 and x=610. The existing cut is near y=384. This is hidden joint underpaint for a layered game character. Keep every existing visible part, its size, position, camera perspective and painterly texture unchanged. Preserve canvas and placement. Only add plain cloth above the cut; no new armor, kneepad, straps, pockets or body parts. No glow, background, shadow, text or labels. Do not zoom or reposition." +} diff --git a/docs/review/layered-source/four-joint-overlaps/review.md b/docs/review/layered-source/four-joint-overlaps/review.md new file mode 100644 index 00000000..30d5d747 --- /dev/null +++ b/docs/review/layered-source/four-joint-overlaps/review.md @@ -0,0 +1,9 @@ +# Four-joint overlap source study — BP-002 / T1045 + +Both elbows and both knees now have separate hidden cloth overlaps. Built-in image generation supplied three new extension sources; only bounded hidden patches were retained. Generated hands, cuffs and boots were discarded. Original visible source pixels remain intact in the setup pose. Prompts and source hashes are recorded in prompts.json and controls.json. + +Nine diagnostic poses isolate the positive/negative bend of each joint and the neutral. The enlarged endpoint comparison was inspected for all four joints. Patches fill cut openings at the reviewed small angles; surface transitions still need assessment in the eventual full motion. Added alpha coverage ranges from 21 to 48 pixels, which measures revealed patch coverage only, not visual quality or an acceptance threshold. + +Neutral alpha and composites remain exact against the retained original on black, white and gray. The fourteen-layer archive was reopened independently, every referenced PNG decoded, and its stack recomposed exactly to its stored merged image. Fully transparent RGB is zero. Separate hidden layers remain editable in the archive. No native editor or skeletal rig import was verified. + +Controls are approximate image-space diagnostic pivots: elbows ±12°, knees ±8°. The GIF displays isolated test poses, not a walk. No source frame count, stride, foreshortening, ground contact or runtime animation acceptance is claimed. Shoulders, hips, boot/cloth controls, editable mesh/bone hierarchy and complete four-facing motion remain unfinished. No active resource, clip metadata, gameplay identity or runtime code changed. diff --git a/docs/review/layered-source/four-joint-overlaps/south-joints.ora b/docs/review/layered-source/four-joint-overlaps/south-joints.ora new file mode 100644 index 00000000..9f9767de Binary files /dev/null and b/docs/review/layered-source/four-joint-overlaps/south-joints.ora differ diff --git a/docs/review/layered-source/four-joint-overlaps/verification.json b/docs/review/layered-source/four-joint-overlaps/verification.json new file mode 100644 index 00000000..a9683616 --- /dev/null +++ b/docs/review/layered-source/four-joint-overlaps/verification.json @@ -0,0 +1,11 @@ +{ + "status": "SOURCE_STUDY_NOT_RUNTIME_ADMISSION", + "layers": 14, + "archiveSha256": "153d80c4859bef7404025e6fc4540958191bf85b175da6182bcd611b9e3a8961", + "archiveReopenedAndRecomposed": true, + "hiddenRGBCleared": true, + "nativeEditorOpened": false, + "sourceVisibleParts": "unchanged original extracted PNGs", + "endpointReview": "both signed extremes of four joints inspected in joint-endpoints.png", + "motionReview": "not reviewed in SpriteKit; diagnostic GIF is discrete joint poses, not gait" +} diff --git a/docs/review/layered-source/knee-pilot/archive-verification.json b/docs/review/layered-source/knee-pilot/archive-verification.json new file mode 100644 index 00000000..46548c4e --- /dev/null +++ b/docs/review/layered-source/knee-pilot/archive-verification.json @@ -0,0 +1,21 @@ +{ + "sourceArchiveSha256": "edca0ff25873bcd3d92c1fbabe9a924373820592203a93ebdc7b1556fbd31027", + "outputArchiveSha256": "1ba8bfe39c9912f23bb545cd9f29c6dbb331f2dc6e45db58dcd36b93639f755d", + "layersTopToBottom": [ + "hood", + "right_forearm_hand", + "right_upper_arm", + "left_forearm_hand", + "left_upper_arm", + "right_shin_boot", + "left_shin_boot", + "right_thigh", + "left_thigh", + "torso_coat_equipment", + "right_knee_hidden_overlap" + ], + "verification": "archive reopened; every referenced PNG read; stack recomposed; stored composite exact; source visual composite exact on three backgrounds; transparent RGB cleared", + "nativeEditorVerification": "NOT_PERFORMED", + "status": "EDITABLE_LAYER_ARCHIVE_NOT_COMPLETE_ANIMATION_MASTER", + "repeatedPackagingHashStable": true +} diff --git a/docs/review/layered-source/knee-pilot/joint-comparison.png b/docs/review/layered-source/knee-pilot/joint-comparison.png new file mode 100644 index 00000000..0ddaf81d Binary files /dev/null and b/docs/review/layered-source/knee-pilot/joint-comparison.png differ diff --git a/docs/review/layered-source/knee-pilot/knee-detail.png b/docs/review/layered-source/knee-pilot/knee-detail.png new file mode 100644 index 00000000..3f666d71 Binary files /dev/null and b/docs/review/layered-source/knee-pilot/knee-detail.png differ diff --git a/docs/review/layered-source/knee-pilot/manifest.json b/docs/review/layered-source/knee-pilot/manifest.json new file mode 100644 index 00000000..c4fe80fd --- /dev/null +++ b/docs/review/layered-source/knee-pilot/manifest.json @@ -0,0 +1,52 @@ +{ + "status": "SOURCE_JOINT_STUDY_NOT_GAIT_OR_RUNTIME_ADMISSION", + "sourceSha256": "51cb032d4ae340a5dfe48b701aa41c619edc9e888480992adf80ddce2fd10765", + "generationSha256": "ed739ee53fc68bcf26ec7772aa663c37fac451bb039d391fbd1aa013883c7370", + "generatedCanvas": [ + 1254, + 1254 + ], + "registration": "uniform full square mapping into original crop (100,224,228,352); generated boot discarded", + "maskPolygon": [ + [ + 155, + 254 + ], + [ + 180, + 254 + ], + [ + 185, + 276 + ], + [ + 150, + 276 + ] + ], + "neutralCheck": "exact composite on black white gray", + "pivot": [ + 166, + 265 + ], + "pivotStatus": "approximate source-space diagnostic; not anatomical calibration", + "anglesDegrees": [ + 0, + 4, + 8, + 4, + 0, + -4, + -8, + -4 + ], + "purpose": "reveal gaps at cut under small in-plane rotations; not an elevated walk or contact test", + "remaining": [ + "judge material transition in motion", + "correct all part ownership", + "author remaining hidden joints", + "editable multi-joint controls", + "four facings and full 16-frame gait" + ] +} diff --git a/docs/review/layered-source/knee-pilot/prompt.txt b/docs/review/layered-source/knee-pilot/prompt.txt new file mode 100644 index 00000000..fdde3f7c --- /dev/null +++ b/docs/review/layered-source/knee-pilot/prompt.txt @@ -0,0 +1 @@ +Use case: precise-object-edit. Edit target: the attached isolated lower leg and boot on a transparent 1024x1024 canvas. Extend ONLY its flat upper cut with a short rounded dark charcoal trouser sleeve, continuing upward from y=384 to approximately y=240, x approximately 392 to 635. This is hidden knee-joint underpaint for a layered game character, not a new limb design. Keep the existing boot, laces, toe, sole, size, location, camera perspective, and painterly texture exactly as supplied. The sleeve must be plain flexible charcoal fabric matching the existing cut edge, no kneepad, armor, straps or pockets. Keep the foot bottom near y=912 and maintain the same 1024x1024 canvas. Transparent background, no shadow, no glow, no text, no other leg or body part. Do not reposition or zoom the object. diff --git a/docs/review/layered-source/knee-pilot/review.md b/docs/review/layered-source/knee-pilot/review.md new file mode 100644 index 00000000..f7a8e5c1 --- /dev/null +++ b/docs/review/layered-source/knee-pilot/review.md @@ -0,0 +1,17 @@ +# Right knee hidden-overlap study + +Status: bounded source-authoring progress; not an admitted animation or complete rig. + +Built-in image generation produced a plain fabric extension above the isolated boot. The generated boot was discarded; only a small hidden patch was retained, uniformly registered to the original source crop. The original visible limb, costume and sole remain unchanged in the neutral setup pose. The exact prompt is in prompt.txt, with generator source and registration details in manifest.json. + +The overlap is a separate layer below the original thigh. Eight diagnostic poses rotate the original shin and hidden patch around an approximate source-space point by up to eight degrees. The side-by-side GIF and enlarged endpoint show the small cut opening filled. At the two endpoints the patch adds coverage to 27 and 24 pixels respectively; this is coverage evidence, not an anatomy or quality score. Both endpoints were reviewed as still images. The local browser review played the PNG sequence (observed frame counter advancing) and paused/scrubbed to frames 2 and 6. Both enlarged endpoint seams were inspected. This verifies source diagnostic playback only; it is not SpriteKit motion evidence. + +Neutral reconstruction passes exact composite checks on black, white and gray. Initial assembly exposed incorrect layer ordering; after correcting that, a remaining 40 edge-pixel difference came from unnecessarily resampling the zero-angle pose. The exporter now preserves the identity transform without resampling. The assertions were retained. + +Transparent part exports originally retained neighboring source artwork in invisible RGB. A tool preview displayed those hidden colors. The refined layer exporter now clears fully transparent RGB, verifies that invariant for each layer and retains the original visible composites. This is source-reference hygiene, not a claimed fix to SpriteKit rendering. + +This is not locomotion: it supplies no foot planting, world displacement, elevated leg foreshortening, full rig, other joints/facings or 16-frame gait. The pivot is approximate. Remaining part ownership and joint surfaces need work. No runtime production art changed, and existing runtime tests do not prove this artwork accepted. + +## Packaged editable source + +The eleven-layer south-neutral-with-knee.ora retains the ten extracted layers plus a separate bottom-layer right-knee underpaint. An independent archive read resolves every stack entry, reconstructs the stored merged image exactly and checks the original composite on three backgrounds. All layer pixels with zero alpha have zero RGB. Repeated packaging produces the same archive hash. A native graphics editor has not opened the archive; mesh/bone controls remain absent. The local review provides playback and frame scrubbing, not source editing. diff --git a/docs/review/layered-source/knee-pilot/south-neutral-with-knee.ora b/docs/review/layered-source/knee-pilot/south-neutral-with-knee.ora new file mode 100644 index 00000000..7e7c64d2 Binary files /dev/null and b/docs/review/layered-source/knee-pilot/south-neutral-with-knee.ora differ diff --git a/docs/review/layered-source/lower-leg-block/README.md b/docs/review/layered-source/lower-leg-block/README.md new file mode 100644 index 00000000..b5edd013 --- /dev/null +++ b/docs/review/layered-source/lower-leg-block/README.md @@ -0,0 +1,41 @@ +# South lower-leg pose block — BP-002 / BP-008 + +Status: EDITABLE SOURCE GEOMETRY EXPERIMENT; not final artwork, accepted gait or runtime integration. + +## Authority and research + +SS-specs 492d921027c11d809ff18e3a35f520118e13de84 already requires authored lower-leg contacts, elevated depth keys and world-travel comparison. No product specification change is necessary for this bounded source experiment. Runtime base is 37181b6. Original painted character remains unchanged. + +Animation Mentor's [Animating Dynamic Run Cycles](https://www.animationmentor.com/blog/animating-dynamic-run-cycles/), retrieved 2026-10-14, recommends reference-led blocking of stride, down, passing and push-off, with airborne periods distinguishing running from walking. This motivates the support/flight comparison. The article does not supply SS measurements, support durations or camera angle. Its video was not viewed. + +## Editable source + +Run `python3 block.py` with Python 3 and Pillow. parameters.json contains every proposed dimension, projection and timing parameter. sixteen-samples.json saves the lower-body positions at the sixteen distinct sample times; 0.5 seconds is the repeated first pose and is not exported as a seventeenth frame. The slow GIF uses 125ms diagnostic holds, explicitly not production cadence. Full-body anatomy, costume, mesh, lighting and runtime are absent. + +Coordinates: x lateral, y forward, z up. The candidate front projection is x to screen x and y*sin(elevation)-z*cos(elevation) to screen y. Anatomical right appears on image left. The 30-degree elevation is an authored comparison value, not a camera inferred from the concept. Source drawings use 6 pixels per model unit. The retained neutral is shown unmodified at its 384px canvas size beside the block; this does not establish registration. + +The two-segment chain solves hip to ankle with fixed lengths and a forward knee branch. A simple sole rectangle carries distinct heel and toe points. During proposed support the toe remains at one nominal world location while the foot rolls about it. During recovery the ankle follows an editable trajectory. These are authored candidate surfaces and landmarks; they are not measurements of hidden anatomy in the neutral image. The source supplies 3D positions, so projected segment lengths can change without changing model lengths. + +The only inherited numeric choices are 240 units/second full-input nominal speed and the initial 0.5-second cycle. Support lasts 0.1 seconds per leg, offset by 0.25 seconds; dimensions, compression, recovery lift, forefoot pivot and camera are PROPOSED experiment parameters. They do not define gameplay, sprint, analog policy or the final gait. + +## Findings and verification + +The eight-key sheet shows each side in initial support, compressed support, toe-off and flight, paired with side diagnostics. Both views were inspected. The front projection visibly foreshortens limbs; the side diagnostic exposes knee flexion and heel lift. This is useful pose geometry, not evidence of benchmark-quality character art. + +The initial recovery curve stopped horizontal ankle travel abruptly at support boundaries. A cubic endpoint-velocity attempt exceeded chain reach. The final bounded endpoint correction preserves the requested support-relative velocity without automatic limb stretching. Body-height and lift curves have zero endpoint slope. Dense sampling covers 1,001 times over one cycle; exact boundary samples and finite differences are recorded separately. These are source checks, not simulation or runtime tests. + +Recorded measurements: +- Maximum segment-length numerical residual: 5.33e-15 model units. +- Minimum sampled heel/toe height: 0; no sampled landmark below the ground. +- Continuous nominal support-toe drift: 0. +- Last-to-first local position difference: 0. +- Maximum one-sided finite-difference velocity mismatch at inspected boundaries: about 0.000604 units/second at epsilon 1e-7 seconds. No visual acceptance threshold is implied. +- Uniformly holding sixteen samples yields up to 7.44 units of nominal support-toe drift in the dense comparison. At the proposed front projection this corresponds to 3.72 logical vertical units, before output display scaling. The exact .03125-second hold allows up to 7.5 units of travel before the next sample; measured 7.44 reflects the sample grid. This is not an observed shipping-renderer slip value. + +The continuous model's zero contact residual therefore does not transfer to discrete sprite playback. Actual simulation positions, animation sampling/phase, render interpolation, cardinal and diagonal movement, collision stops, reversals and interrupts still need BP-008 review. Do not reduce controller speed or assert that sixteen source frames automatically pass foot contact. Numerical slip acceptance remains unchosen in the spec. + +## Next production step + +Fit/review the candidate lower-body proportions against the retained painted source and author coherent depth surfaces for the contact, toe-off and recovery keys. Review the full hooded silhouette and garment occlusion with those keys before in-betweening. Keep four distinct elevated facings and the complete character/camera/environment benchmark scope. This geometry diagram cannot replace the required artwork or real-renderer scene. + +No production code, textures, metadata, spec pins or gameplay changed. The existing 773-test core result at f724a50 remains the latest core evidence; this artifact-only change does not claim a new core run. Reproduction assertions cover source reach, lengths, ground landmarks, nominal contact and positional closure only. Physical-device testing remains deferred. diff --git a/docs/review/layered-source/lower-leg-block/key-poses.png b/docs/review/layered-source/lower-leg-block/key-poses.png new file mode 100644 index 00000000..feefb816 Binary files /dev/null and b/docs/review/layered-source/lower-leg-block/key-poses.png differ diff --git a/docs/review/layered-source/lower-leg-block/measurements.json b/docs/review/layered-source/lower-leg-block/measurements.json new file mode 100644 index 00000000..dbf51e28 --- /dev/null +++ b/docs/review/layered-source/lower-leg-block/measurements.json @@ -0,0 +1,15 @@ +{ + "status": "SOURCE_GEOMETRY_ONLY_NOT_RUNTIME_EVIDENCE", + "sampleCount": 1001, + "maxSegmentError": 5.329070518200751e-15, + "minimumSoleLandmarkHeight": 0, + "maxNominalSupportToeDrift": 0.0, + "lastToFirstLocalPositionError": 0.0, + "worldDisplacementPerCycle": 120.0, + "runtimePositionsUsed": false, + "anatomyValidated": false, + "paintedSourceIntegrated": false, + "maxSampledHeldFrameNominalToeDrift": 7.440000000000007, + "heldFrameDurationSeconds": 0.03125, + "maxFiniteDifferenceVelocityMismatch": 0.0006042700133813792 +} diff --git a/docs/review/layered-source/lower-leg-block/source-comparison.png b/docs/review/layered-source/lower-leg-block/source-comparison.png new file mode 100644 index 00000000..2e1321eb Binary files /dev/null and b/docs/review/layered-source/lower-leg-block/source-comparison.png differ diff --git a/docs/review/layered-source/lower-leg-block/source.zip b/docs/review/layered-source/lower-leg-block/source.zip new file mode 100644 index 00000000..04fef7b5 Binary files /dev/null and b/docs/review/layered-source/lower-leg-block/source.zip differ diff --git a/docs/review/layered-source/ownership-refinement/archive-verification.json b/docs/review/layered-source/ownership-refinement/archive-verification.json new file mode 100644 index 00000000..b5949e63 --- /dev/null +++ b/docs/review/layered-source/ownership-refinement/archive-verification.json @@ -0,0 +1,20 @@ +{ + "sourceArchiveSha256": "b6bcb1d606d0c4acdeebb7d36600deb24049293140156a5765ff2793e2b2fa19", + "outputArchiveSha256": "09e6c8d7233fb77530e849f5f73fdc2dcd717da079864783f5c7ded6cddb101f", + "layersTopToBottom": [ + "hood", + "right_forearm_hand", + "right_upper_arm", + "left_forearm_hand", + "left_upper_arm", + "right_shin_boot", + "left_shin_boot", + "right_thigh", + "left_thigh", + "torso_coat_equipment", + "right_knee_hidden_overlap" + ], + "verification": "archive reopened; every referenced PNG read; stack recomposed; stored composite exact; source visual composite exact on three backgrounds; transparent RGB cleared", + "nativeEditorVerification": "NOT_PERFORMED", + "status": "EDITABLE_LAYER_ARCHIVE_NOT_COMPLETE_ANIMATION_MASTER" +} diff --git a/docs/review/layered-source/ownership-refinement/boundaries.json b/docs/review/layered-source/ownership-refinement/boundaries.json new file mode 100644 index 00000000..a9b625d7 --- /dev/null +++ b/docs/review/layered-source/ownership-refinement/boundaries.json @@ -0,0 +1,380 @@ +{ + "status": "VISIBLE_BOUNDARIES_REVIEWED_FOR_NEUTRAL_ONLY", + "source": "south.png", + "coordinateConvention": "384x384 pixels; top-left origin; anatomical right is image left", + "parts": [ + { + "name": "hood", + "polygon": [ + [ + 154, + 80 + ], + [ + 154, + 55 + ], + [ + 173, + 35 + ], + [ + 213, + 35 + ], + [ + 233, + 55 + ], + [ + 230, + 79 + ], + [ + 233, + 99 + ], + [ + 223, + 117 + ], + [ + 218, + 126 + ], + [ + 214, + 120 + ], + [ + 221, + 111 + ], + [ + 217, + 105 + ], + [ + 207, + 96 + ], + [ + 192, + 92 + ], + [ + 178, + 96 + ], + [ + 162, + 108 + ], + [ + 171, + 122 + ], + [ + 166, + 127 + ], + [ + 156, + 117 + ], + [ + 152, + 99 + ] + ] + }, + { + "name": "right_forearm_hand", + "polygon": [ + [ + 100, + 138 + ], + [ + 115, + 138 + ], + [ + 145, + 148 + ], + [ + 141, + 160 + ], + [ + 137, + 175 + ], + [ + 136, + 189 + ], + [ + 136, + 201 + ], + [ + 130, + 215 + ], + [ + 124, + 226 + ], + [ + 100, + 226 + ] + ] + }, + { + "name": "right_upper_arm", + "polygon": [ + [ + 103, + 75 + ], + [ + 155, + 75 + ], + [ + 151, + 99 + ], + [ + 149, + 117 + ], + [ + 147, + 135 + ], + [ + 145, + 148 + ], + [ + 103, + 143 + ] + ] + }, + { + "name": "left_forearm_hand", + "polygon": [ + [ + 240, + 148 + ], + [ + 266, + 138 + ], + [ + 282, + 138 + ], + [ + 282, + 226 + ], + [ + 254, + 226 + ], + [ + 246, + 211 + ], + [ + 245, + 196 + ], + [ + 246, + 185 + ], + [ + 242, + 168 + ] + ] + }, + { + "name": "left_upper_arm", + "polygon": [ + [ + 231, + 75 + ], + [ + 282, + 75 + ], + [ + 282, + 143 + ], + [ + 240, + 148 + ], + [ + 235, + 134 + ], + [ + 234, + 116 + ], + [ + 232, + 99 + ] + ] + }, + { + "name": "right_shin_boot", + "polygon": [ + [ + 141, + 272 + ], + [ + 190, + 272 + ], + [ + 192, + 345 + ], + [ + 137, + 345 + ] + ] + }, + { + "name": "left_shin_boot", + "polygon": [ + [ + 198, + 272 + ], + [ + 243, + 272 + ], + [ + 248, + 345 + ], + [ + 193, + 345 + ] + ] + }, + { + "name": "right_thigh", + "polygon": [ + [ + 169, + 195 + ], + [ + 188, + 197 + ], + [ + 192, + 216 + ], + [ + 192, + 241 + ], + [ + 189, + 251 + ], + [ + 189, + 272 + ], + [ + 147, + 272 + ], + [ + 147, + 252 + ], + [ + 154, + 236 + ], + [ + 160, + 223 + ] + ] + }, + { + "name": "left_thigh", + "polygon": [ + [ + 197, + 196 + ], + [ + 214, + 196 + ], + [ + 216, + 207 + ], + [ + 225, + 219 + ], + [ + 229, + 238 + ], + [ + 235, + 251 + ], + [ + 240, + 272 + ], + [ + 196, + 272 + ], + [ + 194, + 251 + ], + [ + 193, + 233 + ], + [ + 191, + 216 + ] + ] + } + ] +} diff --git a/docs/review/layered-source/ownership-refinement/ownership-comparison.png b/docs/review/layered-source/ownership-refinement/ownership-comparison.png new file mode 100644 index 00000000..f3babf08 Binary files /dev/null and b/docs/review/layered-source/ownership-refinement/ownership-comparison.png differ diff --git a/docs/review/layered-source/ownership-refinement/review.md b/docs/review/layered-source/ownership-refinement/review.md new file mode 100644 index 00000000..d49f7db9 --- /dev/null +++ b/docs/review/layered-source/ownership-refinement/review.md @@ -0,0 +1,9 @@ +# South source part ownership refinement — BP-002 / T1045 + +Retained original source: south neutral SHA-256 51cb032d4ae340a5dfe48b701aa41c619edc9e888480992adf80ddce2fd10765. No visible costume pixels repainted or generated in this revision. + +The hood cut now leaves the scarf with the torso. Forearm cuts follow the sleeve and hand instead of retaining adjacent coat/pouch pixels. Upper-arm cuts include the outer shoulder outline. Thigh cuts include more of the visible trouser and inner-leg edge; the original thigh pocket remains on the left thigh. Isolated part images and the torso remainder were inspected; the earlier floating outline fragments have been reassigned. Boundary polygons are manually authored image-space selections, not anatomical measurements. + +The ten visible layers reconstruct the original alpha exactly and composite exactly on black, white and gray. Fully transparent RGB is cleared. The separately saved eleven-layer archive retains the previously reviewed right-knee hidden overlap below the visible layers. Reopening the archive, reading all referenced PNGs and recompositing its stack reproduces its stored merged image and the original three-background composites exactly. + +This improves the neutral extraction only. Other joint overlaps, boot/cloth controls, editable mesh/bone controls, four-facing consistency and the complete south gait remain unfinished. No motion-range acceptance follows from the static boundary review. The previous eight-pose diagnostic used the older layer boundaries and is not evidence for this revised full source. Native graphics-editor verification is still absent. No production resource changed. diff --git a/docs/review/layered-source/ownership-refinement/south-neutral-with-knee.ora b/docs/review/layered-source/ownership-refinement/south-neutral-with-knee.ora new file mode 100644 index 00000000..6fbf8630 Binary files /dev/null and b/docs/review/layered-source/ownership-refinement/south-neutral-with-knee.ora differ diff --git a/docs/review/layered-source/parity.log b/docs/review/layered-source/parity.log new file mode 100644 index 00000000..861d7a32 --- /dev/null +++ b/docs/review/layered-source/parity.log @@ -0,0 +1,2 @@ +parity: pin is 6c86388d5fca90b1677f78c585178d00e6fdbe8d +parity: OK — every bundled contract and fixture byte-matches SS-specs@6c86388d5fca90b1677f78c585178d00e6fdbe8d diff --git a/docs/review/layered-source/proximal-rig/README.md b/docs/review/layered-source/proximal-rig/README.md new file mode 100644 index 00000000..018ac21b --- /dev/null +++ b/docs/review/layered-source/proximal-rig/README.md @@ -0,0 +1,24 @@ +# South painted-source rig scaffold — BP-002 / T1045 + +This source package preserves the original south neutral and adds separate hidden cloth overlaps at both shoulders, elbows, hips and knees. It contains eighteen layer PNGs, editable rig.json controls and an offline Pillow renderer. No skeletal runtime dependency is introduced. + +## Reproduce a source pose + +Requires Python 3 and Pillow. From the unpacked directory: + +```sh +python3 render_source.py --pose 0 --output neutral.png +python3 render_source.py --pose 9 --output combined.png +``` + +Edit a JSON object of named angles, for example `{"right_shoulder": 6, "right_elbow": -12}`, then pass its file using `--angles-file`. Angles are clockwise in the 384×384 source image. Pivots are manually estimated; they are not anatomical measurements. rig.json holds the parent hierarchy, bindings, draw order and diagnostic poses. Each layer is transformed once by its composed parent/child matrix. The identity transform bypasses resampling to preserve neutral pixels. + +## Verified and observed + +The saved-source renderer reproduces the neutral exactly. Parent/child joint locations agree within floating-point precision, and the diagnostic transforms preserve segment lengths. A known quarter-turn calibration passes; unknown joint controls fail explicitly. Neutral and eight shoulder/hip extremes were visually inspected, as was the combined pose. The shoulders carry both forearms and their hidden elbow patches; hips carry shins and hidden knee patches. + +Only clipped hidden cloth from built-in image generation was retained. Original visible patches, pockets, cuffs, hands, boots and kneepads were preserved; generated replacements for them were discarded. Generation prompts and hashes are included. Shoulder/hip patches are masked to the original opaque silhouette at rest. This guarantees neutral concealment, not correctness at arbitrary motion extremes. + +## Still unfinished + +This is a rigid-layer source scaffold, not a finished animation master or walk. It lacks weighted mesh deformation, elevated gait foreshortening, independent boot and coat controls, foot targets/contact, full pose-range garment review and the other three facing rigs. No 16-frame locomotion, SpriteKit movement or device acceptance follows. Existing active production art and timing metadata remain unchanged. Native graphics-editor or skeletal-editor import has not been verified. diff --git a/docs/review/layered-source/proximal-rig/parent-joint-endpoints.png b/docs/review/layered-source/proximal-rig/parent-joint-endpoints.png new file mode 100644 index 00000000..c9e1f36f Binary files /dev/null and b/docs/review/layered-source/proximal-rig/parent-joint-endpoints.png differ diff --git a/docs/review/layered-source/proximal-rig/south-source-rig.zip b/docs/review/layered-source/proximal-rig/south-source-rig.zip new file mode 100644 index 00000000..48c357d9 Binary files /dev/null and b/docs/review/layered-source/proximal-rig/south-source-rig.zip differ diff --git a/docs/review/layered-source/proximal-rig/verification.json b/docs/review/layered-source/proximal-rig/verification.json new file mode 100644 index 00000000..970017de --- /dev/null +++ b/docs/review/layered-source/proximal-rig/verification.json @@ -0,0 +1,17 @@ +{ + "neutralPixelsExact": true, + "parentChildAnchorMaxResidual": 6.355287432313019e-14, + "limbLengthsPreservedInDiagnosticPoses": true, + "diagnosticPoseCount": 10, + "layers": 18, + "generatedSources": { + "right_shoulder": "e6c73306a3e4da240a7c7a8448980cec0ff046d8fd6ed10f5b4774ee4f746375", + "left_shoulder": "d5373fc6267bf69121133d8bcd08308c6099bdb47559bede4dbf263ffbfb6bde", + "right_hip": "d3b6c92e33b8e8e9499b5900e629c40c2c797025f257e0957b2edd410dbbfbc0", + "left_hip": "eb4d3f6644f77534521c7f33963a9dd3b0791e4bf543db9c4f8c5f0a3da9ef71" + }, + "artAdmission": false, + "independentRendererNeutralExact": true, + "quarterTurnCalibrationPassed": true, + "unknownJointRejected": true +} diff --git a/docs/review/layered-source/review.md b/docs/review/layered-source/review.md new file mode 100644 index 00000000..2e3f8b4c --- /dev/null +++ b/docs/review/layered-source/review.md @@ -0,0 +1,21 @@ +# BP-002 / T1045 layered source reconciliation + +Adopts SS-specs 6c86388d5fca90b1677f78c585178d00e6fdbe8d. The four specification identities move together; no gameplay identity, active metadata, frame, fixture or production texture changes. + +## Current evidence and disposition + +The retained south neutral has SHA-256 51cb032d4ae340a5dfe48b701aa41c619edc9e888480992adf80ddce2fd10765. A ten-layer OpenRaster extraction reproduces its alpha and composites exactly on black, white and gray. This proves reconstruction only. Isolated layers reveal neighboring costume pixels assigned to moving limbs. The refined masks retain more coat pixels, but pocket/hip ownership, forearm edges and residual leg pixels still need correction. + +The generated replacement right leg is rejected: fitting two approximate points did not preserve limb width, boot proportions or texture, and assembly exposed missing coat pixels. No replacement enters the resource bundle. + +The source is NOT_ANIMATION_READY. Hidden joint surfaces, independent foot/cloth controls, editable deformation controls, four-facing coherence, 16-frame south gait, world-contact evidence and complete-family admission remain open. T1045 remains NOT_PRODUCED. Runtime continues to load the existing production catalog. Reviewed painted neutral facings remain diagnostic test inputs only. + +## Required next source evidence + +Correct independently moving part ownership and preserve the approved visible costume. Author hidden surfaces separately from extracted visible pixels; inspect each part and its neutral assembly. Exercise the intended joint range and reject gaps, detached joints, coat tearing or equipment moving with the wrong part. Then follow the existing south-cycle and runtime world-travel checks. A zero landmark residual, pixel-exact reconstruction or green core suite is not visual acceptance. + +## Verification + +Specification validation and timing migration validation passed before adoption. Runtime parity and core results are recorded alongside this review after execution. No device testing or release merge is claimed. + +Verified: parity passed against exact spec commit 6c86388d5fca90b1677f78c585178d00e6fdbe8d; all 773 core tests in 109 suites passed in 346.035 seconds. The asset catalog differs from the preceding runtime commit only in specificationCommit. No new simulator capture was needed for this pin/documentation adoption; prior renderer evidence does not establish layered-source acceptance. diff --git a/docs/review/live-playback/README.md b/docs/review/live-playback/README.md new file mode 100644 index 00000000..68118491 --- /dev/null +++ b/docs/review/live-playback/README.md @@ -0,0 +1,21 @@ +# BP-008 live displayed-frame capture + +Runtime base: 6082a24. Specs: 521aec30cbb926938591d1ffb22233b24102732c. + +Implemented DEBUG-only observation of the actual admitted SKTexture identity and rendered player size, anchor, position and active clip token. The test installs WorldRenderer once in a presented, unpaused SKScene, advances the real GameSession at fixed ticks and observes from didEvaluateActions. It uses the normal SpriteLibrary action construction and v1 admitted artwork. It does not manually call the action callback, reset the renderer per observation, derive texture identity from ticks, inject synthetic gameplay positions or admit replacement art. + +The first live test records display time, simulation tick, authoritative Q8 position (256 raw units per world unit), rendered position, facing, active clip token, texture path, size and anchor. Unknown textures return nil rather than inventing an identity. The test requires changing movement textures and actual authoritative travel; all observations had identified textures. + +## Verified result + +Xcode simulator run Test-SSRuntime-2026.10.14_20-53-41--0700.xcresult completed successfully on iPhone 17 Pro / iOS 26.5 simulator. 97 test methods, 99 executions including parameterized cases; zero failures or skips. New live test passed in 2.452 seconds. test-summary.json is the result export. frames.json contains the original test attachment; observations.json summarizes its contents. + +Observed: 11 post-action display samples; ticks 0–90; six distinct movement textures; player_idle|e followed by player_move|n. Authoritative raw position moved from (40960,49152) to (40960,141312), i.e. 360 world units north. Rendered player position matched the authoritative whole-unit positions in this run. Display timestamps span about 1.784 seconds. This sparse simulator capture is NOT a 60fps performance result, a smoothness judgment, a full animation video or a foot-contact measurement. + +Core is unchanged by these DEBUG observation helpers and app tests. Latest core result remains 773 tests / 109 suites passed at the adopted spec baseline, in docs/review/displayed-playback/core-tests.log. The app suite validates the changed code. + +## Scope still open + +This is the first moving capture mechanism, not the final benchmark fixture. It uses WorldRenderer and GameSession but not the full GameScene HUD/intro path. Candidate animation installation, video/frame-image output, projection/camera transform records, foot landmark mapping, full stop/analog/collision/reversal/interruption/Reduced Motion matrix and coherent replacement cycles remain outstanding. The existing composition fixture is unchanged. No shipping animation phase policy, controller speed, textures, gameplay state or device-test approval changed. + +The initial shell xcodebuild attempt stopped before compiling due sandbox access to SwiftPM cache and Simulator services. The successful run used the existing Xcode simulator workflow. Result export required scoped access to Xcode's TestReport cache. No test assertion was weakened. diff --git a/docs/review/live-playback/frames.json b/docs/review/live-playback/frames.json new file mode 100644 index 00000000..3ce6887b --- /dev/null +++ b/docs/review/live-playback/frames.json @@ -0,0 +1,167 @@ +[ + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 49152, + "clip" : "player_idle|e", + "displayTime" : 164383.4807909167, + "facing" : "e", + "framePath" : "actor_player_idle_e_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 192, + "tick" : 0, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 64512, + "clip" : "player_move|n", + "displayTime" : 164383.7971090417, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 252, + "tick" : 15, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 79872, + "clip" : "player_move|n", + "displayTime" : 164384.22095225003, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 312, + "tick" : 30, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 87040, + "clip" : "player_move|n", + "displayTime" : 164384.35249962503, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 340, + "tick" : 37, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 101376, + "clip" : "player_move|n", + "displayTime" : 164384.58057708337, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 396, + "tick" : 51, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 115712, + "clip" : "player_move|n", + "displayTime" : 164384.80706845838, + "facing" : "n", + "framePath" : "actor_player_move_n_01@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 452, + "tick" : 65, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 124928, + "clip" : "player_move|n", + "displayTime" : 164384.95833033338, + "facing" : "n", + "framePath" : "actor_player_move_n_02@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 488, + "tick" : 74, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 129024, + "clip" : "player_move|n", + "displayTime" : 164385.03159258337, + "facing" : "n", + "framePath" : "actor_player_move_n_03@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 504, + "tick" : 78, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 134144, + "clip" : "player_move|n", + "displayTime" : 164385.11018720837, + "facing" : "n", + "framePath" : "actor_player_move_n_04@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 524, + "tick" : 83, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 140288, + "clip" : "player_move|n", + "displayTime" : 164385.2049707917, + "facing" : "n", + "framePath" : "actor_player_move_n_05@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 548, + "tick" : 89, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.125, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 141312, + "clip" : "player_move|n", + "displayTime" : 164385.26463437502, + "facing" : "n", + "framePath" : "actor_player_move_n_06@1x.png", + "height" : 64, + "renderedX" : 160, + "renderedY" : 552, + "tick" : 90, + "width" : 64 + } +] \ No newline at end of file diff --git a/docs/review/live-playback/observations.json b/docs/review/live-playback/observations.json new file mode 100644 index 00000000..777d4554 --- /dev/null +++ b/docs/review/live-playback/observations.json @@ -0,0 +1,24 @@ +{ + "samples": 11, + "tickRange": [ + 0, + 90 + ], + "displaySeconds": 1.7838434583100025, + "distinctMovementTextures": 6, + "clips": { + "player_idle|e": 1, + "player_move|n": 10 + }, + "firstRawPosition": [ + 40960, + 49152 + ], + "lastRawPosition": [ + 40960, + 141312 + ], + "rawUnitsPerWorldUnit": 256, + "missingTexturePaths": 0, + "maxRenderedVsQuantizedSnapshotDifference": 0.0 +} diff --git a/docs/review/live-playback/test-summary.json b/docs/review/live-playback/test-summary.json new file mode 100644 index 00000000..1e24b28f --- /dev/null +++ b/docs/review/live-playback/test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 99, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792036627.699, + "passedTests" : 97, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792036421.837, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "43% of duration", + "text" : "1 longest test run with outlier durations exceeding 18.13s (three standard deviations)" + } + ], + "totalTestCount" : 97 +} diff --git a/docs/review/moving-framing/README.md b/docs/review/moving-framing/README.md new file mode 100644 index 00000000..2ce5ca51 --- /dev/null +++ b/docs/review/moving-framing/README.md @@ -0,0 +1,11 @@ +# Moving framing comparison + +Focused test: Test-SSRuntime-2026.10.15_21-22-34--0700, testSharedProjectedPlayerTraversal. One test passes its explicit assertions across six variants (1× fixed, 1.25× fixed, 1.25× tracking; each standard and Reduced Motion). Every variant matches all 90 independent simulation positions and final digest, preserves clip/facing ownership, observes 16 frames and incurs zero player-outline readbacks. This is not blanket visual acceptance: fixed-view clipping is deliberately reported, not hidden by a shortened route. + +1× fixed: complete player canvas and camera emitter stay in view in recorded movement observations. 1.25× fixed: player canvas clips in 19 standard / 22 Reduced Motion distinct sampled ticks and the root eventually leaves the viewport. 1.25× tracking: no player-canvas clipping; root remains stable within floating-point precision. Camera emitter leaves view in 28 distinct sampled ticks in each mode. This does not establish missed warnings, because the scene deliberately filters encounter actors and moves the review camera. It establishes that a closer still cannot be promoted without encounter validation. + +Proposed decision: reject fixed 1.25× for this route; retain tracking 1.25× for legal-encounter comparison. No shipping camera/zoom policy changed. Source art, speed, anchors and cadence are unchanged. Unsupported idle source remains an existing coverage gap: visibility observations here require the player sprite and cover movement, not all idle/action states. + +Apple SKCameraNode documentation defines viewport ownership; the exact tracking policy/offset is our measured proposal, not an Apple aesthetic recommendation: https://developer.apple.com/documentation/spritekit/skcameranode . + +No new video or pixel-contact/seam acceptance in this run. Next: legal camera/attack scene with actual authoritative emitter locations and full encounter rendering, then normal/quarter playback. Keep foreground occlusion/input mapping and missing facings/actions open. diff --git a/docs/review/moving-framing/app-summary.json b/docs/review/moving-framing/app-summary.json new file mode 100644 index 00000000..f7093ffd --- /dev/null +++ b/docs/review/moving-framing/app-summary.json @@ -0,0 +1,42 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 1, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792124613.889, + "passedTests" : 1, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792124554.048, + "statistics" : [ + + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + + ], + "totalTestCount" : 1 +} diff --git a/docs/review/moving-framing/visibility-audit.json b/docs/review/moving-framing/visibility-audit.json new file mode 100644 index 00000000..727c5e45 --- /dev/null +++ b/docs/review/moving-framing/visibility-audit.json @@ -0,0 +1,205 @@ +[ + { + "zoom": 1.25, + "tracks": true, + "reduced": true, + "samples": 73, + "frames": 16, + "playerCanvasClippedTicks": [], + "cameraEmitterOffscreenTicks": [ + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75 + ], + "screenXRange": [ + 325.9276885986328, + 325.9276885986328 + ], + "screenYRange": [ + 149.4276885986328, + 149.42772674560547 + ] + }, + { + "zoom": 1.25, + "tracks": true, + "reduced": false, + "samples": 75, + "frames": 16, + "playerCanvasClippedTicks": [], + "cameraEmitterOffscreenTicks": [ + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75 + ], + "screenXRange": [ + 325.9276885986328, + 325.9276885986328 + ], + "screenYRange": [ + 149.4276885986328, + 149.42772674560547 + ] + }, + { + "zoom": 1.25, + "tracks": false, + "reduced": true, + "samples": 75, + "frames": 16, + "playerCanvasClippedTicks": [ + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75 + ], + "cameraEmitterOffscreenTicks": [], + "screenXRange": [ + 325.9276123046875, + 325.9276885986328 + ], + "screenYRange": [ + -38.83948516845703, + 146.77601623535156 + ] + }, + { + "zoom": 1.25, + "tracks": false, + "reduced": false, + "samples": 75, + "frames": 16, + "playerCanvasClippedTicks": [ + 54, + 55, + 56, + 57, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 67, + 68, + 69, + 70, + 71, + 72, + 74, + 75 + ], + "cameraEmitterOffscreenTicks": [], + "screenXRange": [ + 325.9276123046875, + 325.9276885986328 + ], + "screenYRange": [ + -38.83948516845703, + 146.77601623535156 + ] + }, + { + "zoom": 1, + "tracks": false, + "reduced": true, + "samples": 74, + "frames": 16, + "playerCanvasClippedTicks": [], + "cameraEmitterOffscreenTicks": [], + "screenXRange": [ + 366.14208984375, + 366.14215087890625 + ], + "screenYRange": [ + 26.528411865234375, + 175.02081298828125 + ] + }, + { + "zoom": 1, + "tracks": false, + "reduced": false, + "samples": 53, + "frames": 16, + "playerCanvasClippedTicks": [], + "cameraEmitterOffscreenTicks": [], + "screenXRange": [ + 366.14208984375, + 366.14215087890625 + ], + "screenYRange": [ + 26.528411865234375, + 168.6568603515625 + ] + } +] diff --git a/docs/review/occlusion-perimeter/frame-10.png b/docs/review/occlusion-perimeter/frame-10.png new file mode 100644 index 00000000..e6dcc76b Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-10.png differ diff --git a/docs/review/occlusion-perimeter/frame-100.png b/docs/review/occlusion-perimeter/frame-100.png new file mode 100644 index 00000000..34618c84 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-100.png differ diff --git a/docs/review/occlusion-perimeter/frame-110.png b/docs/review/occlusion-perimeter/frame-110.png new file mode 100644 index 00000000..ce4d9d47 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-110.png differ diff --git a/docs/review/occlusion-perimeter/frame-120.png b/docs/review/occlusion-perimeter/frame-120.png new file mode 100644 index 00000000..8d8ab1a2 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-120.png differ diff --git a/docs/review/occlusion-perimeter/frame-130.png b/docs/review/occlusion-perimeter/frame-130.png new file mode 100644 index 00000000..cded7c02 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-130.png differ diff --git a/docs/review/occlusion-perimeter/frame-140.png b/docs/review/occlusion-perimeter/frame-140.png new file mode 100644 index 00000000..602f7bbf Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-140.png differ diff --git a/docs/review/occlusion-perimeter/frame-150.png b/docs/review/occlusion-perimeter/frame-150.png new file mode 100644 index 00000000..590285ab Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-150.png differ diff --git a/docs/review/occlusion-perimeter/frame-160.png b/docs/review/occlusion-perimeter/frame-160.png new file mode 100644 index 00000000..7c1cd6fc Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-160.png differ diff --git a/docs/review/occlusion-perimeter/frame-170.png b/docs/review/occlusion-perimeter/frame-170.png new file mode 100644 index 00000000..61c71741 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-170.png differ diff --git a/docs/review/occlusion-perimeter/frame-180.png b/docs/review/occlusion-perimeter/frame-180.png new file mode 100644 index 00000000..b869725d Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-180.png differ diff --git a/docs/review/occlusion-perimeter/frame-190.png b/docs/review/occlusion-perimeter/frame-190.png new file mode 100644 index 00000000..ae659c00 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-190.png differ diff --git a/docs/review/occlusion-perimeter/frame-20.png b/docs/review/occlusion-perimeter/frame-20.png new file mode 100644 index 00000000..afed0cbe Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-20.png differ diff --git a/docs/review/occlusion-perimeter/frame-200.png b/docs/review/occlusion-perimeter/frame-200.png new file mode 100644 index 00000000..a95c038c Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-200.png differ diff --git a/docs/review/occlusion-perimeter/frame-30.png b/docs/review/occlusion-perimeter/frame-30.png new file mode 100644 index 00000000..098d4640 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-30.png differ diff --git a/docs/review/occlusion-perimeter/frame-40.png b/docs/review/occlusion-perimeter/frame-40.png new file mode 100644 index 00000000..7376a569 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-40.png differ diff --git a/docs/review/occlusion-perimeter/frame-50.png b/docs/review/occlusion-perimeter/frame-50.png new file mode 100644 index 00000000..b590b09c Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-50.png differ diff --git a/docs/review/occlusion-perimeter/frame-60.png b/docs/review/occlusion-perimeter/frame-60.png new file mode 100644 index 00000000..1aef9b25 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-60.png differ diff --git a/docs/review/occlusion-perimeter/frame-70.png b/docs/review/occlusion-perimeter/frame-70.png new file mode 100644 index 00000000..cbf7bc51 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-70.png differ diff --git a/docs/review/occlusion-perimeter/frame-80.png b/docs/review/occlusion-perimeter/frame-80.png new file mode 100644 index 00000000..3be5fa89 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-80.png differ diff --git a/docs/review/occlusion-perimeter/frame-90.png b/docs/review/occlusion-perimeter/frame-90.png new file mode 100644 index 00000000..b4c83cd9 Binary files /dev/null and b/docs/review/occlusion-perimeter/frame-90.png differ diff --git a/docs/review/occlusion-perimeter/frames.json b/docs/review/occlusion-perimeter/frames.json new file mode 100644 index 00000000..21187544 --- /dev/null +++ b/docs/review/occlusion-perimeter/frames.json @@ -0,0 +1,82 @@ +[ + { + "tick": 10, + "file": "frame-10.png" + }, + { + "tick": 20, + "file": "frame-20.png" + }, + { + "tick": 30, + "file": "frame-30.png" + }, + { + "tick": 40, + "file": "frame-40.png" + }, + { + "tick": 50, + "file": "frame-50.png" + }, + { + "tick": 60, + "file": "frame-60.png" + }, + { + "tick": 70, + "file": "frame-70.png" + }, + { + "tick": 80, + "file": "frame-80.png" + }, + { + "tick": 90, + "file": "frame-90.png" + }, + { + "tick": 100, + "file": "frame-100.png" + }, + { + "tick": 110, + "file": "frame-110.png" + }, + { + "tick": 120, + "file": "frame-120.png" + }, + { + "tick": 130, + "file": "frame-130.png" + }, + { + "tick": 140, + "file": "frame-140.png" + }, + { + "tick": 150, + "file": "frame-150.png" + }, + { + "tick": 160, + "file": "frame-160.png" + }, + { + "tick": 170, + "file": "frame-170.png" + }, + { + "tick": 180, + "file": "frame-180.png" + }, + { + "tick": 190, + "file": "frame-190.png" + }, + { + "tick": 200, + "file": "frame-200.png" + } +] diff --git a/docs/review/occlusion-perimeter/index.html b/docs/review/occlusion-perimeter/index.html new file mode 100644 index 00000000..beae90d7 --- /dev/null +++ b/docs/review/occlusion-perimeter/index.html @@ -0,0 +1 @@ +SS — perimeter occlusion review

Building perimeter: renderer review

Actual SpriteKit captures, sampled every 10 simulation ticks (6 images/second). The hooded player uses a static neutral pose: this is movement/occlusion evidence, not finished animation.

Player travelling around the building

The muted ground cue is a candidate. The transparent building still makes ground depth ambiguous. One building, no enemies or projectiles; no device acceptance.

Open an unscaled 2112×978 renderer capture

Evidence and remaining gaps \ No newline at end of file diff --git a/docs/review/occlusion-perimeter/native-frame-30.png b/docs/review/occlusion-perimeter/native-frame-30.png new file mode 100644 index 00000000..ba395720 Binary files /dev/null and b/docs/review/occlusion-perimeter/native-frame-30.png differ diff --git a/docs/review/occlusion-perimeter/perimeter-plate.png b/docs/review/occlusion-perimeter/perimeter-plate.png new file mode 100644 index 00000000..44530a7a Binary files /dev/null and b/docs/review/occlusion-perimeter/perimeter-plate.png differ diff --git a/docs/review/occlusion-perimeter/positions-q8.csv b/docs/review/occlusion-perimeter/positions-q8.csv new file mode 100644 index 00000000..0a92666c --- /dev/null +++ b/docs/review/occlusion-perimeter/positions-q8.csv @@ -0,0 +1,441 @@ +Isolated movement/collision probes. Radius18; existing obstacle unchanged. Neutral south art; no animation. +west,1,115200,180224 +west,2,116224,180224 +west,3,117248,180224 +west,4,118272,180224 +west,5,119296,180224 +west,6,120320,180224 +west,7,121344,180224 +west,8,122368,180224 +west,9,123392,180224 +west,10,124416,180224 +west,11,125440,180224 +west,12,126464,180224 +west,13,126464,180224 +west,14,126464,180224 +west,15,126464,180224 +west,16,126464,180224 +west,17,126464,180224 +west,18,126464,180224 +west,19,126464,180224 +west,20,126464,180224 +west,21,126464,180224 +west,22,126464,180224 +west,23,126464,180224 +west,24,126464,180224 +west,25,126464,180224 +west,26,126464,180224 +west,27,126464,180224 +west,28,126464,180224 +west,29,126464,180224 +west,30,126464,180224 +west,31,126464,180224 +west,32,126464,180224 +west,33,126464,180224 +west,34,126464,180224 +west,35,126464,180224 +west,36,126464,180224 +west,37,126464,180224 +west,38,126464,180224 +west,39,126464,180224 +west,40,126464,180224 +east,1,179712,180224 +east,2,178688,180224 +east,3,177664,180224 +east,4,176640,180224 +east,5,175616,180224 +east,6,174592,180224 +east,7,173568,180224 +east,8,172544,180224 +east,9,171520,180224 +east,10,170496,180224 +east,11,169472,180224 +east,12,168448,180224 +east,13,168448,180224 +east,14,168448,180224 +east,15,168448,180224 +east,16,168448,180224 +east,17,168448,180224 +east,18,168448,180224 +east,19,168448,180224 +east,20,168448,180224 +east,21,168448,180224 +east,22,168448,180224 +east,23,168448,180224 +east,24,168448,180224 +east,25,168448,180224 +east,26,168448,180224 +east,27,168448,180224 +east,28,168448,180224 +east,29,168448,180224 +east,30,168448,180224 +east,31,168448,180224 +east,32,168448,180224 +east,33,168448,180224 +east,34,168448,180224 +east,35,168448,180224 +east,36,168448,180224 +east,37,168448,180224 +east,38,168448,180224 +east,39,168448,180224 +east,40,168448,180224 +south,1,147456,147968 +south,2,147456,148992 +south,3,147456,150016 +south,4,147456,151040 +south,5,147456,152064 +south,6,147456,153088 +south,7,147456,154112 +south,8,147456,155136 +south,9,147456,156160 +south,10,147456,157184 +south,11,147456,158208 +south,12,147456,159232 +south,13,147456,159232 +south,14,147456,159232 +south,15,147456,159232 +south,16,147456,159232 +south,17,147456,159232 +south,18,147456,159232 +south,19,147456,159232 +south,20,147456,159232 +south,21,147456,159232 +south,22,147456,159232 +south,23,147456,159232 +south,24,147456,159232 +south,25,147456,159232 +south,26,147456,159232 +south,27,147456,159232 +south,28,147456,159232 +south,29,147456,159232 +south,30,147456,159232 +south,31,147456,159232 +south,32,147456,159232 +south,33,147456,159232 +south,34,147456,159232 +south,35,147456,159232 +south,36,147456,159232 +south,37,147456,159232 +south,38,147456,159232 +south,39,147456,159232 +south,40,147456,159232 +north,1,147456,212480 +north,2,147456,211456 +north,3,147456,210432 +north,4,147456,209408 +north,5,147456,208384 +north,6,147456,207360 +north,7,147456,206336 +north,8,147456,205312 +north,9,147456,204288 +north,10,147456,203264 +north,11,147456,202240 +north,12,147456,201216 +north,13,147456,201216 +north,14,147456,201216 +north,15,147456,201216 +north,16,147456,201216 +north,17,147456,201216 +north,18,147456,201216 +north,19,147456,201216 +north,20,147456,201216 +north,21,147456,201216 +north,22,147456,201216 +north,23,147456,201216 +north,24,147456,201216 +north,25,147456,201216 +north,26,147456,201216 +north,27,147456,201216 +north,28,147456,201216 +north,29,147456,201216 +north,30,147456,201216 +north,31,147456,201216 +north,32,147456,201216 +north,33,147456,201216 +north,34,147456,201216 +north,35,147456,201216 +north,36,147456,201216 +north,37,147456,201216 +north,38,147456,201216 +north,39,147456,201216 +north,40,147456,201216 +near-corner,1,114900,147668 +near-corner,2,115624,148392 +near-corner,3,116348,149116 +near-corner,4,117072,149840 +near-corner,5,117796,150564 +near-corner,6,118520,151288 +near-corner,7,119244,152012 +near-corner,8,119968,152736 +near-corner,9,120692,153460 +near-corner,10,121416,154184 +near-corner,11,122140,154908 +near-corner,12,122864,155632 +near-corner,13,123588,156356 +near-corner,14,124312,157080 +near-corner,15,125036,157804 +near-corner,16,125760,158528 +near-corner,17,126484,159252 +near-corner,18,127208,159976 +near-corner,19,127932,159976 +near-corner,20,127932,159976 +near-corner,21,127932,159976 +near-corner,22,127932,159976 +near-corner,23,127932,159976 +near-corner,24,127932,159976 +near-corner,25,127932,159976 +near-corner,26,127932,159976 +near-corner,27,127932,159976 +near-corner,28,127932,159976 +near-corner,29,127932,159976 +near-corner,30,127932,159976 +near-corner,31,127932,159976 +near-corner,32,127932,159976 +near-corner,33,127932,159976 +near-corner,34,127932,159976 +near-corner,35,127932,159976 +near-corner,36,127932,159976 +near-corner,37,127932,159976 +near-corner,38,127932,159976 +near-corner,39,127932,159976 +near-corner,40,127932,159976 +far-corner,1,180012,212780 +far-corner,2,179288,212056 +far-corner,3,178564,211332 +far-corner,4,177840,210608 +far-corner,5,177116,209884 +far-corner,6,176392,209160 +far-corner,7,175668,208436 +far-corner,8,174944,207712 +far-corner,9,174220,206988 +far-corner,10,173496,206264 +far-corner,11,172772,205540 +far-corner,12,172048,204816 +far-corner,13,171324,204092 +far-corner,14,170600,203368 +far-corner,15,169876,202644 +far-corner,16,169152,201920 +far-corner,17,168428,201196 +far-corner,18,167704,200472 +far-corner,19,166980,200472 +far-corner,20,166980,200472 +far-corner,21,166980,200472 +far-corner,22,166980,200472 +far-corner,23,166980,200472 +far-corner,24,166980,200472 +far-corner,25,166980,200472 +far-corner,26,166980,200472 +far-corner,27,166980,200472 +far-corner,28,166980,200472 +far-corner,29,166980,200472 +far-corner,30,166980,200472 +far-corner,31,166980,200472 +far-corner,32,166980,200472 +far-corner,33,166980,200472 +far-corner,34,166980,200472 +far-corner,35,166980,200472 +far-corner,36,166980,200472 +far-corner,37,166980,200472 +far-corner,38,166980,200472 +far-corner,39,166980,200472 +far-corner,40,166980,200472 +perimeter,1,122880,154624,occluded=false +perimeter,2,123904,154624,occluded=false +perimeter,3,124928,154624,occluded=false +perimeter,4,125952,154624,occluded=false +perimeter,5,126976,154624,occluded=false +perimeter,6,128000,154624,occluded=false +perimeter,7,129024,154624,occluded=false +perimeter,8,130048,154624,occluded=false +perimeter,9,131072,154624,occluded=false +perimeter,10,132096,154624,occluded=false +perimeter,11,133120,154624,occluded=false +perimeter,12,134144,154624,occluded=false +perimeter,13,135168,154624,occluded=false +perimeter,14,136192,154624,occluded=false +perimeter,15,137216,154624,occluded=false +perimeter,16,138240,154624,occluded=false +perimeter,17,139264,154624,occluded=false +perimeter,18,140288,154624,occluded=false +perimeter,19,141312,154624,occluded=false +perimeter,20,142336,154624,occluded=false +perimeter,21,143360,154624,occluded=false +perimeter,22,144384,154624,occluded=false +perimeter,23,145408,154624,occluded=false +perimeter,24,146432,154624,occluded=false +perimeter,25,147456,154624,occluded=false +perimeter,26,148480,154624,occluded=false +perimeter,27,149504,154624,occluded=false +perimeter,28,150528,154624,occluded=false +perimeter,29,151552,154624,occluded=false +perimeter,30,152576,154624,occluded=false +perimeter,31,153600,154624,occluded=false +perimeter,32,154624,154624,occluded=false +perimeter,33,155648,154624,occluded=false +perimeter,34,156672,154624,occluded=false +perimeter,35,157696,154624,occluded=false +perimeter,36,158720,154624,occluded=false +perimeter,37,159744,154624,occluded=false +perimeter,38,160768,154624,occluded=false +perimeter,39,161792,154624,occluded=false +perimeter,40,162816,154624,occluded=false +perimeter,41,163840,154624,occluded=false +perimeter,42,164864,154624,occluded=false +perimeter,43,165888,154624,occluded=false +perimeter,44,166912,154624,occluded=false +perimeter,45,167936,154624,occluded=false +perimeter,46,168960,154624,occluded=false +perimeter,47,169984,154624,occluded=false +perimeter,48,171008,154624,occluded=false +perimeter,49,172032,154624,occluded=false +perimeter,50,173056,154624,occluded=false +perimeter,51,173056,155648,occluded=false +perimeter,52,173056,156672,occluded=false +perimeter,53,173056,157696,occluded=false +perimeter,54,173056,158720,occluded=false +perimeter,55,173056,159744,occluded=false +perimeter,56,173056,160768,occluded=false +perimeter,57,173056,161792,occluded=false +perimeter,58,173056,162816,occluded=false +perimeter,59,173056,163840,occluded=false +perimeter,60,173056,164864,occluded=false +perimeter,61,173056,165888,occluded=false +perimeter,62,173056,166912,occluded=false +perimeter,63,173056,167936,occluded=false +perimeter,64,173056,168960,occluded=false +perimeter,65,173056,169984,occluded=false +perimeter,66,173056,171008,occluded=false +perimeter,67,173056,172032,occluded=false +perimeter,68,173056,173056,occluded=false +perimeter,69,173056,174080,occluded=true +perimeter,70,173056,175104,occluded=true +perimeter,71,173056,176128,occluded=true +perimeter,72,173056,177152,occluded=true +perimeter,73,173056,178176,occluded=true +perimeter,74,173056,179200,occluded=true +perimeter,75,173056,180224,occluded=true +perimeter,76,173056,181248,occluded=true +perimeter,77,173056,182272,occluded=true +perimeter,78,173056,183296,occluded=true +perimeter,79,173056,184320,occluded=true +perimeter,80,173056,185344,occluded=true +perimeter,81,173056,186368,occluded=true +perimeter,82,173056,187392,occluded=true +perimeter,83,173056,188416,occluded=true +perimeter,84,173056,189440,occluded=true +perimeter,85,173056,190464,occluded=true +perimeter,86,173056,191488,occluded=true +perimeter,87,173056,192512,occluded=true +perimeter,88,173056,193536,occluded=true +perimeter,89,173056,194560,occluded=true +perimeter,90,173056,195584,occluded=true +perimeter,91,173056,196608,occluded=true +perimeter,92,173056,197632,occluded=true +perimeter,93,173056,198656,occluded=true +perimeter,94,173056,199680,occluded=true +perimeter,95,173056,200704,occluded=true +perimeter,96,173056,201728,occluded=true +perimeter,97,173056,202752,occluded=true +perimeter,98,173056,203776,occluded=true +perimeter,99,173056,204800,occluded=true +perimeter,100,173056,205824,occluded=true +perimeter,101,172032,205824,occluded=true +perimeter,102,171008,205824,occluded=true +perimeter,103,169984,205824,occluded=true +perimeter,104,168960,205824,occluded=true +perimeter,105,167936,205824,occluded=true +perimeter,106,166912,205824,occluded=true +perimeter,107,165888,205824,occluded=true +perimeter,108,164864,205824,occluded=true +perimeter,109,163840,205824,occluded=true +perimeter,110,162816,205824,occluded=true +perimeter,111,161792,205824,occluded=true +perimeter,112,160768,205824,occluded=true +perimeter,113,159744,205824,occluded=true +perimeter,114,158720,205824,occluded=true +perimeter,115,157696,205824,occluded=true +perimeter,116,156672,205824,occluded=true +perimeter,117,155648,205824,occluded=true +perimeter,118,154624,205824,occluded=true +perimeter,119,153600,205824,occluded=true +perimeter,120,152576,205824,occluded=true +perimeter,121,151552,205824,occluded=true +perimeter,122,150528,205824,occluded=true +perimeter,123,149504,205824,occluded=true +perimeter,124,148480,205824,occluded=true +perimeter,125,147456,205824,occluded=true +perimeter,126,146432,205824,occluded=true +perimeter,127,145408,205824,occluded=true +perimeter,128,144384,205824,occluded=true +perimeter,129,143360,205824,occluded=true +perimeter,130,142336,205824,occluded=true +perimeter,131,141312,205824,occluded=true +perimeter,132,140288,205824,occluded=false +perimeter,133,139264,205824,occluded=false +perimeter,134,138240,205824,occluded=false +perimeter,135,137216,205824,occluded=false +perimeter,136,136192,205824,occluded=false +perimeter,137,135168,205824,occluded=false +perimeter,138,134144,205824,occluded=false +perimeter,139,133120,205824,occluded=false +perimeter,140,132096,205824,occluded=false +perimeter,141,131072,205824,occluded=false +perimeter,142,130048,205824,occluded=false +perimeter,143,129024,205824,occluded=false +perimeter,144,128000,205824,occluded=false +perimeter,145,126976,205824,occluded=false +perimeter,146,125952,205824,occluded=false +perimeter,147,124928,205824,occluded=false +perimeter,148,123904,205824,occluded=false +perimeter,149,122880,205824,occluded=false +perimeter,150,121856,205824,occluded=false +perimeter,151,121856,204800,occluded=false +perimeter,152,121856,203776,occluded=false +perimeter,153,121856,202752,occluded=false +perimeter,154,121856,201728,occluded=false +perimeter,155,121856,200704,occluded=false +perimeter,156,121856,199680,occluded=false +perimeter,157,121856,198656,occluded=false +perimeter,158,121856,197632,occluded=false +perimeter,159,121856,196608,occluded=false +perimeter,160,121856,195584,occluded=false +perimeter,161,121856,194560,occluded=false +perimeter,162,121856,193536,occluded=false +perimeter,163,121856,192512,occluded=false +perimeter,164,121856,191488,occluded=false +perimeter,165,121856,190464,occluded=false +perimeter,166,121856,189440,occluded=false +perimeter,167,121856,188416,occluded=false +perimeter,168,121856,187392,occluded=false +perimeter,169,121856,186368,occluded=false +perimeter,170,121856,185344,occluded=false +perimeter,171,121856,184320,occluded=false +perimeter,172,121856,183296,occluded=false +perimeter,173,121856,182272,occluded=false +perimeter,174,121856,181248,occluded=false +perimeter,175,121856,180224,occluded=false +perimeter,176,121856,179200,occluded=false +perimeter,177,121856,178176,occluded=false +perimeter,178,121856,177152,occluded=false +perimeter,179,121856,176128,occluded=false +perimeter,180,121856,175104,occluded=false +perimeter,181,121856,174080,occluded=false +perimeter,182,121856,173056,occluded=false +perimeter,183,121856,172032,occluded=false +perimeter,184,121856,171008,occluded=false +perimeter,185,121856,169984,occluded=false +perimeter,186,121856,168960,occluded=false +perimeter,187,121856,167936,occluded=false +perimeter,188,121856,166912,occluded=false +perimeter,189,121856,165888,occluded=false +perimeter,190,121856,164864,occluded=false +perimeter,191,121856,163840,occluded=false +perimeter,192,121856,162816,occluded=false +perimeter,193,121856,161792,occluded=false +perimeter,194,121856,160768,occluded=false +perimeter,195,121856,159744,occluded=false +perimeter,196,121856,158720,occluded=false +perimeter,197,121856,157696,occluded=false +perimeter,198,121856,156672,occluded=false +perimeter,199,121856,155648,occluded=false +perimeter,200,121856,154624,occluded=false \ No newline at end of file diff --git a/docs/review/occlusion-perimeter/review.md b/docs/review/occlusion-perimeter/review.md new file mode 100644 index 00000000..40d998a0 --- /dev/null +++ b/docs/review/occlusion-perimeter/review.md @@ -0,0 +1,22 @@ +# BP-009 continuous perimeter review + +Spec pin: 00ce027209e6c233bcdd35295f35f0b9bfb9bbe5. Runtime base: 897e952; accompanying test diff adds this probe. Test-only scene; no production occlusion behavior adopted. + +## Evidence + +- Actual SpriteKit renderer, iPhone 17 Pro iOS 26.5 Simulator. Native attachments are 2112×978; playback copies are 704×326. +- 200 consecutive simulation ticks using Movement.displacement and Collision.slideCircle, radius 18, around the authored 128×128 solid centered at (576,704). Every tick asserts nonpenetration; final Q8 position equals start. +- Geometry-derived eligibility plus projected rectangular sprite overlap. Transitions: [(69, 'occluded=true'), (132, 'occluded=false')]. Exactly one entry and one exit; normal building opacity restored. +- Playback samples every ten ticks, giving 20 images over a 200-tick path. Sampling is not a frame-rate or smoothness measurement. +- Core regression: 764 tests in 108 suites passed in 413.477 seconds using `swift test --disable-sandbox --cache-path ../swift-cache --config-path ../swift-config --security-path ../swift-security`. +- iOS result: 87 tests passed, 0 failed, 0 skipped (89 parameterized executions). See test-summary.json. + +## Visual judgment + +The muted footprint is less conspicuous than the previous white diagnostic boundary. However, the faded wall still overlaps the player's body and the contact ring is easy to read as a floating marker. This is not accepted benchmark art or a selected production occlusion treatment. The plate also exposes scale/material differences between building, player, camera and paving; increasing source resolution alone will not fix those. + +## Limits and next work + +The player remains a static south-facing pose on every leg. No gait, directional animation, foot planting or frame fidelity is validated. One isolated solid and rectangular image bounds do not cover multiple occluders, alpha silhouettes, direction reversal, stationary contact, scene edges, restart/removal, upright props, legal hazards or Reduced Motion settings. The route goes around the obstacle with clearance; separate six contact probes exercise contact positions. This fixture uses the runtime movement and collision functions, not a full legal Simulation encounter. Production classification, transitions, encounter readability and device performance remain open. + +Next compare the assembled scene at native resolution and selected framing before increasing individual asset exports. Retain authored geometry and avoid changing collision to fit art. diff --git a/docs/review/occlusion-perimeter/test-summary.json b/docs/review/occlusion-perimeter/test-summary.json new file mode 100644 index 00000000..8193a582 --- /dev/null +++ b/docs/review/occlusion-perimeter/test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 89, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792005793.116, + "passedTests" : 87, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792005692.576, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "52% of duration", + "text" : "2 longest test runs with outlier durations exceeding 9.69s (three standard deviations)" + } + ], + "totalTestCount" : 87 +} diff --git a/docs/review/outline-resolution/core-pin-tests.log b/docs/review/outline-resolution/core-pin-tests.log new file mode 100644 index 00000000..ac6964f3 --- /dev/null +++ b/docs/review/outline-resolution/core-pin-tests.log @@ -0,0 +1,58 @@ +[0/1] Planning build +Building for debugging... +[0/4] Write sources +[1/4] Copying contracts +[2/5] Copying SPEC_PIN.txt +[3/5] Write swift-version--58304C5D6DBC2206.txt +[5/7] Compiling SurveillanceCore ContractVersions.swift +[6/7] Emitting module SurveillanceCore +[7/14] Compiling SurveillanceCore RunReceipt.swift +[8/14] Compiling SurveillanceCore AssetCatalog.swift +[9/14] Compiling SurveillanceCore ProceduralVFX.swift +[10/14] Compiling SurveillanceCore ArenaManifest.swift +[11/14] Compiling SurveillanceCore ReleaseCandidateEvidence.swift +[12/14] Compiling SurveillanceCore ReplayEnvelope.swift +[13/14] Compiling SurveillanceCore Simulation.swift +[14/26] Compiling SurveillanceCoreTests CameraPlacementTests.swift +[15/26] Compiling SurveillanceCoreTests ClipMetadataTests.swift +[16/26] Compiling SurveillanceCoreTests DailyRunGhostTests.swift +[17/26] Compiling SurveillanceCoreTests ProceduralVFXTests.swift +[18/26] Compiling SurveillanceCoreTests ReadabilityFinishTests.swift +[19/26] Compiling SurveillanceCoreTests ContractVersionsTests.swift +[20/26] Compiling SurveillanceCoreTests AssetCatalogTests.swift +[21/26] Compiling SurveillanceCoreTests AmbientMotionTests.swift +[22/26] Compiling SurveillanceCoreTests ArenaAndSimulationTests.swift +[23/26] Compiling SurveillanceCoreTests ReleaseCandidateEvidenceTests.swift +[24/27] Compiling SurveillanceCoreTests ReplayTests.swift +[25/27] Emitting module SurveillanceCoreTests +[25/27] Write Objects.LinkFileList +[26/27] Linking SSRuntimePackageTests +Build complete! (16.54s) +Test Suite 'Selected tests' started at 2026-10-14 16:55:10.047. +Test Suite 'SSRuntimePackageTests.xctest' started at 2026-10-14 16:55:10.050. +Test Suite 'SSRuntimePackageTests.xctest' passed at 2026-10-14 16:55:10.050. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds +Test Suite 'Selected tests' passed at 2026-10-14 16:55:10.050. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.003) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite ContractVersionsTests started. +◇ Suite ClipTimingTests started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test exactMigrationVectors() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test currentIdentityIsCompatible() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 0.001 seconds. +✔ Test currentIdentityIsCompatible() passed after 0.001 seconds. +◇ Test unknownIdentityFailsClosed() started. +✔ Test unknownIdentityFailsClosed() passed after 0.001 seconds. +✔ Suite ContractVersionsTests passed after 0.001 seconds. +✔ Test exactMigrationVectors() passed after 0.001 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 0.001 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 0.001 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 0.278 seconds. +✔ Suite ClipTimingTests passed after 0.278 seconds. +✔ Test run with 7 tests in 2 suites passed after 0.278 seconds. diff --git a/docs/review/outline-resolution/finer/capture-summary.json b/docs/review/outline-resolution/finer/capture-summary.json new file mode 100644 index 00000000..8397be8d --- /dev/null +++ b/docs/review/outline-resolution/finer/capture-summary.json @@ -0,0 +1,38 @@ +{ + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "97" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "compositionStatus": "Success", + "attachments": [ + "BP002-painted-neutral-south-unchanged-zoom", + "BP007-outline-3x-south-unchanged-zoom", + "BP002-painted-neutral-east-unchanged-zoom", + "BP007-outline-3x-east-unchanged-zoom", + "BP002-painted-neutral-north-unchanged-zoom", + "BP007-outline-3x-north-unchanged-zoom", + "BP002-painted-neutral-west-unchanged-zoom", + "BP007-outline-3x-west-unchanged-zoom", + "BP002-painted-neutral-south-equal-area-zoom", + "BP007-outline-3x-south-equal-area-zoom", + "BP002-painted-neutral-east-equal-area-zoom", + "BP007-outline-3x-east-equal-area-zoom", + "BP002-painted-neutral-north-equal-area-zoom", + "BP007-outline-3x-north-equal-area-zoom", + "BP002-painted-neutral-west-equal-area-zoom", + "BP007-outline-3x-west-equal-area-zoom" + ] +} diff --git a/docs/review/outline-resolution/finer/core-tests.log b/docs/review/outline-resolution/finer/core-tests.log new file mode 100644 index 00000000..dab7f04e --- /dev/null +++ b/docs/review/outline-resolution/finer/core-tests.log @@ -0,0 +1,1840 @@ +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.37s) +Test Suite 'All tests' started at 2026-10-14 17:22:53.902. +Test Suite 'All tests' passed at 2026-10-14 17:22:53.905. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.003) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite ContractVersionsTests started. +◇ Suite ReplayTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite PacingProbeTests started. +◇ Suite CameraPlacementTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite DeterminismTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite CameraHUDTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite ClipMetadataTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite RunTelemetryTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite OpeningTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite AwarenessTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite ProceduralVFXTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite TamperFloorTests started. +◇ Suite SimulationClockTests started. +◇ Suite ContractVectorTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite AmbientMotionTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite ConeOrientationTests started. +◇ Suite DailyFlavourTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite DefectRegistryTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite CameraPresentationTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite MedalTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite VisualLanguageTests started. +◇ Suite CourtClimaxTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite RunCardTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite EventCatalogTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite AudioProjectorTests started. +◇ Suite GhostSettingTests started. +◇ Suite QuietApproachTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite OriginalArtTests started. +◇ Suite KernelVectorTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite AssetCatalogTests started. +◇ Suite StealthTextureTests started. +◇ Suite TransitPatrolTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite CameraFairnessTests started. +◇ Suite GhostRunTests started. +◇ Suite CameraFollowTests started. +◇ Suite CombatCausalityTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite CaptainCameraTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite ClipTimingTests started. +◇ Suite CommitClipTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite HUDPresentationTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite SilhouetteTests started. +◇ Suite GateVerificationTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite D021CeilingsTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite GameFeelTests started. +◇ Suite DamageOrderingTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite ApproximateCueTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite HUDMappingTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite CaptainClipTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite DaemonClipTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Test currentIdentityIsCompatible() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test sha256KnownVector() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test ghostIsOnByDefault() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test exactMigrationVectors() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test originalsAreAdmitted() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test daemonHasClips() started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test currentIdentityIsCompatible() passed after 6.509 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 7.908 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 8.367 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 8.367 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 8.367 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 8.367 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 8.473 seconds. +✔ Test sha256KnownVector() passed after 8.473 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 8.473 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 10.344 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 10.344 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 10.344 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 10.344 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 10.344 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 10.344 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 10.344 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 10.344 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 10.344 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 10.344 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 10.344 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 10.345 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 10.372 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 10.971 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 10.971 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 10.971 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 10.971 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 10.971 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 10.972 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 10.972 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 10.971 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 10.971 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 10.972 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 10.972 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 10.972 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 10.972 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 10.972 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 10.973 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 10.973 seconds. +✔ Test attackStatesAreUnchanged() passed after 10.972 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 10.973 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 10.972 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 10.972 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 10.972 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 10.972 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 10.972 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 10.972 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 10.972 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 10.972 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 10.972 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 10.973 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 10.972 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 10.972 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 10.972 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 10.972 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 10.975 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 10.975 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 10.977 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 10.975 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 10.975 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 10.975 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 10.975 seconds. +✔ Test aFreshRunStartsQuiet() passed after 10.975 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 10.975 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 10.975 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 10.975 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 10.975 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 10.975 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 10.975 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 10.977 seconds. +✔ Test ghostIsOnByDefault() passed after 10.975 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 10.977 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 10.975 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 10.975 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 10.975 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 10.975 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 10.975 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 10.975 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 10.975 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 10.975 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 10.975 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 10.975 seconds. +✔ Test anUnawareKillIsATakedown() passed after 10.975 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 10.976 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 10.976 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 10.975 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 10.975 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 10.975 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 10.976 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 10.975 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 10.976 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 10.975 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 10.976 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 10.976 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 10.976 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 10.977 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 10.976 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 10.976 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 10.976 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 10.976 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 10.976 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 10.976 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 10.976 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 10.976 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 10.976 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 10.979 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 10.976 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 10.976 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 10.976 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 10.976 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 10.976 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 10.976 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 10.976 seconds. +✔ Test exactMigrationVectors() passed after 10.976 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 10.976 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 10.976 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 10.976 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 10.976 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 10.976 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 10.976 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 10.976 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 10.976 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 10.977 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 10.976 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 10.976 seconds. +✔ Test mappedElementsScaleProportionally() passed after 10.976 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 10.976 seconds. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 10.976 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 10.976 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 10.976 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 10.977 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 10.977 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 10.976 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 10.976 seconds. +✔ Test originalsAreAdmitted() passed after 10.977 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 10.975 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 10.976 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 10.975 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 10.980 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 10.931 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 10.915 seconds. +✔ Test daemonHasClips() passed after 10.908 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 10.560 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 10.300 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 10.300 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Suite DailyFlavourTests passed after 12.609 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 12.609 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 12.609 seconds. +✔ Suite DefectRegistryTests passed after 12.609 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 12.607 seconds. +✔ Suite CameraFollowTests passed after 12.608 seconds. +✔ Suite ExposureFinalizationTests passed after 12.608 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 12.604 seconds. +✔ Suite ClipTimingTests passed after 12.609 seconds. +✔ Suite CanonicalArenaZonesTests passed after 12.609 seconds. +✔ Suite ClipMetadataV2Tests passed after 12.609 seconds. +✔ Suite CombatFeedbackTests passed after 12.608 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test playingIsNotTerminal() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test identityMismatchIsRejected() started. +◇ Test nodeAndCopyAgree() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Test unknownIdentityFailsClosed() passed after 2.464 seconds. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 2.476 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 2.558 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 2.558 seconds. +✔ Test aCompleteGroupIsBacked() passed after 2.558 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 2.558 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 2.655 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 2.655 seconds. +✔ Test playingIsNotTerminal() passed after 2.655 seconds. +✔ Test seedIsDeterministicForADate() passed after 2.871 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 2.871 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 2.871 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 2.871 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 2.871 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 2.871 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 2.871 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 2.871 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 2.871 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 2.871 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 2.871 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 2.871 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 2.903 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 2.903 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 2.903 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 2.903 seconds. +✔ Test familiesMapToDistinctAssets() passed after 2.903 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 2.913 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 2.913 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 15.520 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 2.913 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 2.913 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 2.913 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 2.913 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 2.913 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 2.913 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 2.913 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 2.913 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 2.968 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 2.969 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 2.968 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 2.968 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 2.968 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 2.968 seconds. +◇ Test gateT908OpenDefectsFailReport() started. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 15.578 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 2.968 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 2.968 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 2.968 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 2.968 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 2.968 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 2.968 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 2.968 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 2.968 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 2.968 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 2.968 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 2.968 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 2.968 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test captainArtIsAllOrNothing() passed after 2.968 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 2.968 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 2.968 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 2.968 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 2.968 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 2.968 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 2.968 seconds. +✔ Test successRowsWithNoStoredBest() passed after 2.969 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 2.968 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 2.968 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 2.968 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 2.968 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 2.968 seconds. +✔ Test windowsMatchTheD090Table() passed after 2.968 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 15.568 seconds. +✔ Test identityMismatchIsRejected() passed after 2.968 seconds. +✔ Test nodeAndCopyAgree() passed after 2.962 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 2.962 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 2.962 seconds. +✔ Test musicAssetIdsAreReachable() passed after 2.962 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 2.962 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 2.970 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 2.969 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 2.968 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 2.933 seconds. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 2.914 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 3.011 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 2.423 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test exposureEX007TamperWithoutContact() passed after 2.359 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 3.011 seconds. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Suite ContractVersionsTests passed after 15.829 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 3.207 seconds. +✔ Suite SimulationClockTests passed after 15.829 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 15.829 seconds. +✔ Suite VisualLanguageTests passed after 15.829 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 15.825 seconds. +✔ Suite CameraMountSolidTests passed after 15.829 seconds. +✔ Suite AssetCatalogTests passed after 15.829 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.247 seconds. +✔ Suite SilhouetteTests passed after 15.829 seconds. +✔ Suite ObjectiveProjectionTests passed after 15.829 seconds. +✔ Suite ReceiptArchiveTests passed after 15.830 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 15.911 seconds. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +✔ Suite PlaytestEvidenceLoaderTests passed after 15.914 seconds. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test patrolSlipSearch() started. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 2.836 seconds. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test profileT406AggregateReportIsStable() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 2.773 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 5.412 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 2.772 seconds. +✔ Test groupsAreBackedIndependently() passed after 2.772 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 2.772 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 3.123 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 3.123 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 3.123 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 3.290 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 3.290 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 3.290 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 3.289 seconds. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 6.589 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 3.290 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 3.289 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 3.289 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 3.289 seconds. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 3.289 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 3.289 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 3.289 seconds. +◇ Test noOrphanedAttackClipNamesRemain() started. +✔ Test ambientGameplayImplicationFailsClosed() passed after 3.495 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 3.495 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 6.795 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 3.495 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 3.506 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 19.418 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 3.506 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 3.507 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 3.506 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 3.506 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 3.506 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 3.506 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 3.506 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 4.014 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 4.014 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 4.016 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 4.014 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 4.014 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 4.014 seconds. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 4.015 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 4.015 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 4.014 seconds. +✔ Test patrolSlipSearch() passed after 4.014 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 4.014 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 4.014 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 4.014 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 4.014 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 4.014 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 4.014 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 4.014 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 4.016 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 4.014 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 4.014 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 4.014 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 4.014 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 4.014 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 4.015 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 4.014 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 4.014 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 4.014 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 4.014 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 4.014 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 4.014 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 4.014 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 4.014 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 4.014 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 4.014 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 4.014 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 19.929 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 3.975 seconds. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 3.957 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 4.265 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 3.816 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 2.822 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 4.214 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Suite CivicSeamIdentityTests passed after 20.187 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 4.272 seconds. +✔ Suite CameraHousingArtTests passed after 20.189 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Suite CameraPresentationTests passed after 20.189 seconds. +✔ Suite EnvironmentContractTests passed after 20.189 seconds. +✔ Suite PatrolSlipSearch passed after 20.190 seconds. +✔ Suite ArenaAndSimulationTests passed after 20.188 seconds. +✔ Suite EventCatalogTests passed after 20.189 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.259 seconds. +✔ Suite MusicBedCoverageTests passed after 20.189 seconds. +✔ Suite HUDPresentationTests passed after 20.188 seconds. +◇ Test theTwoTelegraphsAreDistinguishable() started. +✔ Suite ExpansionGateDecisionTests passed after 20.188 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 4.273 seconds. +✔ Suite TerminalShareGeometryTests passed after 20.188 seconds. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +✔ Test headingsAdvanceClockwise() passed after 0.115 seconds. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +✔ Test noOrphanedAttackClipNamesRemain() passed after 1.091 seconds. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 2.042 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 2.042 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 2.041 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 2.041 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 2.433 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 2.433 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 2.433 seconds. +DAILY-RUN-400 distinct=400 salted=0 +✔ Test encounterEN018MobCSpawnsAware() passed after 5.957 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 3.019 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 3.019 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 3.019 seconds. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 3.019 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 3.019 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 3.019 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 3.133 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 3.019 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 3.019 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 3.019 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 3.019 seconds. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 3.377 seconds. +✔ Test lockdownOutranksExtraction() passed after 3.377 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 7.768 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 3.391 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 3.391 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 3.391 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 3.391 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 3.391 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 3.391 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 3.391 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 3.579 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 3.579 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 3.579 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 3.580 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 3.579 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 3.579 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 3.579 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 3.579 seconds. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 3.579 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 3.579 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 3.579 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 3.579 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 3.579 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 3.579 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 3.579 seconds. +✔ Suite CaptainClipTests passed after 23.884 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 3.579 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 3.579 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 3.579 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 3.579 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 3.579 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 3.579 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 3.580 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 3.579 seconds. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 3.579 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 3.579 seconds. +✔ Test audioCoverageIsMeasurable() passed after 3.579 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 3.582 seconds. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 2.965 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 3.119 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 2.521 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 2.482 seconds. +✔ Test tamperedCommandIsRejected() passed after 3.755 seconds. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Suite CameraHUDTests passed after 24.149 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 2.569 seconds. +✔ Suite D021CeilingsTests passed after 24.148 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite TutorialCardDurationTests passed after 24.149 seconds. +✔ Suite RunTelemetryTests passed after 24.149 seconds. +✔ Suite AudioProjectorSmokeTests passed after 24.149 seconds. +✔ Suite AssetIntakeChecks passed after 24.150 seconds. +✔ Suite GhostSettingTests passed after 24.149 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 3.843 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 0.264 seconds. +✔ Suite CaptainCameraTests passed after 24.148 seconds. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 0.264 seconds. +✔ Suite ApproximateCueTests passed after 24.148 seconds. +✔ Suite CombatAuthorityReceiptTests passed after 24.148 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test correlatorCommitStaysAStateClip() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test anyTouchSkips() started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 3.882 seconds. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test tamperedDigestIsRejected() started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 25.284 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 1.105 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 1.105 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 1.208 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 1.208 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 1.208 seconds. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 1.209 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 1.208 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 1.208 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 1.208 seconds. +✔ Test correlatorCommitStaysAStateClip() passed after 1.208 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 1.208 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 1.208 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 1.208 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 1.208 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 1.208 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 1.208 seconds. +◇ Test everyActorSpriteIsSizeChecked() started. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 1.209 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 1.209 seconds. +✔ Test anyTouchSkips() passed after 1.209 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 1.208 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 1.208 seconds. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 1.208 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 1.208 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 1.412 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 1.412 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 5.294 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 1.412 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 1.412 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 1.412 seconds. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 1.412 seconds. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 1.412 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 1.412 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 1.412 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 1.412 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 1.412 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 1.412 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 10.018 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 1.412 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 1.412 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 1.412 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 1.412 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 2.266 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 1.412 seconds. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 1.412 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 1.412 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 5.296 seconds. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 1.255 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 0.889 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test exposureEX010SingleStateJumpEvent() passed after 0.968 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 1.387 seconds. +✔ Suite DeviceRunEvidenceTests passed after 25.826 seconds. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 1.640 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 1.640 seconds. +✔ Suite TutorialPreemptionTests passed after 25.828 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 0.227 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.227 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 25.827 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.227 seconds. +✔ Suite ReplayMatrixTests passed after 25.827 seconds. +✔ Suite TamperFloorTests passed after 25.828 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test noTwoPhasesShareABed() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test informantContactHitShowsItsCommit() started. +✔ Suite ReplayTests passed after 25.835 seconds. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test labelFormat() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 0.748 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 0.748 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 0.748 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 0.748 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 0.748 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 2.395 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 0.749 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 0.749 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 0.749 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 1.188 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 0.749 seconds. +✔ Test informantContactHitShowsItsCommit() passed after 0.749 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 0.748 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 0.748 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 0.748 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 0.748 seconds. +◇ Test spawnRuleCoversEveryCause() started. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 0.757 seconds. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 0.757 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 0.757 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 0.757 seconds. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 0.757 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 0.757 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 0.759 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 0.759 seconds. +✔ Test noTwoPhasesShareABed() passed after 0.760 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 0.759 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 0.759 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 0.759 seconds. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 0.759 seconds. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 0.759 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 0.759 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 0.759 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 0.759 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 0.759 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 0.759 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 0.761 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 0.759 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 0.759 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 0.759 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 0.759 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 0.759 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 0.759 seconds. +✔ Test labelFormat() passed after 0.759 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 0.652 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 0.517 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 0.517 seconds. +✔ Suite DeterminismTests passed after 26.678 seconds. +✔ Suite ObjectiveGraphTests passed after 26.678 seconds. +✔ Suite QuietApproachPresentationTests passed after 26.678 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 0.085 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 0.850 seconds. +✔ Suite ExtractionCountdownTests passed after 26.679 seconds. +✔ Suite CameraDestructionReceiptTests passed after 26.679 seconds. +✔ Suite BossPhaseMusicTests passed after 26.679 seconds. +✔ Suite ArenaReachabilityTests passed after 26.679 seconds. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 10.765 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 0.084 seconds. +✔ Suite AudioProjectorTests passed after 26.680 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.084 seconds. +✔ Suite DamageOrderingTests passed after 26.679 seconds. +✔ Suite DailyRunSeedTests passed after 26.681 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.085 seconds. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 2.533 seconds. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +✔ Suite HUDMappingTests passed after 26.682 seconds. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test playerPC003HalfMagnitude() started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test runtimeMountSolidsHaveNoArt() passed after 1.200 seconds. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 1.200 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 1.200 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 1.200 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 1.200 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 1.200 seconds. +✔ Test tamperedDigestIsRejected() passed after 3.129 seconds. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 1.200 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 1.200 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 1.200 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 1.200 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 1.200 seconds. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 1.209 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 1.209 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 1.209 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 1.209 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 1.530 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 1.529 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 1.529 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 1.529 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 1.529 seconds. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 1.530 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 1.530 seconds. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 1.530 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 1.530 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 1.530 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 1.530 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 1.530 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 1.530 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 1.530 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 1.529 seconds. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 1.187 seconds. +✔ Test playerPC003HalfMagnitude() passed after 1.181 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 1.542 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Suite RunOutcomeTerminalTests passed after 28.320 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Suite ProceduralVFXTests passed after 28.320 seconds. +✔ Suite RuntimeBundleTests passed after 28.319 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 0.428 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.428 seconds. +✔ Suite EnemyBehaviourTests passed after 28.320 seconds. +✔ Suite TerminalPrecedenceTests passed after 28.320 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 1.275 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 12.398 seconds. +✔ Suite DaemonClipTests passed after 28.322 seconds. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test quietRestoreFailsClosed() started. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.056 seconds. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test tamperedTicksAreRejected() started. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.056 seconds. +◇ Test groundTilesAreUniform() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test theLatchIsInTheDigest() started. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test blackoutNeedsNetworkBlackout() started. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 0.164 seconds. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +◇ Test peakDetectionIsTheHighestReached() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test coverageCountsOnlyDeclaredIds() passed after 0.973 seconds. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 0.973 seconds. +✔ Suite CombatCausalityTests passed after 29.349 seconds. +✔ Test quietRestoreFailsClosed() passed after 0.973 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 0.973 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 2.667 seconds. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 0.973 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 0.973 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 0.973 seconds. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 0.996 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 0.996 seconds. +✔ Suite ConeOrientationTests passed after 29.373 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 0.997 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 1.004 seconds. +✔ Test theLatchIsInTheDigest() passed after 1.004 seconds. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 1.004 seconds. +◇ Test sharedSourcesShareOneDeliveredFile() started. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 1.004 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 1.004 seconds. +◇ Test profileT406GateC011SimulationBounds() started. +✔ Test coneAngleIsTheExactIntegerTest() passed after 1.004 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 1.004 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 1.004 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 1.004 seconds. +✔ Test groundTilesAreUniform() passed after 1.005 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 1.004 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 1.004 seconds. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test admittedAssetsReachTheBundleProjection() passed after 1.011 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 0.682 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 0.682 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Suite EnvironmentLibraryTests passed after 29.680 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 1.013 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 0.306 seconds. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.306 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 9.373 seconds. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test resetClearsCommits() started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 1.344 seconds. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 0.340 seconds. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test swiftIsUnderFiveThirty() started. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 0.041 seconds. +◇ Test coneSightNeedsAClearLine() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test bossSpawnsWithTenDpsContact() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 0.652 seconds. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 3.690 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 0.652 seconds. +✔ Test patrolBlockFailsClosed() passed after 0.652 seconds. +✔ Test tamperedTicksAreRejected() passed after 1.997 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 0.652 seconds. +✔ Test resetClearsCommits() passed after 0.652 seconds. +◇ Test sightRangeIsInclusive() started. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 1.080 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 1.080 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 1.080 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 1.089 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 30.811 seconds. +✔ Test rs024GhostIsExactlyTheLatch() passed after 1.089 seconds. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 1.089 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 1.089 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 1.089 seconds. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +✔ Test coneSightNeedsAClearLine() passed after 1.089 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 1.089 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 1.089 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 1.089 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 1.090 seconds. +✔ Test theEliteIsFullyBacked() passed after 1.089 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 1.089 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 1.080 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 0.880 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 0.880 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 1.464 seconds. +✔ Test sightRangeIsInclusive() passed after 1.036 seconds. +✔ Suite CameraPlacementTests passed after 31.838 seconds. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 1.036 seconds. +◇ Test musicIsNotAnEffectCue() started. +✔ Suite StealthTextureTests passed after 31.838 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 2.116 seconds. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test damageToANonEnemyIsIgnored() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test playerBlockFailsClosed() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +✔ Suite CompleteRunVectorTests passed after 32.398 seconds. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +✔ Test musicIsNotAnEffectCue() passed after 0.560 seconds. +◇ Test rs021AFailedRunEarnsNothing() started. +✔ Suite RunCardTests passed after 32.399 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 0.560 seconds. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 1.286 seconds. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +✔ Test damageToANonEnemyIsIgnored() passed after 1.286 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 1.285 seconds. +✔ Test playerBlockFailsClosed() passed after 1.285 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 1.285 seconds. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 1.285 seconds. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 1.285 seconds. +◇ Test encounterEN020SolidBlocksSight() started. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 1.440 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 1.440 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 1.440 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 1.440 seconds. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 1.440 seconds. +✔ Suite AudioDeliveryTests passed after 33.837 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 1.439 seconds. +✔ Suite SpawnFairnessTests passed after 33.837 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 1.439 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 1.439 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 1.439 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 1.439 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 1.435 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 1.435 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 1.435 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 1.459 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 1.459 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 0.291 seconds. +✔ Suite CommitClipTests passed after 33.973 seconds. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test encounterEN020SolidBlocksSight() passed after 0.244 seconds. +✔ Suite AmbientMotionTests passed after 34.082 seconds. +✔ Suite OpeningTests passed after 34.082 seconds. +✔ Suite QuietApproachTests passed after 34.082 seconds. +✔ Suite ClipMetadataTests passed after 34.083 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 1.572 seconds. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test recordRoundTripsThroughJSON() started. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +◇ Test poolRecyclesPastPoolSize() started. +✔ Suite LegacyAdmissionTests passed after 34.339 seconds. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 1.402 seconds. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 1.402 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 1.401 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 1.401 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 6.103 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 1.401 seconds. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +✔ Test captionsArriveWithEffectsOff() passed after 1.401 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 1.401 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 1.401 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 1.401 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 1.400 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 1.400 seconds. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 1.400 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 1.400 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 1.400 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 1.187 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 1.187 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 0.041 seconds. +✔ Suite CombatContentFailClosedTests passed after 35.527 seconds. +✔ Suite PeakDensityProfilerTests passed after 35.527 seconds. +✔ Suite TutorialStateMachineTests passed after 35.526 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 0.041 seconds. +✔ Suite PresentationSettingsTests passed after 35.526 seconds. +✔ Suite ClipAlignmentTests passed after 35.526 seconds. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test resetClearsEveryReaction() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 1.296 seconds. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +✔ Test resetClearsEveryReaction() passed after 1.296 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 1.296 seconds. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 1.298 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 1.298 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 2.742 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 1.298 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 1.298 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 1.298 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 1.298 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 1.202 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 1.202 seconds. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 0.019 seconds. +✔ Suite ReactionClipTrackerTests passed after 36.843 seconds. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 0.017 seconds. +✔ Suite KernelVectorTests passed after 36.843 seconds. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test lockstepMatchesALiveReplay() started. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +✔ Test minesProjectWithTheirArmingState() passed after 1.621 seconds. +◇ Test allyAlertsNeverChain() started. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 1.621 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 10.252 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 1.620 seconds. +✔ Test crossfadeTakesOneSecond() passed after 1.620 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 1.620 seconds. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 1.620 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test hudUI006ExtractionSecondsCeil() passed after 1.679 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 1.679 seconds. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 1.756 seconds. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 0.135 seconds. +✔ Suite CombatVisibilityTests passed after 38.600 seconds. +✔ Test allyAlertsNeverChain() passed after 0.135 seconds. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test aDirectionNeverBorrowsFromAnother() started. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 1.464 seconds. +✔ Test patrolEN035MovingPastHoldsFire() passed after 1.464 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 1.464 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 1.464 seconds. +✔ Test hitStopFramesStayInsideTheCaps() passed after 1.463 seconds. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 1.824 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 1.824 seconds. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.430 seconds. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.430 seconds. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.430 seconds. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 14.644 seconds. +✔ Suite ExpansionGateReportTests passed after 40.482 seconds. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test coverageIsWhatTheRecordSays() started. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +◇ Test damageTakesPrecedenceOverSight() started. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.456 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.456 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.456 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.456 seconds. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.456 seconds. +✔ Test bossPhaseBO002HealthBands() passed after 0.473 seconds. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.473 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.024 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.024 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.024 seconds. +✔ Suite OriginalArtTests passed after 40.955 seconds. +✔ Suite TargetingPriorityTests passed after 40.957 seconds. +✔ Suite CameraDestructionOrderTests passed after 40.955 seconds. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.004 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.004 seconds. +✔ Test trackerUsesReducedPalettes() passed after 0.004 seconds. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.004 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.350 seconds. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.350 seconds. +✔ Test unawareEnemyDealsNoContactDamage() passed after 0.350 seconds. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +◇ Test playerIntegrityComesFromContent() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.170 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.170 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.170 seconds. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.170 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.228 seconds. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.228 seconds. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 0.063 seconds. +◇ Test lockdownTintNeverBrightens() started. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +✔ Test lockdownTintNeverBrightens() passed after 0.971 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.971 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 0.971 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 5.664 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 0.986 seconds. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 0.986 seconds. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.024 seconds. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test patrolIsOutsideHeat() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 4.194 seconds. +✔ Test patrolIsOutsideHeat() passed after 4.194 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 4.194 seconds. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 16.997 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 4.265 seconds. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 4.265 seconds. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.086 seconds. +✔ Suite CourtClimaxTests passed after 46.789 seconds. +◇ Test snapshotNamesEveryGate() started. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +◇ Test heatBlockDecodesFromTheBundledContract() started. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +◇ Test encounterEN001WaveTotals() started. +◇ Test awarenessIsDigested() started. +✔ Test snapshotNamesEveryGate() passed after 1.314 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 5.580 seconds. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 1.314 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 1.328 seconds. +✔ Test encounterEN001WaveTotals() passed after 1.328 seconds. +✔ Test awarenessIsDigested() passed after 0.015 seconds. +◇ Test actorContrastValues() started. +◇ Test ghostStopsAtItsTerminalTick() started. +◇ Test heatBlockFailsClosed() started. +◇ Test tutorialLockdownPreemptsCopy() started. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +✔ Test actorContrastValues() passed after 3.726 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 3.726 seconds. +✔ Test heatBlockFailsClosed() passed after 3.726 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 3.727 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 3.727 seconds. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.014 seconds. +✔ Suite ReadabilityFinishTests passed after 51.847 seconds. +✔ Suite GrayscaleSystemsTests passed after 51.846 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +◇ Test awarenessBlockFailsClosed() started. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 15.633 seconds. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 2.387 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 2.426 seconds. +✔ Test awarenessBlockFailsClosed() passed after 0.045 seconds. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.003 seconds. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.003 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.010 seconds. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.007 seconds. +✔ Suite ReleaseCandidateEvidenceTests passed after 54.286 seconds. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.002 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.003 seconds. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.002 seconds. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.006 seconds. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 1.461 seconds. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 1.457 seconds. +✔ Suite HeatReinforcementTests passed after 55.752 seconds. +✔ Suite ContractVectorTests passed after 55.752 seconds. +✔ Suite AwarenessTests passed after 55.752 seconds. +✔ Test ghostFadesAfterItsTerminalTick() passed after 4.127 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 8.529 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 1.603 seconds. +✔ Suite GhostRunTests passed after 66.108 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 45.580 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.016 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.309 seconds. +✔ Suite GateVerificationTests passed after 72.742 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 63.072 seconds. +✔ Suite PacingSegmentsTests passed after 87.260 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 165.050 seconds. +✔ Suite CameraFairnessTests passed after 165.055 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 210.602 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 6.892 seconds. +✔ Suite GameFeelTests passed after 259.031 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 291.494 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 299.031 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 329.843 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 46.005 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 337.503 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 314.856 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 351.816 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 387.349 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 128.004 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.030 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 3.040 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.101 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.017 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.132 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.012 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.005 seconds. +✔ Suite TransitPatrolTests passed after 492.992 seconds. +✔ Test run with 773 tests in 109 suites passed after 492.997 seconds. diff --git a/docs/review/outline-resolution/finer/review.md b/docs/review/outline-resolution/finer/review.md new file mode 100644 index 00000000..58524745 --- /dev/null +++ b/docs/review/outline-resolution/finer/review.md @@ -0,0 +1,27 @@ +# Finer outline sampling — BP-007 / defect #124 + +Status: REVIEWED comparison, production selection pending. + +Specification: 439739ea146af57ecc10762d1d55b1fe66331efd. Runtime base: 87810490e2eb676126ca46128e7ca04998244fa5 plus the local five-file sampling comparison change. Ordinary rendering remains at samplingScale=1; the DEBUG benchmark seam explicitly requests 3 for each comparison capture and then restores the normal callback. + +The mask uses three samples per logical pixel while keeping one logical unit of dilation. Padding becomes three mask pixels; faction dash coordinates divide by three. Cache identity includes sampling scale because identical mask dimensions can represent different logical sizes/padding. The source image limit, bounded mask dimensions, cache count/byte limits, sprite geometry, anchors and faction colours remain unchanged. Unsupported scale or oversized masks return nil; there is no implicit fallback or production-wide switch. + +## Visual evidence + +Sixteen actual SpriteKit captures cover baseline/finer masks, four facings, and the existing two zooms. Test result: Test-SSRuntime-2026.10.14_17-24-13--0700.xcresult, iPhone 17 Pro simulator CACB3927-A76E-43A5-9ACA-C389EB38C0C3. All 97 executions passed (91 Swift Testing cases, four XCTest cases and two additional parameter executions); one existing compiler warning. Capture summary is in renderer/capture-summary.json. Original full captures are 2112×978 for the 704×326 logical viewport. + +The comparison plate crops without rescaling the actual captures. All eight pairs were inspected, plus the closer south full scene. The finer mask visibly reduces stepped edges around hood, coat, hands and boots without moving the character. This is evidence for the four neutral candidate poses only. No thin-feature stress fixture, animated silhouette run, hostile dash visual comparison, dense encounter or device profile was captured in this change. + +The new regression proves the same logical ring/dash pattern for an aligned rectangular silhouette, bounded byte retention, distinct cache identity when mask dimensions coincide but logical scale differs, and invalid/over-budget sample rejection. Earlier source-density, scaled-parent placement, replacement-frame, Reduced Motion and baseline dash tests also pass. Their prior scaled-parent/current-frame tests exercise the default sampling scale; the captures add visual 3× placement evidence, not a complete replacement for 3× animation coverage. + +## Cost and decision + +At logical 64×64, baseline uses a 64×64 mask and 66×66 output; finer uses 192×192 and 198×198. Accounted output RGBA rises from 17,424 to 156,816 bytes (9×). The explicit input-mask and output arrays total 304,272 bytes at 3×; source decoding, CoreGraphics/SpriteKit copies and GPU allocations are additional and unmeasured. A 4 MiB cache fits 26 finer outputs before its byte bound; 64 unique movement frames would exceed that bound. This is a potential cache-churn problem, not a measured frame-time result. Larger actors can exceed the existing 256-per-dimension mask guard at 3×, so a global default change would be unsafe without an explicit bounded sampling policy and coverage. + +PROPOSED: retain the finer comparison path and use its visible edge quality as the target. Before selecting it for production, measure animated multi-actor misses/evictions and CPU cost, evaluate a bounded density policy for larger canvases, and compare thin silhouettes and enemy dashes in motion. Keep #124 open. Do not increase the cache budget based on theoretical bytes alone. + +The scene still has unresolved benchmark art/composition issues: bright plaza paving, building treatment, clipped camera at closer framing, and no accepted locomotion. These captures do not admit the character family, finish the shared benchmark, or authorize physical-device testing. + +## Final verification and design feedback + +Full core suite: 773 tests in 109 suites passed in 492.997 seconds. No core behavior changed. The user questioned the glowing player outline in this comparison. The retained high-contrast border reads like a sticker/glow against the painted benchmark; smoother sampling does not resolve that design mismatch. Treat border strength/treatment as an open researched readability decision, comparing subtler contrast/shadow treatments at native size and in dense encounters before amending the existing faction contract. Do not equate this technical outline result with user approval of the white border. diff --git a/docs/review/outline-resolution/implementation/capture-summary.json b/docs/review/outline-resolution/implementation/capture-summary.json new file mode 100644 index 00000000..e3f259c2 --- /dev/null +++ b/docs/review/outline-resolution/implementation/capture-summary.json @@ -0,0 +1,30 @@ +{ + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "96" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "compositionStatus": "Success", + "attachments": [ + "BP002-painted-neutral-south-unchanged-zoom", + "BP002-painted-neutral-east-unchanged-zoom", + "BP002-painted-neutral-north-unchanged-zoom", + "BP002-painted-neutral-west-unchanged-zoom", + "BP002-painted-neutral-south-equal-area-zoom", + "BP002-painted-neutral-east-equal-area-zoom", + "BP002-painted-neutral-north-equal-area-zoom", + "BP002-painted-neutral-west-equal-area-zoom" + ] +} diff --git a/docs/review/outline-resolution/implementation/core-tests.log b/docs/review/outline-resolution/implementation/core-tests.log new file mode 100644 index 00000000..940abc1a --- /dev/null +++ b/docs/review/outline-resolution/implementation/core-tests.log @@ -0,0 +1,1841 @@ +[0/1] Planning build +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.48s) +Test Suite 'All tests' started at 2026-10-14 16:59:52.436. +Test Suite 'All tests' passed at 2026-10-14 16:59:52.439. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.003) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite AssetCatalogTests started. +◇ Suite CommitClipTests started. +◇ Suite ContractVersionsTests started. +◇ Suite AmbientMotionTests started. +◇ Suite CameraPresentationTests started. +◇ Suite ContractVectorTests started. +◇ Suite SilhouetteTests started. +◇ Suite DailyFlavourTests started. +◇ Suite RunTelemetryTests started. +◇ Suite TransitPatrolTests started. +◇ Suite CombatCausalityTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite PacingProbeTests started. +◇ Suite GhostSettingTests started. +◇ Suite CaptainCameraTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite RunCardTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite ReadabilityFinishTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite ProceduralVFXTests started. +◇ Suite TamperFloorTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite CourtClimaxTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite AudioProjectorTests started. +◇ Suite EventCatalogTests started. +◇ Suite ConeOrientationTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite CameraFollowTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite HUDMappingTests started. +◇ Suite CaptainClipTests started. +◇ Suite GhostRunTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite StealthTextureTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite CameraFairnessTests started. +◇ Suite CameraPlacementTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite ClipMetadataTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite KernelVectorTests started. +◇ Suite GateVerificationTests started. +◇ Suite SimulationClockTests started. +◇ Suite ReplayTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite VisualLanguageTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite DeterminismTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite QuietApproachTests started. +◇ Suite OpeningTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite ClipTimingTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite DamageOrderingTests started. +◇ Suite GameFeelTests started. +◇ Suite DaemonClipTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite ApproximateCueTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite DefectRegistryTests started. +◇ Suite CameraHUDTests started. +◇ Suite D021CeilingsTests started. +◇ Suite AwarenessTests started. +◇ Suite MedalTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite LegacyAdmissionTests started. +◇ Suite HUDPresentationTests started. +◇ Suite OriginalArtTests started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test currentIdentityIsCompatible() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test ghostIsOnByDefault() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test sha256KnownVector() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test exactMigrationVectors() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test daemonHasClips() started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test originalsAreAdmitted() started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test fogDensityScalesBeforeThinning() passed after 6.726 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 6.954 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 6.954 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 6.954 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 6.954 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 6.954 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 6.954 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 6.954 seconds. +✔ Test currentIdentityIsCompatible() passed after 6.954 seconds. +✔ Test ghostIsOnByDefault() passed after 6.954 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 6.954 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 6.955 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 6.954 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 6.954 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 6.955 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 6.957 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 6.957 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 6.957 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 6.957 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 6.957 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 6.957 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 6.957 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 6.957 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 7.227 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 7.227 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 7.227 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 7.227 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 7.227 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 7.235 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 7.235 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 7.236 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 7.236 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 7.236 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 7.237 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 7.236 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 7.237 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 7.236 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 7.236 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 7.237 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 8.141 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 9.671 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 9.671 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 9.671 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 9.672 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 9.671 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 9.671 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 9.671 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 9.671 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 9.671 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 9.671 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 9.671 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 9.976 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 9.977 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 9.976 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 9.977 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 9.977 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 9.976 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 9.977 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 9.976 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 9.976 seconds. +✔ Test mappedElementsScaleProportionally() passed after 9.976 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 9.976 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 9.976 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 9.976 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 9.976 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 9.976 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 9.976 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 9.976 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 9.976 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 9.977 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 9.976 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 9.976 seconds. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 9.977 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 9.976 seconds. +✔ Test sha256KnownVector() passed after 9.976 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 9.976 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 9.977 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 9.976 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 9.976 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 9.978 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 9.977 seconds. +✔ Test anUnawareKillIsATakedown() passed after 9.976 seconds. +✔ Test attackStatesAreUnchanged() passed after 9.976 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 9.976 seconds. +✔ Test aFreshRunStartsQuiet() passed after 9.976 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 9.978 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 9.977 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 9.979 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 9.976 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 9.977 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 10.391 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 10.391 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 10.392 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 10.392 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 10.392 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 10.392 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 10.392 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 10.392 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 10.393 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 10.392 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 10.392 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 10.392 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 10.392 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 10.392 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 10.392 seconds. +✔ Test exactMigrationVectors() passed after 10.392 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 10.392 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 10.392 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 10.392 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 10.392 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 10.392 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 10.392 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 10.392 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 10.392 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 10.392 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 10.394 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 10.392 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 10.392 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 10.392 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 10.392 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 10.392 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 10.392 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 10.392 seconds. +✔ Test daemonHasClips() passed after 10.392 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 10.392 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 10.392 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 10.392 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 10.392 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 10.394 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 10.392 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 10.392 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 10.392 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 10.392 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 10.392 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 10.392 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 10.392 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 10.396 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 10.396 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 10.405 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 10.198 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 10.033 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 9.956 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 9.677 seconds. +✔ Test originalsAreAdmitted() passed after 9.380 seconds. +✔ Suite DailyFlavourTests passed after 10.412 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 10.628 seconds. +✔ Suite ExposureFinalizationTests passed after 10.630 seconds. +✔ Suite CameraFollowTests passed after 10.630 seconds. +✔ Suite CombatFeedbackTests passed after 10.630 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 10.630 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 10.630 seconds. +✔ Suite ClipTimingTests passed after 10.630 seconds. +✔ Suite CanonicalArenaZonesTests passed after 10.630 seconds. +✔ Suite ClipMetadataV2Tests passed after 10.630 seconds. +✔ Suite DefectRegistryTests passed after 10.630 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 10.628 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test playingIsNotTerminal() started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test nodeAndCopyAgree() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test identityMismatchIsRejected() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 2.360 seconds. +✔ Test captainArtIsAllOrNothing() passed after 2.355 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 2.355 seconds. +✔ Test playingIsNotTerminal() passed after 2.355 seconds. +✔ Test unknownIdentityFailsClosed() passed after 2.355 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 2.355 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 12.988 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 2.355 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 2.355 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 12.989 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 2.355 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 2.355 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 2.355 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 2.355 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 2.355 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 2.355 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 2.355 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 2.355 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 2.354 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 2.355 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 2.355 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 12.987 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 2.355 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 2.439 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 2.438 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 2.438 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 2.436 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 2.440 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 2.440 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 2.430 seconds. +✔ Test aCompleteGroupIsBacked() passed after 2.430 seconds. +✔ Test seedIsDeterministicForADate() passed after 2.430 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 2.430 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 2.430 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 2.548 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 2.548 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 2.548 seconds. +✔ Test familiesMapToDistinctAssets() passed after 2.548 seconds. +✔ Test windowsMatchTheD090Table() passed after 2.548 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 2.548 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 2.548 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 2.548 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 2.548 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 2.548 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 2.548 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 2.548 seconds. +✔ Test successRowsWithNoStoredBest() passed after 2.560 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 2.548 seconds. +✔ Test musicAssetIdsAreReachable() passed after 2.548 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 2.548 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 2.548 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 2.548 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 2.548 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 2.550 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 2.548 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 2.548 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 2.555 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 2.548 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 2.548 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 2.667 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 2.666 seconds. +✔ Test nodeAndCopyAgree() passed after 2.666 seconds. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 2.666 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 2.666 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 2.666 seconds. +✔ Test identityMismatchIsRejected() passed after 2.666 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 2.666 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 2.666 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 2.666 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 2.666 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 2.666 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 2.667 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 2.666 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 2.667 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 2.666 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 2.666 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 2.666 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 2.666 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 2.679 seconds. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 2.666 seconds. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 2.803 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 1.528 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 2.803 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 1.277 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 2.803 seconds. +✔ Suite ContractVersionsTests passed after 13.582 seconds. +✔ Suite SilhouetteTests passed after 13.582 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 13.581 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.588 seconds. +✔ Suite CivicSeamIdentityTests passed after 13.582 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 1.533 seconds. +✔ Suite AssetCatalogTests passed after 13.583 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 13.583 seconds. +✔ Suite SimulationClockTests passed after 13.582 seconds. +✔ Suite CameraMountSolidTests passed after 13.582 seconds. +✔ Suite ObjectiveProjectionTests passed after 13.582 seconds. +✔ Suite VisualLanguageTests passed after 13.582 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 1.143 seconds. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 3.061 seconds. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 13.697 seconds. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test profileT406AggregateReportIsStable() started. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 4.325 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 7.374 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 4.325 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 4.325 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 4.325 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 6.099 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 4.325 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 4.325 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 4.325 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 4.325 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 4.325 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 4.325 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 4.325 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 4.324 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 4.324 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 4.324 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 18.019 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 17.649 seconds. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 4.325 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 4.559 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 4.592 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 4.592 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 4.592 seconds. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 4.592 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 4.592 seconds. +✔ Test groupsAreBackedIndependently() passed after 4.592 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 4.592 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 4.592 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 4.593 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 4.712 seconds. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 4.712 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 4.712 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 4.712 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 4.712 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 4.712 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 4.712 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 4.712 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 4.712 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 4.712 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 4.712 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 4.712 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 4.712 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 4.712 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 4.712 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 4.712 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 4.712 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 4.712 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 4.712 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 4.712 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 4.712 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 4.878 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 4.877 seconds. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 4.877 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 4.877 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 4.877 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 4.877 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 4.877 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 4.877 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 4.877 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 4.877 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 4.877 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 4.877 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 4.877 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 4.877 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 4.877 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 4.877 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 4.877 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 4.877 seconds. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 4.877 seconds. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 18.663 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 3.378 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 3.379 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 2.514 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 18.665 seconds. +✔ Suite ReceiptArchiveTests passed after 18.954 seconds. +✔ Suite CameraPresentationTests passed after 18.955 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.929 seconds. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +✔ Suite EventCatalogTests passed after 18.955 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Suite ArenaAndSimulationTests passed after 18.955 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 3.178 seconds. +✔ Suite TerminalShareGeometryTests passed after 18.955 seconds. +✔ Suite ExpansionGateDecisionTests passed after 18.955 seconds. +✔ Suite EnvironmentContractTests passed after 18.956 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 5.254 seconds. +✔ Suite CameraHousingArtTests passed after 18.955 seconds. +✔ Suite MusicBedCoverageTests passed after 18.956 seconds. +✔ Suite CaptainClipTests passed after 18.956 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 0.930 seconds. +✔ Suite DeviceRunEvidenceTests passed after 19.009 seconds. +✔ Suite HUDPresentationTests passed after 19.008 seconds. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test patrolSlipSearch() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 0.055 seconds. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +✔ Test headingsAdvanceClockwise() passed after 0.055 seconds. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 1.958 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 1.958 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 1.959 seconds. +✔ Test patrolSlipSearch() passed after 1.959 seconds. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 1.959 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test facingIsTheLastTravelDirection() passed after 7.266 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 1.959 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 1.959 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 2.389 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 1.959 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 1.959 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 1.959 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 7.267 seconds. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 1.959 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 1.959 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 1.959 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 1.959 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 1.959 seconds. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 1.959 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 1.959 seconds. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 1.959 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 1.961 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 1.961 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 1.961 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 1.961 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 1.962 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 1.962 seconds. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 1.962 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 1.962 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 1.962 seconds. +✔ Test lockdownOutranksExtraction() passed after 1.962 seconds. +✔ Test audioCoverageIsMeasurable() passed after 1.962 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 1.962 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 1.961 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 1.962 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 1.961 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 1.961 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 1.961 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 1.961 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 1.961 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 1.961 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 2.601 seconds. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 2.601 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 2.601 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 7.914 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 2.601 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 2.601 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 2.601 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 2.601 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 2.601 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 2.601 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 2.601 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 2.601 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 2.601 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 2.601 seconds. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 2.601 seconds. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 2.695 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 2.686 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 2.872 seconds. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Suite CombatAuthorityReceiptTests passed after 22.038 seconds. +✔ Suite GhostSettingTests passed after 22.038 seconds. +✔ Suite PatrolSlipSearch passed after 22.037 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 1.069 seconds. +◇ Test correlatorCommitStaysAStateClip() started. +✔ Suite CaptainCameraTests passed after 22.039 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 3.025 seconds. +✔ Suite AudioProjectorSmokeTests passed after 22.038 seconds. +✔ Suite RunTelemetryTests passed after 22.039 seconds. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 1.066 seconds. +✔ Suite TutorialCardDurationTests passed after 22.039 seconds. +✔ Suite AssetIntakeChecks passed after 22.039 seconds. +✔ Suite D021CeilingsTests passed after 22.038 seconds. +✔ Test tamperedCommandIsRejected() passed after 3.026 seconds. +✔ Suite CameraHUDTests passed after 22.038 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 1.069 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +✔ Test correlatorCommitStaysAStateClip() passed after 0.098 seconds. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 3.127 seconds. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test anyTouchSkips() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +✔ Suite ApproximateCueTests passed after 22.139 seconds. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +DAILY-RUN-400 distinct=400 salted=0 +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 1.248 seconds. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 1.248 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 1.248 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 1.248 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 1.770 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 1.248 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 1.248 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 1.248 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 1.248 seconds. +◇ Test failedRunNeverShowsNewBest() started. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 1.248 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 1.251 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 1.252 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 4.380 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 1.252 seconds. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 1.252 seconds. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 1.252 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 1.254 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 1.255 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 1.256 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 1.255 seconds. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 1.255 seconds. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 1.255 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 1.255 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 1.255 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 1.255 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 1.254 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 1.254 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 1.255 seconds. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 1.254 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 1.254 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 1.254 seconds. +✔ Test anyTouchSkips() passed after 1.254 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 4.436 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 1.313 seconds. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 1.312 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 1.312 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 1.312 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 1.312 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 1.312 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 1.312 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 1.312 seconds. +◇ Test tamperedDigestIsRejected() started. +✔ Test exposureEX010SingleStateJumpEvent() passed after 1.312 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 1.312 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 1.312 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 1.312 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 1.312 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 1.081 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 10.149 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 4.457 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.094 seconds. +◇ Test informantContactHitShowsItsCommit() started. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 9.779 seconds. +✔ Suite ReplayMatrixTests passed after 23.480 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.086 seconds. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 1.341 seconds. +✔ Suite TutorialPreemptionTests passed after 23.480 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 23.479 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 0.094 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Suite TamperFloorTests passed after 23.563 seconds. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +✔ Test informantContactHitShowsItsCommit() passed after 0.083 seconds. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +✔ Suite ReplayTests passed after 23.564 seconds. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test noTwoPhasesShareABed() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 0.297 seconds. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 1.523 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 1.525 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 1.525 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 1.525 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 1.525 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 1.525 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 1.526 seconds. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 1.526 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 1.526 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 1.526 seconds. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 1.526 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 1.526 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 1.526 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 1.556 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 1.556 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 1.557 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 1.556 seconds. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 1.556 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 2.632 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 1.556 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 1.556 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 1.556 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 1.556 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 2.980 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 1.558 seconds. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 1.556 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 1.556 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 1.556 seconds. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 1.556 seconds. +✔ Test noTwoPhasesShareABed() passed after 1.556 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 1.556 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 1.556 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 1.557 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 1.556 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 1.556 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 1.556 seconds. +◇ Test networkBlackoutJoinsTheCameraRow() started. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 1.556 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 1.556 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 1.556 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 1.556 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 1.556 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 1.583 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test aNonPatrolAlertKeepsShadow() passed after 1.710 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 2.221 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.741 seconds. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +✔ Suite AudioProjectorTests passed after 25.829 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 2.348 seconds. +✔ Test tamperedDigestIsRejected() passed after 2.376 seconds. +✔ Suite CameraDestructionReceiptTests passed after 25.829 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.708 seconds. +✔ Suite DeterminismTests passed after 25.828 seconds. +✔ Suite BossPhaseMusicTests passed after 25.829 seconds. +✔ Suite ArenaReachabilityTests passed after 25.829 seconds. +✔ Suite DamageOrderingTests passed after 25.828 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 0.707 seconds. +✔ Suite ObjectiveGraphTests passed after 25.829 seconds. +✔ Suite QuietApproachPresentationTests passed after 25.829 seconds. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 0.115 seconds. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 3.905 seconds. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test labelFormat() started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +✔ Suite HUDMappingTests passed after 25.944 seconds. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test playerPC003HalfMagnitude() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 0.116 seconds. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 1.959 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 1.961 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 1.961 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 1.961 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 1.961 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 1.961 seconds. +◇ Test tamperedTicksAreRejected() started. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 1.961 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 1.964 seconds. +✔ Test labelFormat() passed after 1.964 seconds. +✔ Test runtimeMountSolidsHaveNoArt() passed after 1.964 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 4.343 seconds. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 2.058 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 2.058 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 2.058 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 2.058 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 2.058 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 2.058 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 2.058 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 2.058 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 2.058 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 2.058 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 2.058 seconds. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 2.058 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 2.058 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 2.058 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 2.058 seconds. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 2.058 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 2.058 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 2.058 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 2.058 seconds. +◇ Test peakDetectionIsTheHighestReached() started. +✔ Test playerPC003HalfMagnitude() passed after 2.058 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 2.058 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 2.058 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 2.063 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 3.997 seconds. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 2.164 seconds. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +✔ Suite ProceduralVFXTests passed after 30.068 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 2.162 seconds. +✔ Suite ExtractionCountdownTests passed after 30.068 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 12.733 seconds. +✔ Suite EnemyBehaviourTests passed after 30.068 seconds. +✔ Suite DailyRunSeedTests passed after 30.068 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Suite DaemonClipTests passed after 30.140 seconds. +✔ Suite TerminalPrecedenceTests passed after 30.141 seconds. +✔ Suite RunOutcomeTerminalTests passed after 30.142 seconds. +✔ Suite RuntimeBundleTests passed after 30.142 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 2.137 seconds. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +✔ Test reducedMotionIntroChangesNothingEither() passed after 9.979 seconds. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +✔ Suite CombatCausalityTests passed after 30.290 seconds. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test clipCatalogRejectsAnchorDrift() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.221 seconds. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test quietRestoreFailsClosed() started. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test groundTilesAreUniform() started. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 0.223 seconds. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 0.839 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 0.841 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 0.841 seconds. +✔ Suite ConeOrientationTests passed after 31.131 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 0.841 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +◇ Test profileT406GateC011SimulationBounds() started. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 0.841 seconds. +✔ Test coverageCountsOnlyDeclaredIds() passed after 0.841 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 0.841 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 0.843 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 0.843 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 0.992 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 0.843 seconds. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 0.843 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 0.843 seconds. +✔ Test tamperedTicksAreRejected() passed after 3.228 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 5.188 seconds. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 0.843 seconds. +✔ Test theLatchIsInTheDigest() passed after 0.843 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 0.843 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 0.843 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 0.843 seconds. +✔ Test quietRestoreFailsClosed() passed after 0.843 seconds. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 0.843 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 0.843 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 0.844 seconds. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 0.737 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 0.792 seconds. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 1.002 seconds. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.161 seconds. +✔ Suite EnvironmentLibraryTests passed after 31.293 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 1.665 seconds. +◇ Test resetClearsCommits() started. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test groundTilesAreUniform() passed after 1.715 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 5.842 seconds. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test bossSpawnsWithTenDpsContact() started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 1.784 seconds. +◇ Test patrolBlockFailsClosed() started. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +✔ Test resetClearsCommits() passed after 0.119 seconds. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test swiftIsUnderFiveThirty() started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 2.020 seconds. +◇ Test musicIsNotAnEffectCue() started. +✔ Test coneSightNeedsAClearLine() passed after 2.021 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 2.021 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 2.021 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 2.021 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 2.021 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 2.021 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 2.021 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 2.021 seconds. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 2.020 seconds. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 2.020 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 2.020 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 2.020 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 2.961 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 2.020 seconds. +✔ Test rs024GhostIsExactlyTheLatch() passed after 2.020 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 2.020 seconds. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 2.020 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 2.020 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 34.096 seconds. +✔ Test patrolBlockFailsClosed() passed after 2.020 seconds. +◇ Test deliveryPreservesEveryValidatedClip() started. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 2.020 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 2.020 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 2.020 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 2.017 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 1.996 seconds. +◇ Test theEliteIsFullyBacked() started. +✔ Test musicIsNotAnEffectCue() passed after 0.445 seconds. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.444 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +✔ Suite CameraPlacementTests passed after 35.031 seconds. +✔ Suite RunCardTests passed after 35.032 seconds. +✔ Suite StealthTextureTests passed after 35.031 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 0.935 seconds. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +✔ Test theEliteIsFullyBacked() passed after 0.991 seconds. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +✔ Suite AudioDeliveryTests passed after 35.093 seconds. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +✔ Suite CompleteRunVectorTests passed after 35.092 seconds. +✔ Test damageToANonEnemyIsIgnored() passed after 0.553 seconds. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +◇ Test recordRoundTripsThroughJSON() started. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +◇ Test playerBlockFailsClosed() started. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 0.062 seconds. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test rs021AFailedRunEarnsNothing() started. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 0.921 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 0.923 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 0.923 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 0.923 seconds. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 0.923 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 0.923 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 0.923 seconds. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 0.923 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 0.923 seconds. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 0.924 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 0.924 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 10.927 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 0.924 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 0.924 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 0.924 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 0.924 seconds. +✔ Test playerBlockFailsClosed() passed after 0.924 seconds. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 0.924 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 0.924 seconds. +✔ Suite CommitClipTests passed after 36.019 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 0.923 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 0.851 seconds. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite AmbientMotionTests passed after 36.424 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +✔ Suite SpawnFairnessTests passed after 36.461 seconds. +✔ Suite QuietApproachTests passed after 36.461 seconds. +✔ Suite OpeningTests passed after 36.462 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 1.368 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 5.331 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 0.444 seconds. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test captionsArriveWithEffectsOff() started. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.038 seconds. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test sightRangeIsInclusive() started. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +✔ Suite PeakDensityProfilerTests passed after 36.463 seconds. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +✔ Suite ClipMetadataTests passed after 36.701 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 0.503 seconds. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 0.503 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 0.503 seconds. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 0.503 seconds. +✔ Test sightRangeIsInclusive() passed after 0.503 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 0.503 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 0.503 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 0.503 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 0.503 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 0.947 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 0.503 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 0.503 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 0.503 seconds. +◇ Test noAdmittedAssetShipsFromArtSources() started. +✔ Test hudUI001ReferenceAnchors() passed after 0.503 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 0.503 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 0.503 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 0.279 seconds. +✔ Suite ClipAlignmentTests passed after 37.257 seconds. +◇ Test resetClearsEveryReaction() started. +✔ Suite TutorialStateMachineTests passed after 37.257 seconds. +✔ Suite PresentationSettingsTests passed after 37.257 seconds. +✔ Suite CombatContentFailClosedTests passed after 37.256 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 2.163 seconds. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +✔ Test resetClearsEveryReaction() passed after 0.043 seconds. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 0.733 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 0.400 seconds. +✔ Suite ReactionClipTrackerTests passed after 37.699 seconds. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 0.400 seconds. +✔ Test encounterEN020SolidBlocksSight() passed after 0.876 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 0.876 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 0.876 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 0.876 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 0.876 seconds. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 0.876 seconds. +◇ Test lockstepMatchesALiveReplay() started. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 0.876 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 0.876 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 0.876 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 0.876 seconds. +✔ Suite LegacyAdmissionTests passed after 40.010 seconds. +✔ Suite KernelVectorTests passed after 40.011 seconds. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 16.080 seconds. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 0.636 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 1.853 seconds. +✔ Test crossfadeTakesOneSecond() passed after 1.853 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 1.853 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 1.853 seconds. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 1.853 seconds. +✔ Suite ExpansionGateReportTests passed after 42.470 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 1.853 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 1.852 seconds. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 1.852 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 1.740 seconds. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 1.926 seconds. +✔ Suite CombatVisibilityTests passed after 42.542 seconds. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.523 seconds. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 0.852 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.852 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.852 seconds. +✔ Test patrolEN035MovingPastHoldsFire() passed after 0.852 seconds. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.852 seconds. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.852 seconds. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.852 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 5.272 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 0.885 seconds. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test allyAlertsNeverChain() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.053 seconds. +◇ Test aDirectionNeverBorrowsFromAnother() started. +✔ Test allyAlertsNeverChain() passed after 0.226 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.226 seconds. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.226 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.226 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.226 seconds. +✔ Test bossPhaseBO002HealthBands() passed after 0.226 seconds. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.226 seconds. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.976 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 0.539 seconds. +✔ Suite CameraDestructionOrderTests passed after 44.043 seconds. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.012 seconds. +◇ Test coverageIsWhatTheRecordSays() started. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.012 seconds. +✔ Test trackerUsesReducedPalettes() passed after 0.012 seconds. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.012 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.012 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.012 seconds. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.012 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.432 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.420 seconds. +✔ Suite TargetingPriorityTests passed after 44.477 seconds. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +✔ Suite OriginalArtTests passed after 44.476 seconds. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +◇ Test playerIntegrityComesFromContent() started. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.191 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.191 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.191 seconds. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.191 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.191 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.191 seconds. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.191 seconds. +◇ Test lockdownTintNeverBrightens() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +✔ Test lockdownTintNeverBrightens() passed after 1.469 seconds. +✔ Test unawareEnemyDealsNoContactDamage() passed after 1.469 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 1.469 seconds. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 1.469 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 1.469 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 1.469 seconds. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 14.063 seconds. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +◇ Test patrolIsOutsideHeat() started. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test heatBlockDecodesFromTheBundledContract() started. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.114 seconds. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 0.114 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.114 seconds. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.114 seconds. +✔ Test patrolIsOutsideHeat() passed after 0.114 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 0.114 seconds. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.114 seconds. +✔ Suite CourtClimaxTests passed after 46.254 seconds. +◇ Test snapshotNamesEveryGate() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test encounterEN001WaveTotals() started. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +◇ Test heatBlockFailsClosed() started. +✔ Test snapshotNamesEveryGate() passed after 2.299 seconds. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 2.299 seconds. +✔ Test encounterEN001WaveTotals() passed after 2.299 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 5.084 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 2.298 seconds. +✔ Test heatBlockFailsClosed() passed after 2.298 seconds. +◇ Test actorContrastValues() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +◇ Test ghostStopsAtItsTerminalTick() started. +◇ Test tutorialLockdownPreemptsCopy() started. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +✔ Test actorContrastValues() passed after 2.099 seconds. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 2.099 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 2.099 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 14.190 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 2.099 seconds. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 2.099 seconds. +✔ Suite ReadabilityFinishTests passed after 50.654 seconds. +✔ Suite GrayscaleSystemsTests passed after 50.653 seconds. +◇ Test awarenessIsDigested() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +✔ Test awarenessIsDigested() passed after 0.016 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.016 seconds. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.016 seconds. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.016 seconds. +✔ Suite ReleaseCandidateEvidenceTests passed after 50.670 seconds. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.002 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.002 seconds. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.002 seconds. +◇ Test awarenessBlockFailsClosed() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +✔ Test awarenessBlockFailsClosed() passed after 0.028 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.028 seconds. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.028 seconds. +✔ Suite HeatReinforcementTests passed after 50.701 seconds. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.008 seconds. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.008 seconds. +✔ Suite ContractVectorTests passed after 50.711 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.001 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.832 seconds. +✔ Suite AwarenessTests passed after 51.544 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 3.079 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test ghostFadesAfterItsTerminalTick() passed after 3.025 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 6.630 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 1.334 seconds. +✔ Suite GhostRunTests passed after 62.624 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 43.573 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.017 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.375 seconds. +✔ Suite GateVerificationTests passed after 68.532 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 59.146 seconds. +✔ Suite PacingSegmentsTests passed after 81.285 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 140.163 seconds. +✔ Suite CameraFairnessTests passed after 140.167 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 172.292 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 6.561 seconds. +✔ Suite GameFeelTests passed after 223.523 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 254.337 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 258.837 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 290.068 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 44.493 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 298.833 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 275.257 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 304.098 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 341.453 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 120.694 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.018 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 2.680 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.066 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.012 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.096 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.009 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.003 seconds. +✔ Suite TransitPatrolTests passed after 445.096 seconds. +✔ Test run with 773 tests in 109 suites passed after 445.099 seconds. diff --git a/docs/review/outline-resolution/implementation/review.md b/docs/review/outline-resolution/implementation/review.md new file mode 100644 index 00000000..987b3c62 --- /dev/null +++ b/docs/review/outline-resolution/implementation/review.md @@ -0,0 +1,28 @@ +# Resolution-aware outline implementation — #124 + +BP-007 at specs 439739ea146af57ecc10762d1d55b1fe66331efd. Functional resolution/placement repair; **not final art or device-performance acceptance**. + +## Changes + +OutlineTextures resamples source alpha to the actor's logical canvas before the existing one-pixel dilation and faction dash rule. Original colour textures remain untouched. The mask is rounded to nearest logical pixels, avoiding cache changes caused by SpriteKit Float geometry roundoff. Padding and anchor mapping use mask dimensions, never SKTexture.size() as a proxy for source pixels. + +WorldRenderer recovers the unscaled local canvas from the sprite size and scale because the child outline inherits its parent's scale. An initial zoom capture exposed double scaling despite passing unit tests; the corrected implementation and new fractional/nonuniform-scale regression remove that mismatch. All final captures come from the corrected run. Invalid/nonfinite sizes or unsupported sources hide stale outlines; supported replacement frames restore the appropriate cached texture. + +The cache distinguishes source identity, logical mask geometry and faction. Successful and failed entries share a bounded LRU list, retaining source identity only until eviction. Limits are 128 entries and 4 MiB of accounted outline RGBA payload. The source-image guard is 1024 pixels per dimension; mask dimensions are bounded to 256 per dimension. These are engineering bounds for this implementation, not measured safe device budgets. Cache misses generate a new mask; hits do not reread the source image. + +## Verification + +- Full core suite: 773 tests in 109 suites passed in 445.099 seconds. Core code was unchanged by the subsequent app-only scale correction. +- Final simulator result: Test-SSRuntime-2026.10.14_17-05-40--0700.xcresult; 96 executions, action succeeded. Includes 90 Swift Testing tests, four XCTest cases and two additional parameter executions. +- Four new regression tests prove byte-identical outlines for equivalent 64/256/384 silhouettes at logical 64; both Player and enemy treatment; cache identity/geometry/faction distinctions and churn bounds; invalid and over-limit inputs; current-frame replacement, asymmetric margins/noncentral anchors, invalid-frame hiding and restoration in both motion settings. Scaled-parent coverage includes 1.5×1.25 and fractional 1.1×1.3. +- Original unbroken/dashed outline test remains unchanged and passes. No assertion was weakened. +- Eight actual-renderer captures exported at 2112×978 and inspected in the native-size comparison plate. The closer front capture was also inspected separately at full resolution. The outline now hugs each candidate instead of disappearing or being enlarged twice. +- One pre-existing unnecessary-try compiler warning in EnvironmentLibrary remains. + +## Memory and visual limits + +For the tested 64×64 logical mask, the explicit source-mask RGBA array has 16,384 bytes and its padded 66×66 output payload has 17,424 bytes. These are payload accounting values, not process peak or GPU residency measurements. At the maximum 256×256 mask, those two arrays total 528,400 bytes; CoreGraphics/SpriteKit copies, decoded input images and allocator overhead are additional. The cache's retainedMaskBytes counter is verified under count- and byte-limited churn; it does not account for shared source textures or SpriteKit GPU allocation. Source references are count-bounded, but device residency and hot-cache churn still require profiling before high-resolution family admission. + +Nearest logical-mask sampling produces visible stair steps at enlarged inspection size and can lose sub-logical-pixel features. The current Player silhouette remains distinguishable at native size, but the specified comparison with a density-aware/supersampled alternative and thin-feature coverage is still open. Keep #124 open for that comparison and memory/performance evidence. The sharp white faction treatment is existing specification policy; it is not a new art-style approval. + +No new character art is admitted, no gameplay geometry or active clip metadata changed, and no physical-device test occurred. Broader benchmark environment, framing, animation and source-master work remains open. diff --git a/docs/review/outline-resolution/parity.log b/docs/review/outline-resolution/parity.log new file mode 100644 index 00000000..4de31e83 --- /dev/null +++ b/docs/review/outline-resolution/parity.log @@ -0,0 +1,2 @@ +parity: pin is 439739ea146af57ecc10762d1d55b1fe66331efd +parity: OK — every bundled contract and fixture byte-matches SS-specs@439739ea146af57ecc10762d1d55b1fe66331efd diff --git a/docs/review/outline-resolution/spec-adoption.md b/docs/review/outline-resolution/spec-adoption.md new file mode 100644 index 00000000..c80918d9 --- /dev/null +++ b/docs/review/outline-resolution/spec-adoption.md @@ -0,0 +1,13 @@ +# BP-007 outline resolution clarification + +Specs commit: 439739ea146af57ecc10762d1d55b1fe66331efd. Runtime adopts the exact pin in all four existing locations. No outline algorithm or production asset is changed in this adoption. + +Observed defect: runtime #124, https://github.com/Zero-State-LLC/SS-runtime/issues/124. The real-renderer 384px candidate loses its outline after normal refresh because the current source budget is 256×256. Source-pixel stroke generation also couples visible thickness to texture density. + +The specification now requires consistent equal-framing faction stroke/dashes, explicit pixel/logical-mask/anchor dimensions, current-frame outline synchronization, stale-output removal and bounded measured memory/cache behavior. The plan proposes a bounded logical-mask comparison against density-aware source masks; no algorithm or numeric memory budget is claimed as externally proven or device-validated. + +Research: Apple documents SKTexture.size() in points, cgImage/filtering as separate texture APIs, and texture retention while referenced. Sources: https://developer.apple.com/documentation/spritekit/sktexture/size() and https://developer.apple.com/documentation/spritekit/sktexture . These support separating storage and draw dimensions; SS's visual policy and proposed implementation are identified as project decisions in the spec. + +Validation: specs validator passes (23 JSON artifacts, 7 schemas, 33 registered contracts, 55 indexed files). Timing migration validator passes (59 clips, 218 facing selections, 14 malformed cases, 5 exact vectors). Seven focused runtime pin/timing tests pass. The actual scripts/spec_parity.sh passes against the exact local SS-specs commit through a process-local git URL rewrite. This is not a remote CI result. The prior full core and simulator results remain in the painted renderer review; they were not rerun for this pin-only adoption. + +Next implementation must resolve #124 and pass the new 64/256/384 same-size, anchor, frame-change, Reduced Motion, unsupported-input and cache-churn checks, with native/zoom captures. No high-resolution family admission, artwork acceptance or physical-device testing is authorized by this evidence alone; the user's existing production scope and review gate remain unchanged. diff --git a/docs/review/painted-character-source/export.py b/docs/review/painted-character-source/export.py new file mode 100644 index 00000000..0761060b --- /dev/null +++ b/docs/review/painted-character-source/export.py @@ -0,0 +1,30 @@ +from PIL import Image, ImageDraw +from pathlib import Path +import json, hashlib +ROOT=Path(__file__).resolve().parent +src=Image.open(ROOT/'source.png').convert('RGBA') +# User-authorized deterministic alpha cleanup; RGB and costume content stay unchanged. +alpha=src.getchannel('A').point(lambda v:0 if v<=32 else 255 if v>=240 else round((v-32)*255/208)) +src.putalpha(alpha) +regions={'south':(0,0,768,512),'east':(768,0,1536,512),'north':(0,512,768,1024),'west':(768,512,1536,1024)} +# Approximate image-space ground roots, manually read from the soles; not contact proof. +roots={'south':(464,477),'east':(1078,491),'north':(462,971),'west':(1079,985)} +scale=312/459 +records=[] +for direction,region in regions.items(): + crop=src.crop(region) + root=(roots[direction][0]-region[0],roots[direction][1]-region[1]) + # Inverse affine sampling keeps the same exact scale and destination ground root. + canvas=crop.transform((384,384),Image.Transform.AFFINE,(1/scale,0,root[0]-192/scale,0,1/scale,root[1]-336/scale),Image.Resampling.BICUBIC) + canvas.save(ROOT/(direction+'.png')) + records.append({'direction':direction,'region':region,'sourceRoot':roots[direction],'scale':scale,'canvas':[384,384],'anchor':[192,336],'alphaBounds':canvas.getchannel('A').getbbox(),'sha256':hashlib.sha256((ROOT/(direction+'.png')).read_bytes()).hexdigest()}) +plate=Image.new('RGB',(1536,480),(42,44,47));draw=ImageDraw.Draw(plate) +for i,record in enumerate(records): + im=Image.open(ROOT/(record['direction']+'.png')) + plate.paste(im,(384*i,0),im) + draw.text((384*i+12,8),record['direction']+' — source study',fill=(230,230,230)) + native=im.resize((64,64),Image.Resampling.LANCZOS) + plate.paste(native,(384*i+160,400),native) + draw.text((384*i+12,465),'64px logical preview / not admitted',fill=(180,180,180)) +plate.save(ROOT/'registered-review.png') +(ROOT/'exports.json').write_text(json.dumps({'sourceSha256':hashlib.sha256((ROOT/'source.png').read_bytes()).hexdigest(),'alphaRule':'<=32 zero; >=240 opaque; linear between; RGB unchanged','scalePolicy':'single scale across all views; no individual body normalization','rootStatus':'manual approximate; not measured contact landmarks','exports':records},indent=2)+'\n') diff --git a/docs/review/painted-character-source/exports.json b/docs/review/painted-character-source/exports.json new file mode 100644 index 00000000..be61b002 --- /dev/null +++ b/docs/review/painted-character-source/exports.json @@ -0,0 +1,124 @@ +{ + "sourceSha256": "487017f138f4a055eb36ae7d6c14837364b08091c9b4a8805e54124ca1c7c33b", + "alphaRule": "<=32 zero; >=240 opaque; linear between; RGB unchanged", + "scalePolicy": "single scale across all views; no individual body normalization", + "rootStatus": "manual approximate; not measured contact landmarks", + "exports": [ + { + "direction": "south", + "region": [ + 0, + 0, + 768, + 512 + ], + "sourceRoot": [ + 464, + 477 + ], + "scale": 0.6797385620915033, + "canvas": [ + 384, + 384 + ], + "anchor": [ + 192, + 336 + ], + "alphaBounds": [ + 108, + 39, + 273, + 338 + ], + "sha256": "51cb032d4ae340a5dfe48b701aa41c619edc9e888480992adf80ddce2fd10765" + }, + { + "direction": "east", + "region": [ + 768, + 0, + 1536, + 512 + ], + "sourceRoot": [ + 1078, + 491 + ], + "scale": 0.6797385620915033, + "canvas": [ + 384, + 384 + ], + "anchor": [ + 192, + 336 + ], + "alphaBounds": [ + 129, + 29, + 244, + 340 + ], + "sha256": "4fde2784bde49883ed700d4e28c61569a5888540038fc27a70c473a996ce2291" + }, + { + "direction": "north", + "region": [ + 0, + 512, + 768, + 1024 + ], + "sourceRoot": [ + 462, + 971 + ], + "scale": 0.6797385620915033, + "canvas": [ + 384, + 384 + ], + "anchor": [ + 192, + 336 + ], + "alphaBounds": [ + 107, + 37, + 275, + 338 + ], + "sha256": "3df61b3be11248326958afb90779e4c4938eea6a4933ac3b46e5cef30e800b5f" + }, + { + "direction": "west", + "region": [ + 768, + 512, + 1536, + 1024 + ], + "sourceRoot": [ + 1079, + 985 + ], + "scale": 0.6797385620915033, + "canvas": [ + 384, + 384 + ], + "anchor": [ + 192, + 336 + ], + "alphaBounds": [ + 142, + 26, + 248, + 340 + ], + "sha256": "d64ea685fde7bc107dc836cb7aa751e2ab6353cfc172de0c01ac5c70f87e3f9b" + } + ] +} diff --git a/docs/review/painted-character-source/prompts.md b/docs/review/painted-character-source/prompts.md new file mode 100644 index 00000000..d4b29275 --- /dev/null +++ b/docs/review/painted-character-source/prompts.md @@ -0,0 +1,9 @@ +# Built-in image generation prompts + +## Initial source study + +Use case: identity-preserve. Asset type: elevated-view game character turnaround source study, NOT an animation sheet. Use the provided approved street scene as the authoritative reference for its hooded character, exact muted charcoal cloth, warm taupe hood lining, practical layered street coat, gloves, boots, restrained strap and leg reinforcement. Extract and carefully reconstruct that same character with the same crisp hand-painted game-art finish and material detail. Four full-body neutral standing views in a spacious 2 by 2 grid on genuine transparent background. Upper left: directly facing image bottom, visible hood opening and chest. Upper right: directly facing image right, true elevated right-facing profile. Lower left: directly facing image top, BACK of hood and entire back of coat visible, NO face opening or chest. Lower right: directly facing image left, true elevated left-facing profile. All four seen from one fixed elevated orthographic camera looking down about 40 degrees, clearly visible tops of hood, shoulders and boots; rotate the character in world space, do not use eye-level side-scroller views. Same relaxed neutral pose, boots planted parallel, arms slightly apart to expose coat, same body scale and anatomy. Preserve physical-side equipment across rotations, never mirror straps. Coat fabric must have deliberate seams, believable folds and separate overlapping tails, articulated gloves and solid boot soles. Urban street theater context, no wizard hat, staff, fantasy robes, military rifle, extra weapons, oversized armor or added character gimmicks. No environment, no floor, no ground shadow, no text, no labels, no borders. Each complete figure stays inside its quadrant with generous transparent margins. High detail comes from coherent material construction, not random noise. + +## Equipment continuity correction + +Precise identity-preserving correction to this four-view hooded character source sheet. Keep the exact 2x2 layout, each pose, body anatomy, elevated camera angle, coat construction, palette, painterly detail, scale and all other pixels as unchanged as possible. Correct ONLY asymmetric bag/strap continuity across views. Physical identity rule: the pouch belongs on the CHARACTER'S ANATOMICAL RIGHT HIP and the diagonal strap goes from anatomical LEFT shoulder to RIGHT hip. Upper-left front view already correctly shows pouch on viewer LEFT and strap from viewer RIGHT shoulder to viewer LEFT hip: preserve it. Lower-left REAR view must show pouch on viewer RIGHT hip, strap from viewer LEFT shoulder to viewer RIGHT hip; remove existing viewer-left pouch and wrong diagonal strap, reconstruct underlying coat cleanly. Upper-right facing-right view sees the character's right side and may show that right-hip pouch clearly, consistently with front view. Lower-right facing-left view sees the character's LEFT side: REMOVE the conspicuous pouch on the near visible hip, preserve coat anatomy, only a tiny far-side edge may be visible if physically justified. No mirrored lighting, no duplicate bags, no extra straps, no extra costume redesign. Transparent background, remove any diffuse halo outside character silhouettes. No ground shadows, text, labels or borders. diff --git a/docs/review/painted-character-source/review.md b/docs/review/painted-character-source/review.md new file mode 100644 index 00000000..78dad993 --- /dev/null +++ b/docs/review/painted-character-source/review.md @@ -0,0 +1,28 @@ +# Painted character source comparison + +2026-10-14. **Neutral source study; not an editable layered master, animation family, or runtime admission.** + +The procedural body pilot in runtime 1a1a061 failed the approved art benchmark despite improved geometry. This comparison uses the approved shared street reference directly, through the built-in image-generation tool. Prompts are preserved in prompts.md. The second generation corrects equipment continuity: anatomical right-hip pouch, left-shoulder-to-right-hip strap. The first candidate swapped the pouch's physical side in the rear view and displayed it prominently on both profiles. + +## Inspected result + +The corrected source has distinct front, rear, right-facing and left-facing views. The rear now places the pouch on viewer right, matching anatomical right; the left-facing view no longer shows a near-side pouch. Coat seams, gloves, boots and material treatment are substantially closer to the approved reference than the procedural mannequin. This is an aesthetic comparison, not a claim of user acceptance. + +The reference's rough painted edges and restrained palette are better represented. Fine details compress heavily at the 64px logical preview, though hood, coat opening and boots remain identifiable. Side views still need comparison with the real renderer's ground projection: a generated claim of a fixed camera angle is not a calibrated projection. Body proportions and boot landmarks have not been measured for cross-view consistency. The expanded pouches/straps and both shoulder patches must also be checked against the final character identity contract rather than silently becoming new gameplay equipment. + +## Export evidence + +- Original corrected source: 1536 × 1024 RGBA, preserved as source.png. +- Deterministic alpha cleanup explicitly authorized by the user: alpha ≤32 becomes zero, ≥240 opaque, linear between; RGB unchanged. Original remains available for comparison. +- Four 384 × 384 candidate previews, all using one factor 312/459. No per-facing size stretching or bitmap mirroring. +- Manual approximate ground roots registered to (192,336), corresponding to logical (32,56) at 64px. These are preview annotations, not verified foot-contact measurements. +- Source and export SHA-256 hashes, source rectangles, roots and alpha bounds in exports.json; reproducible recipe in export.py. +- Registered plate visually inspected at large and 64px size. All four exported alpha bounds remain inside their canvases; no canvas-edge clipping detected. This does not rule out anatomical/source clipping. + +## Production gate remains open + +This sheet demonstrates a more promising material treatment, but four flattened drawings are not the editable source required by BP-002. Next, construct separately editable hood/torso/coat-tail/arm/hand/leg/boot layers with explicitly painted hidden overlaps, preserve equipment side, and test one restrained deformation before committing to a full locomotion family. Simply cutting the visible image into pieces would leave missing hidden surfaces; stretching a whole bitmap would not satisfy the spec. + +Keep the existing rig as a pose/contact reference. Compare the layered result in the actual SpriteKit benchmark scene at native and zoom sizes, then validate world-travel contact and the required distinct frames. Do not replace active runtime resources or claim animation/device acceptance from this still-image study. + +No Swift tests were needed or run for this source-only comparison. Runtime art, active metadata and physical-device testing remain unchanged. diff --git a/docs/review/painted-character-source/source.png b/docs/review/painted-character-source/source.png new file mode 100644 index 00000000..6444138f Binary files /dev/null and b/docs/review/painted-character-source/source.png differ diff --git a/docs/review/painted-renderer/capture-summary.json b/docs/review/painted-renderer/capture-summary.json new file mode 100644 index 00000000..d0d822b3 --- /dev/null +++ b/docs/review/painted-renderer/capture-summary.json @@ -0,0 +1,30 @@ +{ + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "92" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "compositionStatus": "Success", + "attachments": [ + "BP002-painted-neutral-south-unchanged-zoom", + "BP002-painted-neutral-east-unchanged-zoom", + "BP002-painted-neutral-north-unchanged-zoom", + "BP002-painted-neutral-west-unchanged-zoom", + "BP002-painted-neutral-south-equal-area-zoom", + "BP002-painted-neutral-east-equal-area-zoom", + "BP002-painted-neutral-north-equal-area-zoom", + "BP002-painted-neutral-west-equal-area-zoom" + ] +} diff --git a/docs/review/painted-renderer/review.md b/docs/review/painted-renderer/review.md new file mode 100644 index 00000000..ceb7d005 --- /dev/null +++ b/docs/review/painted-renderer/review.md @@ -0,0 +1,25 @@ +# Painted candidate in the real renderer + +2026-10-14. BP-002/BP-007 comparison, **not benchmark acceptance or production art admission**. + +The existing GameScene/WorldRenderer benchmark fixture now captures all four registered painted neutral views with the constrained building, municipal camera, newsbox and tree. Candidate textures live only in the test bundle. Production sprites, clip metadata, physics and gameplay are unchanged. Both existing projection-review zooms are captured: 1 and square root of 2. This remains a bounded review transform, not a selected shipping projection. + +## Evidence and validation + +- Final simulator result: `Test-SSRuntime-2026.10.14_16-43-59--0700.xcresult`, action status succeeded, 92 test executions; 86 Swift Testing tests plus four XCTest cases and two additional parameter executions. No test failures. +- Core: 773 tests in 109 suites passed in 448.647 seconds. Full log in the parent folder's core-tests.log. +- Eight final captures: four facings × two zooms, each 2112 × 978 pixels from the 704 × 326-point SKView. The comparison plate reduces each to 704 × 326 for logical-size review; source captures remain intact. +- All eight final views visually inspected on the comparison plate; the closer front view also inspected separately at higher resolution. +- One existing compiler warning remains: EnvironmentLibrary.swift:108, unnecessary `try`. No warning suppression was added. + +## Findings + +The hood, coat opening, strap and boots read more clearly and coherently than the procedural source model. Front, rear and profiles are distinguishable; the rear no longer substitutes a front silhouette. The profile poses still need validation against the selected ground projection. Static images cannot prove turning, contact or gait quality. + +The scene does not yet reach the approved benchmark. Current plaza paving, sparse layout, architectural palette and lack of street/curb treatment differ substantially from the approved reference. The closer view crops the municipal camera and tree at the upper edge. Shared source scale, camera placement and framing need a deliberate scene pass. No legal encounter or occlusion acceptance is claimed. + +**New concrete runtime gap: #124.** OutlineTextures rejects sources larger than 256 × 256 and assumes one source pixel per logical unit. At 384 × 384 the player loses its faction outline. The first paused capture retained the preceding source's outline; the harness now calls the normal didEvaluateActions callback after each swap and after restoration, so final evidence honestly shows the missing outline. The final eight PNGs supersede that initial capture. Issue: https://github.com/Zero-State-LLC/SS-runtime/issues/124 + +Before admitting high-resolution sprites, specify and implement resolution-aware outline thickness and input/memory limits, then verify frame changes and Reduced Motion. Merely raising the source cap does not preserve logical thickness. The painted sheet also still needs editable layers, authored hidden surfaces and animation/world-travel validation. + +Physical-device testing remains pending. This simulator review satisfies a comparison step only; it does not close BP-001 through BP-009 or the broader runtime/spec audit. diff --git a/docs/review/player-clean-review/README.md b/docs/review/player-clean-review/README.md new file mode 100644 index 00000000..8ef148a2 --- /dev/null +++ b/docs/review/player-clean-review/README.md @@ -0,0 +1,11 @@ +# Clean-silhouette renderer review — 2026-10-15 + +New actual Simulator/SpriteKit recording with the latest startup readiness preparation. South-facing hooded player, approved narrower stance, arm swing and restored knee-pad detail unchanged. The review-only switch hides faction-outline nodes after action synchronization. Existing outline controls and production presentation policy remain unchanged. + +The clean review test passed: all 16 frames, three observed cycle wraps, zero playback texture readbacks. The full recorded app run had 112 passing executions and one failure: Reduced Motion delivered 15/16 frames. That result is retained; this is not a fully passing app run. Concurrent core testing and recording were active, so the cause is not isolated. Previous unrecorded app run passed all 112 executions before adding this review-only switch. + +Normal and quarter speed are separate HTML pages, with detail and full-viewport options. Quarter speed replays the same recorded frames at 0.25x, with no interpolation. The original continuous recording is ../SS-player-startup-review/clean-silhouette-renderer.mov. Review extract starts at 361.75 seconds and spans approximately 2.15 seconds; original timestamps preserved through export. Test metadata and post-action records are alongside this report. + +Review contact, knee orientation, heel/tongue ownership, coat overlap, arm motion and internal 16→1 seams. The outer movie loop is not an animation seam. Only south walk is represented; candidate idle and unseen facings remain incomplete. Shared scene and device testing remain gated on review. No shipping art or accessibility policy was changed. + +Full core regression completed: 773 tests across 109 suites passed in 832.380 seconds (exit 0). This does not clear the separate recorded Reduced Motion app failure. diff --git a/docs/review/player-clean-review/metrics.json b/docs/review/player-clean-review/metrics.json new file mode 100644 index 00000000..ea4c65c6 --- /dev/null +++ b/docs/review/player-clean-review/metrics.json @@ -0,0 +1,382 @@ +{ + "axis" : 32767, + "cleanSilhouetteReview" : true, + "coveragePassed" : true, + "frameCosts" : [ + { + "renderSeconds" : 0.0010120868682861328, + "simulationSeconds" : 0, + "tick" : 0 + }, + { + "renderSeconds" : 0.0010100603103637695, + "simulationSeconds" : 0, + "tick" : 0 + }, + { + "renderSeconds" : 0.0015490055084228516, + "simulationSeconds" : 0, + "tick" : 0 + }, + { + "renderSeconds" : 0.00150299072265625, + "simulationSeconds" : 9.5367431640625e-07, + "tick" : 0 + }, + { + "renderSeconds" : 0.0046679973602294922, + "simulationSeconds" : 0.0065439939498901367, + "tick" : 1 + }, + { + "renderSeconds" : 0.0039570331573486328, + "simulationSeconds" : 0.010122060775756836, + "tick" : 2 + }, + { + "renderSeconds" : 0.0059039592742919922, + "simulationSeconds" : 0.043560981750488281, + "tick" : 5 + }, + { + "renderSeconds" : 0.0033628940582275391, + "simulationSeconds" : 0.041257977485656738, + "tick" : 10 + }, + { + "renderSeconds" : 0.0031660795211791992, + "simulationSeconds" : 0.030990004539489746, + "tick" : 14 + }, + { + "renderSeconds" : 0.0032899379730224609, + "simulationSeconds" : 0.022855997085571289, + "tick" : 17 + }, + { + "renderSeconds" : 0.0035560131072998047, + "simulationSeconds" : 0.022240996360778809, + "tick" : 20 + }, + { + "renderSeconds" : 0.0034220218658447266, + "simulationSeconds" : 0.021416068077087402, + "tick" : 23 + }, + { + "renderSeconds" : 0.0030770301818847656, + "simulationSeconds" : 0.022917985916137695, + "tick" : 26 + }, + { + "renderSeconds" : 0.0031969547271728516, + "simulationSeconds" : 0.022219061851501465, + "tick" : 29 + }, + { + "renderSeconds" : 0.0033820867538452148, + "simulationSeconds" : 0.020339012145996094, + "tick" : 32 + }, + { + "renderSeconds" : 0.0030670166015625, + "simulationSeconds" : 0.022055983543395996, + "tick" : 35 + }, + { + "renderSeconds" : 0.0041739940643310547, + "simulationSeconds" : 0.023196935653686523, + "tick" : 38 + }, + { + "renderSeconds" : 0.0035229921340942383, + "simulationSeconds" : 0.028128981590270996, + "tick" : 41 + }, + { + "renderSeconds" : 0.0034650564193725586, + "simulationSeconds" : 0.022804975509643555, + "tick" : 44 + }, + { + "renderSeconds" : 0.0040060281753540039, + "simulationSeconds" : 0.021569967269897461, + "tick" : 47 + }, + { + "renderSeconds" : 0.0030970573425292969, + "simulationSeconds" : 0.021757960319519043, + "tick" : 50 + }, + { + "renderSeconds" : 0.0029970407485961914, + "simulationSeconds" : 0.019788980484008789, + "tick" : 53 + }, + { + "renderSeconds" : 0.0030640363693237305, + "simulationSeconds" : 0.020277023315429688, + "tick" : 56 + }, + { + "renderSeconds" : 0.0031070709228515625, + "simulationSeconds" : 0.014291048049926758, + "tick" : 58 + }, + { + "renderSeconds" : 0.0032060146331787109, + "simulationSeconds" : 0.0069310665130615234, + "tick" : 59 + }, + { + "renderSeconds" : 0.0035250186920166016, + "simulationSeconds" : 0.0067129135131835938, + "tick" : 60 + }, + { + "renderSeconds" : 0.00267791748046875, + "simulationSeconds" : 0.0068830251693725586, + "tick" : 61 + }, + { + "renderSeconds" : 0.0033229589462280273, + "simulationSeconds" : 0.0085890293121337891, + "tick" : 62 + }, + { + "renderSeconds" : 0.0038189888000488281, + "simulationSeconds" : 0.029655933380126953, + "tick" : 65 + }, + { + "renderSeconds" : 0.0039200782775878906, + "simulationSeconds" : 0.029958009719848633, + "tick" : 68 + }, + { + "renderSeconds" : 0.0033268928527832031, + "simulationSeconds" : 0.023736953735351562, + "tick" : 71 + }, + { + "renderSeconds" : 0.0029549598693847656, + "simulationSeconds" : 0.021379947662353516, + "tick" : 74 + }, + { + "renderSeconds" : 0.0028450489044189453, + "simulationSeconds" : 0.020148038864135742, + "tick" : 77 + }, + { + "renderSeconds" : 0.0027419328689575195, + "simulationSeconds" : 0.014081001281738281, + "tick" : 79 + }, + { + "renderSeconds" : 0.0031080245971679688, + "simulationSeconds" : 0.0063090324401855469, + "tick" : 80 + }, + { + "renderSeconds" : 0.0028480291366577148, + "simulationSeconds" : 0.0068459510803222656, + "tick" : 81 + }, + { + "renderSeconds" : 0.0027320384979248047, + "simulationSeconds" : 0.013818025588989258, + "tick" : 83 + }, + { + "renderSeconds" : 0.0027830600738525391, + "simulationSeconds" : 9.5367431640625e-07, + "tick" : 83 + }, + { + "renderSeconds" : 0.0036369562149047852, + "simulationSeconds" : 0.0075070858001708984, + "tick" : 84 + }, + { + "renderSeconds" : 0.0032569169998168945, + "simulationSeconds" : 0.015565991401672363, + "tick" : 86 + }, + { + "renderSeconds" : 0.0032349824905395508, + "simulationSeconds" : 0.014503002166748047, + "tick" : 88 + }, + { + "renderSeconds" : 0.0037480592727661133, + "simulationSeconds" : 0.015164971351623535, + "tick" : 90 + }, + { + "renderSeconds" : 0.0031681060791015625, + "simulationSeconds" : 0.016767978668212891, + "tick" : 92 + }, + { + "renderSeconds" : 0.0033949613571166992, + "simulationSeconds" : 0.027768969535827637, + "tick" : 95 + }, + { + "renderSeconds" : 0.0036449432373046875, + "simulationSeconds" : 0.015716910362243652, + "tick" : 97 + }, + { + "renderSeconds" : 0.0029499530792236328, + "simulationSeconds" : 0.013595104217529297, + "tick" : 99 + }, + { + "renderSeconds" : 0.0032880306243896484, + "simulationSeconds" : 0.015822052955627441, + "tick" : 101 + }, + { + "renderSeconds" : 0.0035010576248168945, + "simulationSeconds" : 0.017157077789306641, + "tick" : 103 + }, + { + "renderSeconds" : 0.0048400163650512695, + "simulationSeconds" : 0.021905064582824707, + "tick" : 106 + }, + { + "renderSeconds" : 0.0032129287719726562, + "simulationSeconds" : 0.013654947280883789, + "tick" : 108 + }, + { + "renderSeconds" : 0.0031850337982177734, + "simulationSeconds" : 0.015576958656311035, + "tick" : 110 + }, + { + "renderSeconds" : 0.0035070180892944336, + "simulationSeconds" : 0.016811013221740723, + "tick" : 112 + }, + { + "renderSeconds" : 0.0044798851013183594, + "simulationSeconds" : 0.014994025230407715, + "tick" : 114 + }, + { + "renderSeconds" : 0.0035049915313720703, + "simulationSeconds" : 0.024267077445983887, + "tick" : 117 + }, + { + "renderSeconds" : 0.0028799772262573242, + "simulationSeconds" : 0.013615965843200684, + "tick" : 119 + }, + { + "renderSeconds" : 0.0030119419097900391, + "simulationSeconds" : 0.00669097900390625, + "tick" : 120 + }, + { + "renderSeconds" : 0.0030959844589233398, + "simulationSeconds" : 0.016808986663818359, + "tick" : 122 + }, + { + "renderSeconds" : 0.0034170150756835938, + "simulationSeconds" : 0.014053106307983398, + "tick" : 124 + }, + { + "renderSeconds" : 0.0025770664215087891, + "simulationSeconds" : 0.013915061950683594, + "tick" : 126 + }, + { + "renderSeconds" : 0.0030709505081176758, + "simulationSeconds" : 0.0075470209121704102, + "tick" : 127 + }, + { + "renderSeconds" : 0.0027409791946411133, + "simulationSeconds" : 0.014073967933654785, + "tick" : 129 + }, + { + "renderSeconds" : 0.0031820535659790039, + "simulationSeconds" : 0.016003966331481934, + "tick" : 131 + }, + { + "renderSeconds" : 0.0028129816055297852, + "simulationSeconds" : 0.01659095287322998, + "tick" : 133 + }, + { + "renderSeconds" : 0.0028240680694580078, + "simulationSeconds" : 0.014014959335327148, + "tick" : 135 + }, + { + "renderSeconds" : 0.0028629302978515625, + "simulationSeconds" : 0.012951016426086426, + "tick" : 137 + }, + { + "renderSeconds" : 0.0028290748596191406, + "simulationSeconds" : 0.016070961952209473, + "tick" : 139 + }, + { + "renderSeconds" : 0.0028530359268188477, + "simulationSeconds" : 0.014544963836669922, + "tick" : 141 + }, + { + "renderSeconds" : 0.0028240680694580078, + "simulationSeconds" : 0.0066599845886230469, + "tick" : 142 + }, + { + "renderSeconds" : 0.0031260251998901367, + "simulationSeconds" : 0.0159759521484375, + "tick" : 144 + }, + { + "renderSeconds" : 0.0033049583435058594, + "simulationSeconds" : 0.02246701717376709, + "tick" : 147 + }, + { + "renderSeconds" : 0.0030269622802734375, + "simulationSeconds" : 0.015210986137390137, + "tick" : 149 + }, + { + "renderSeconds" : 0.0032160282135009766, + "simulationSeconds" : 0.014999985694885254, + "tick" : 151 + } + ], + "frames" : 16, + "initialDisplaySeconds" : 0.0318085000035353, + "outlineBuildSeconds" : 0, + "outlineBytes" : 299904, + "outlineHits" : 104, + "outlineMisses" : 0, + "outlineReadbacks" : 0, + "postActionSeconds" : 0.086790800094604492, + "preparationSeconds" : 0.69728696346282959, + "reducedMotion" : false, + "renderSeconds" : 0.23057734966278076, + "repetition" : 10, + "scenePreparationSeconds" : 0.25069403648376465, + "simulationSeconds" : 1.172360897064209, + "stage" : 4 +} \ No newline at end of file diff --git a/docs/review/player-clean-review/post-action-records.json b/docs/review/player-clean-review/post-action-records.json new file mode 100644 index 00000000..c25d5b27 --- /dev/null +++ b/docs/review/player-clean-review/post-action-records.json @@ -0,0 +1,1412 @@ +[ + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221850.05000000005, + "facing" : "e", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 0 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221850.06666666671, + "facing" : "e", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 0 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 179200, + "cameraX" : 224, + "cameraY" : 350, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.08333333337, + "facing" : "s", + "framePath" : "player-source-s-00", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 350, + "sourceFrameIndex" : 0, + "tick" : 1, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 178176, + "cameraX" : 224, + "cameraY" : 348, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.10000000003, + "facing" : "s", + "framePath" : "player-source-s-00", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 348, + "sourceFrameIndex" : 0, + "tick" : 2, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 175104, + "cameraX" : 224, + "cameraY" : 342, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.13712187504, + "facing" : "s", + "framePath" : "player-source-s-01", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 342, + "sourceFrameIndex" : 1, + "tick" : 5, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 169984, + "cameraX" : 224, + "cameraY" : 332, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.21970908338, + "facing" : "s", + "framePath" : "player-source-s-04", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 332, + "sourceFrameIndex" : 4, + "tick" : 10, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 165888, + "cameraX" : 224, + "cameraY" : 324, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.29169958338, + "facing" : "s", + "framePath" : "player-source-s-06", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 324, + "sourceFrameIndex" : 6, + "tick" : 14, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 162816, + "cameraX" : 224, + "cameraY" : 318, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.34604237505, + "facing" : "s", + "framePath" : "player-source-s-08", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 318, + "sourceFrameIndex" : 8, + "tick" : 17, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 159744, + "cameraX" : 224, + "cameraY" : 312, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.38791929171, + "facing" : "s", + "framePath" : "player-source-s-09", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 312, + "sourceFrameIndex" : 9, + "tick" : 20, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 156672, + "cameraX" : 224, + "cameraY" : 306, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.43830837504, + "facing" : "s", + "framePath" : "player-source-s-11", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 306, + "sourceFrameIndex" : 11, + "tick" : 23, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 153600, + "cameraX" : 224, + "cameraY" : 300, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.48819779171, + "facing" : "s", + "framePath" : "player-source-s-12", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 300, + "sourceFrameIndex" : 12, + "tick" : 26, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 150528, + "cameraX" : 224, + "cameraY" : 294, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.5390987084, + "facing" : "s", + "framePath" : "player-source-s-14", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 294, + "sourceFrameIndex" : 14, + "tick" : 29, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 147456, + "cameraX" : 224, + "cameraY" : 288, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.58752654173, + "facing" : "s", + "framePath" : "player-source-s-00", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 288, + "sourceFrameIndex" : 0, + "tick" : 32, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 144384, + "cameraX" : 224, + "cameraY" : 282, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.63565820837, + "facing" : "s", + "framePath" : "player-source-s-01", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 282, + "sourceFrameIndex" : 1, + "tick" : 35, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 141312, + "cameraX" : 224, + "cameraY" : 276, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.68698258337, + "facing" : "s", + "framePath" : "player-source-s-03", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 276, + "sourceFrameIndex" : 3, + "tick" : 38, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 138240, + "cameraX" : 224, + "cameraY" : 270, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.74268704173, + "facing" : "s", + "framePath" : "player-source-s-05", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 270, + "sourceFrameIndex" : 5, + "tick" : 41, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 135168, + "cameraX" : 224, + "cameraY" : 264, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.79450041673, + "facing" : "s", + "framePath" : "player-source-s-06", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 264, + "sourceFrameIndex" : 6, + "tick" : 44, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 132096, + "cameraX" : 224, + "cameraY" : 258, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.83751137505, + "facing" : "s", + "framePath" : "player-source-s-08", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 258, + "sourceFrameIndex" : 8, + "tick" : 47, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 129024, + "cameraX" : 224, + "cameraY" : 252, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.88752729172, + "facing" : "s", + "framePath" : "player-source-s-09", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 252, + "sourceFrameIndex" : 9, + "tick" : 50, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 125952, + "cameraX" : 224, + "cameraY" : 246, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.93473025004, + "facing" : "s", + "framePath" : "player-source-s-11", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 246, + "sourceFrameIndex" : 11, + "tick" : 53, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 122880, + "cameraX" : 224, + "cameraY" : 240, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221850.98428362506, + "facing" : "s", + "framePath" : "player-source-s-12", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 240, + "sourceFrameIndex" : 12, + "tick" : 56, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 120832, + "cameraX" : 224, + "cameraY" : 236, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.01723170839, + "facing" : "s", + "framePath" : "player-source-s-13", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 236, + "sourceFrameIndex" : 13, + "tick" : 58, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 119808, + "cameraX" : 224, + "cameraY" : 234, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.03333333338, + "facing" : "s", + "framePath" : "player-source-s-14", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 234, + "sourceFrameIndex" : 14, + "tick" : 59, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 118784, + "cameraX" : 224, + "cameraY" : 232, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.06666666671, + "facing" : "s", + "framePath" : "player-source-s-15", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 232, + "sourceFrameIndex" : 15, + "tick" : 60, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 117760, + "cameraX" : 224, + "cameraY" : 230, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.08333333337, + "facing" : "s", + "framePath" : "player-source-s-00", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 230, + "sourceFrameIndex" : 0, + "tick" : 61, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 116736, + "cameraX" : 224, + "cameraY" : 228, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.10000000003, + "facing" : "s", + "framePath" : "player-source-s-00", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 228, + "sourceFrameIndex" : 0, + "tick" : 62, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 113664, + "cameraX" : 224, + "cameraY" : 222, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.13333333339, + "facing" : "s", + "framePath" : "player-source-s-01", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 222, + "sourceFrameIndex" : 1, + "tick" : 65, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 110592, + "cameraX" : 224, + "cameraY" : 216, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.18632045839, + "facing" : "s", + "framePath" : "player-source-s-03", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 216, + "sourceFrameIndex" : 3, + "tick" : 68, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 107520, + "cameraX" : 224, + "cameraY" : 210, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.24702350004, + "facing" : "s", + "framePath" : "player-source-s-05", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 210, + "sourceFrameIndex" : 5, + "tick" : 71, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 104448, + "cameraX" : 224, + "cameraY" : 204, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.28889020838, + "facing" : "s", + "framePath" : "player-source-s-06", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 204, + "sourceFrameIndex" : 6, + "tick" : 74, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 101376, + "cameraX" : 224, + "cameraY" : 198, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.33387020839, + "facing" : "s", + "framePath" : "player-source-s-08", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 198, + "sourceFrameIndex" : 8, + "tick" : 77, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 99328, + "cameraX" : 224, + "cameraY" : 194, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.36666666673, + "facing" : "s", + "framePath" : "player-source-s-09", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 194, + "sourceFrameIndex" : 9, + "tick" : 79, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 98304, + "cameraX" : 224, + "cameraY" : 192, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.38333333339, + "facing" : "s", + "framePath" : "player-source-s-09", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 192, + "sourceFrameIndex" : 9, + "tick" : 80, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 97280, + "cameraX" : 224, + "cameraY" : 190, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.40000000005, + "facing" : "s", + "framePath" : "player-source-s-10", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 190, + "sourceFrameIndex" : 10, + "tick" : 81, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 95232, + "cameraX" : 224, + "cameraY" : 186, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.43363208338, + "facing" : "s", + "framePath" : "player-source-s-11", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 186, + "sourceFrameIndex" : 11, + "tick" : 83, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 95232, + "cameraX" : 224, + "cameraY" : 186, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.45000000004, + "facing" : "s", + "framePath" : "player-source-s-11", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 186, + "sourceFrameIndex" : 11, + "tick" : 83, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 94208, + "cameraX" : 224, + "cameraY" : 184, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.4666666667, + "facing" : "s", + "framePath" : "player-source-s-12", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 184, + "sourceFrameIndex" : 12, + "tick" : 84, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 92160, + "cameraX" : 224, + "cameraY" : 180, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.4833333334, + "facing" : "s", + "framePath" : "player-source-s-12", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 180, + "sourceFrameIndex" : 12, + "tick" : 86, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 90112, + "cameraX" : 224, + "cameraY" : 176, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.52355450005, + "facing" : "s", + "framePath" : "player-source-s-14", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 176, + "sourceFrameIndex" : 14, + "tick" : 88, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 88064, + "cameraX" : 224, + "cameraY" : 172, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.55000000005, + "facing" : "s", + "framePath" : "player-source-s-14", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 172, + "sourceFrameIndex" : 14, + "tick" : 90, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 86016, + "cameraX" : 224, + "cameraY" : 168, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.59279683337, + "facing" : "s", + "framePath" : "player-source-s-00", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 168, + "sourceFrameIndex" : 0, + "tick" : 92, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 82944, + "cameraX" : 224, + "cameraY" : 162, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.63333333339, + "facing" : "s", + "framePath" : "player-source-s-01", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 162, + "sourceFrameIndex" : 1, + "tick" : 95, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 80896, + "cameraX" : 224, + "cameraY" : 158, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.67674387505, + "facing" : "s", + "framePath" : "player-source-s-02", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 158, + "sourceFrameIndex" : 2, + "tick" : 97, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 78848, + "cameraX" : 224, + "cameraY" : 154, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.7166666667, + "facing" : "s", + "framePath" : "player-source-s-04", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 154, + "sourceFrameIndex" : 4, + "tick" : 99, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 76800, + "cameraX" : 224, + "cameraY" : 150, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.7333333334, + "facing" : "s", + "framePath" : "player-source-s-04", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 150, + "sourceFrameIndex" : 4, + "tick" : 101, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 74752, + "cameraX" : 224, + "cameraY" : 146, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.7741252917, + "facing" : "s", + "framePath" : "player-source-s-06", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 146, + "sourceFrameIndex" : 6, + "tick" : 103, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 71680, + "cameraX" : 224, + "cameraY" : 140, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.81693183337, + "facing" : "s", + "framePath" : "player-source-s-07", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 140, + "sourceFrameIndex" : 7, + "tick" : 106, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 69632, + "cameraX" : 224, + "cameraY" : 136, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.85622170838, + "facing" : "s", + "framePath" : "player-source-s-08", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 136, + "sourceFrameIndex" : 8, + "tick" : 108, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 67584, + "cameraX" : 224, + "cameraY" : 132, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.88333333339, + "facing" : "s", + "framePath" : "player-source-s-09", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 132, + "sourceFrameIndex" : 9, + "tick" : 110, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 65536, + "cameraX" : 224, + "cameraY" : 128, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.92438483337, + "facing" : "s", + "framePath" : "player-source-s-10", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 128, + "sourceFrameIndex" : 10, + "tick" : 112, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 63488, + "cameraX" : 224, + "cameraY" : 124, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221851.9666666667, + "facing" : "s", + "framePath" : "player-source-s-12", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 124, + "sourceFrameIndex" : 12, + "tick" : 114, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 60416, + "cameraX" : 224, + "cameraY" : 118, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221852.00000000006, + "facing" : "s", + "framePath" : "player-source-s-13", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 118, + "sourceFrameIndex" : 13, + "tick" : 117, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 58368, + "cameraX" : 224, + "cameraY" : 114, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221852.03777929171, + "facing" : "s", + "framePath" : "player-source-s-14", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 114, + "sourceFrameIndex" : 14, + "tick" : 119, + "viewScale" : 3, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 57344, + "authoritativeRawY" : 57344, + "cameraX" : 224, + "cameraY" : 112, + "candidateAvailable" : true, + "clip" : "player_move|s", + "displayTime" : 221852.06666666671, + "facing" : "s", + "framePath" : "player-source-s-15", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "inputAxis" : 32767, + "reducedMotion" : false, + "renderedX" : 224, + "renderedY" : 112, + "sourceFrameIndex" : 15, + "tick" : 120, + "viewScale" : 3, + "width" : 64 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.10000000003, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 122 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.11666666673, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 124 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.15876229171, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 126 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.18333333338, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 127 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.2166666667, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 129 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.2333333334, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 131 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.27432120839, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 133 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.30000000005, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 135 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.34066433337, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 137 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.36666666673, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 139 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.40558566671, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 141 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.43333333338, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 142 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.4666666667, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 144 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.50000000006, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 147 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.53738666672, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 149 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 221852.58021075005, + "facing" : "s", + "inputAxis" : 32767, + "reducedMotion" : false, + "tick" : 151 + } +] \ No newline at end of file diff --git a/docs/review/player-clean-review/test-summary.json b/docs/review/player-clean-review/test-summary.json new file mode 100644 index 00000000..2798c8c6 --- /dev/null +++ b/docs/review/player-clean-review/test-summary.json @@ -0,0 +1,56 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 1, + "passedTests" : 112, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 1, + "finishTime" : 1792104537, + "passedTests" : 110, + "result" : "Failed", + "skippedTests" : 0, + "startTime" : 1792104157.185, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + { + "failureText" : "XCTAssertEqual failed: (\"15\") is not equal to (\"16\") - Normal playback must actually display every source texture", + "targetName" : "SSRuntimeTests", + "testIdentifier" : 15, + "testIdentifierString" : "DisplayedPlaybackTests/testRevisedPlayerReducedMotionCycle()", + "testIdentifierURL" : "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testRevisedPlayerReducedMotionCycle", + "testName" : "testRevisedPlayerReducedMotionCycle()" + } + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "34% of duration", + "text" : "1 longest test run with outlier durations exceeding 27.42s (three standard deviations)" + } + ], + "totalTestCount" : 111 +} diff --git a/docs/review/player-contrast-encounter/capture-record.txt b/docs/review/player-contrast-encounter/capture-record.txt new file mode 100644 index 00000000..49a8fb31 --- /dev/null +++ b/docs/review/player-contrast-encounter/capture-record.txt @@ -0,0 +1,5 @@ +Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. +tick=461, player=264,592, facing=s +enemies=2, projectiles=1, telegraphs=0 +Production GameScene/HUD/fog/ground/projection, painted neutral Player texture only. +Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. \ No newline at end of file diff --git a/docs/review/player-contrast-encounter/capture-summary.json b/docs/review/player-contrast-encounter/capture-summary.json new file mode 100644 index 00000000..2538ef51 --- /dev/null +++ b/docs/review/player-contrast-encounter/capture-summary.json @@ -0,0 +1,25 @@ +{ + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "98" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "compositionStatus": "Success", + "attachments": [ + "BP010-legal-encounter-full", + "BP010-legal-encounter-quarter", + "BP010-legal-encounter-none" + ] +} diff --git a/docs/review/player-contrast-encounter/core-tests.log b/docs/review/player-contrast-encounter/core-tests.log new file mode 100644 index 00000000..18b078aa --- /dev/null +++ b/docs/review/player-contrast-encounter/core-tests.log @@ -0,0 +1,1840 @@ +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.27s) +Test Suite 'All tests' started at 2026-10-14 18:09:36.523. +Test Suite 'All tests' passed at 2026-10-14 18:09:36.526. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.003) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite CourtClimaxTests started. +◇ Suite CameraFairnessTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite ReplayTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite D021CeilingsTests started. +◇ Suite SilhouetteTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite GhostSettingTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite KernelVectorTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite ContractVersionsTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite RunTelemetryTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite VisualLanguageTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite GhostRunTests started. +◇ Suite DefectRegistryTests started. +◇ Suite AssetCatalogTests started. +◇ Suite CameraPlacementTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite StealthTextureTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite CombatCausalityTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite PacingProbeTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite HUDPresentationTests started. +◇ Suite HUDMappingTests started. +◇ Suite DailyFlavourTests started. +◇ Suite CameraHUDTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite DaemonClipTests started. +◇ Suite ClipTimingTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite AwarenessTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite EnemyBehaviourTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite ContractVectorTests started. +◇ Suite AudioProjectorTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite MedalTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite ClipMetadataTests started. +◇ Suite SimulationClockTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite GateVerificationTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite GameFeelTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite CameraPresentationTests started. +◇ Suite EventCatalogTests started. +◇ Suite TamperFloorTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite CaptainCameraTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite QuietApproachTests started. +◇ Suite DamageOrderingTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite CommitClipTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite CaptainClipTests started. +◇ Suite DeterminismTests started. +◇ Suite RunCardTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite CameraFollowTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite ApproximateCueTests started. +◇ Suite TransitPatrolTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite OriginalArtTests started. +◇ Suite ConeOrientationTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite OpeningTests started. +◇ Suite AmbientMotionTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite ProceduralVFXTests started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test currentIdentityIsCompatible() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test ghostIsOnByDefault() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test daemonHasClips() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test exactMigrationVectors() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test originalsAreAdmitted() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test sha256KnownVector() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 8.181 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 8.181 seconds. +✔ Test currentIdentityIsCompatible() passed after 8.181 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 8.181 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 8.181 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 8.181 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 8.181 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 8.181 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 8.181 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 8.181 seconds. +✔ Test ghostIsOnByDefault() passed after 8.181 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 8.181 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 8.181 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 8.181 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 8.182 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 8.182 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 8.182 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 8.182 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 8.184 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 8.184 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 8.185 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 8.184 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 8.185 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 8.184 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 8.184 seconds. +✔ Test anUnawareKillIsATakedown() passed after 8.184 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 8.184 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 8.184 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 8.184 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 8.184 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 8.184 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 8.185 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 8.184 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 8.185 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 8.184 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 8.184 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 8.184 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 8.184 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 8.184 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 8.184 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 8.236 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 8.236 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 8.236 seconds. +✔ Test mappedElementsScaleProportionally() passed after 8.236 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 8.236 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 8.236 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 8.236 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 8.236 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 8.236 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 8.236 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 8.236 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 8.236 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 8.236 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 8.236 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 8.236 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 8.237 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 8.236 seconds. +✔ Test daemonHasClips() passed after 8.236 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 8.236 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 8.236 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 8.236 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 8.236 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 8.236 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 8.236 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 8.236 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 8.237 seconds. +✔ Test exactMigrationVectors() passed after 8.237 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 8.237 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 8.237 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 8.237 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 8.237 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 8.237 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 8.237 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 8.237 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 8.237 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 8.237 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 8.237 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 8.237 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 8.238 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 8.237 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 8.237 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 8.237 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 8.237 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 8.237 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 8.237 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 8.237 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 8.237 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 8.237 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 8.237 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 8.237 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 8.237 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 8.237 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 8.237 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 8.237 seconds. +✔ Test aFreshRunStartsQuiet() passed after 8.237 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 8.239 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 8.238 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 8.238 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 8.237 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 8.237 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 8.237 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 8.237 seconds. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 8.237 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 8.238 seconds. +✔ Test attackStatesAreUnchanged() passed after 8.237 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 8.237 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 8.237 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 8.237 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 8.237 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 8.237 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 8.237 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 8.239 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 8.238 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 8.238 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 8.238 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 8.238 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 8.238 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 8.238 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 8.238 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 8.238 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 8.238 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 8.238 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 8.238 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 8.238 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 8.238 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 8.238 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 8.238 seconds. +✔ Test originalsAreAdmitted() passed after 8.238 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 8.238 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 8.238 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 8.239 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 8.238 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 8.238 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 8.238 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 8.238 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 8.239 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 8.238 seconds. +✔ Test sha256KnownVector() passed after 8.241 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 8.228 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 8.028 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 8.023 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 8.023 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 7.807 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 6.883 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite ExposureFinalizationTests passed after 9.197 seconds. +✔ Suite DefectRegistryTests passed after 9.197 seconds. +✔ Suite CombatFeedbackTests passed after 9.197 seconds. +✔ Suite DailyFlavourTests passed after 9.197 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 9.194 seconds. +✔ Suite ClipTimingTests passed after 9.197 seconds. +✔ Suite ClipMetadataV2Tests passed after 9.198 seconds. +✔ Suite CanonicalArenaZonesTests passed after 9.198 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 9.197 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 9.195 seconds. +✔ Suite CameraFollowTests passed after 9.197 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 9.197 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test nodeAndCopyAgree() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test identityMismatchIsRejected() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test playingIsNotTerminal() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 3.581 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 3.581 seconds. +✔ Test unknownIdentityFailsClosed() passed after 3.581 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 3.581 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 12.777 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 3.581 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 3.581 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 3.581 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 3.581 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 3.581 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 3.581 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 3.581 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 3.581 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 3.581 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 3.581 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 3.581 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 3.581 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 3.581 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 3.581 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 3.582 seconds. +✔ Test aCompleteGroupIsBacked() passed after 3.581 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 3.581 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 3.581 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 3.595 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 3.595 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 3.595 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 3.596 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 3.595 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 3.595 seconds. +✔ Test familiesMapToDistinctAssets() passed after 3.595 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 3.596 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 3.595 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 3.595 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 3.596 seconds. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 3.596 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 3.596 seconds. +✔ Test nodeAndCopyAgree() passed after 3.596 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 12.793 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 3.596 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 3.597 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 3.597 seconds. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 3.597 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 3.597 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 3.597 seconds. +✔ Test identityMismatchIsRejected() passed after 3.597 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 3.597 seconds. +✔ Test windowsMatchTheD090Table() passed after 3.597 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 3.597 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 3.597 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 3.598 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 3.602 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 3.602 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 3.602 seconds. +◇ Test gateT908OpenDefectsFailReport() started. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 3.603 seconds. +✔ Test captainArtIsAllOrNothing() passed after 3.603 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 3.603 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 3.603 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 3.604 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 3.603 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 3.601 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 3.601 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 3.601 seconds. +✔ Test musicAssetIdsAreReachable() passed after 3.601 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 3.601 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 3.604 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 3.601 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 12.801 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 3.601 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 3.601 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 3.601 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 3.601 seconds. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 3.601 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 3.601 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 3.602 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 3.601 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 3.602 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 3.602 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 3.602 seconds. +✔ Test seedIsDeterministicForADate() passed after 3.602 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 3.602 seconds. +✔ Test playingIsNotTerminal() passed after 3.595 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 3.341 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 3.335 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 3.335 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 3.046 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 2.714 seconds. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite SilhouetteTests passed after 13.054 seconds. +✔ Suite ContractVersionsTests passed after 13.054 seconds. +✔ Suite VisualLanguageTests passed after 13.054 seconds. +✔ Suite CameraMountSolidTests passed after 13.054 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 3.850 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.259 seconds. +✔ Suite AssetCatalogTests passed after 13.054 seconds. +✔ Suite ObjectiveProjectionTests passed after 13.063 seconds. +✔ Suite CivicSeamIdentityTests passed after 13.063 seconds. +✔ Test successRowsWithNoStoredBest() passed after 3.859 seconds. +✔ Suite SimulationClockTests passed after 13.063 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 13.063 seconds. +✔ Suite ReceiptArchiveTests passed after 13.063 seconds. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 4.040 seconds. +◇ Test patrolSlipSearch() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test profileT406AggregateReportIsStable() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 13.241 seconds. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test vfxFullScreenFlashFailsClosed() started. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 5.205 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 5.205 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 9.233 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 18.434 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 5.205 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 5.204 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 5.204 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 5.204 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 5.204 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 5.206 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 5.206 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 5.206 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 5.206 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 5.206 seconds. +◇ Test noOrphanedAttackClipNamesRemain() started. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 5.206 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 18.435 seconds. +✔ Test groupsAreBackedIndependently() passed after 5.206 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 5.206 seconds. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 5.206 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 5.625 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 5.623 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 5.623 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 5.623 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 5.624 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 9.655 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 5.618 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 5.618 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 5.618 seconds. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 5.619 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 5.618 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 5.632 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 5.626 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 5.626 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 5.626 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 5.626 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 5.626 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 5.626 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 5.626 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 5.626 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 5.625 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 5.632 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 5.625 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 5.625 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 5.625 seconds. +◇ Test ghostRowShowsNewBestOrTheGap() started. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 5.625 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 5.633 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 5.625 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 5.625 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 5.627 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 5.625 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 5.624 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 5.624 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 5.625 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 5.625 seconds. +✔ Test patrolSlipSearch() passed after 5.624 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 5.623 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 5.625 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 5.623 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 5.623 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 5.623 seconds. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 5.623 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 18.866 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 5.623 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 5.623 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 5.623 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 5.625 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 5.623 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 5.623 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 5.567 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 4.459 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 4.364 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 4.364 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 5.777 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test vfxFullScreenFlashFailsClosed() passed after 2.330 seconds. +✔ Suite ArenaAndSimulationTests passed after 19.037 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 5.794 seconds. +✔ Suite HUDPresentationTests passed after 19.037 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 19.037 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.179 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 5.802 seconds. +✔ Suite EnvironmentContractTests passed after 19.038 seconds. +✔ Suite D021CeilingsTests passed after 19.038 seconds. +✔ Suite TerminalShareGeometryTests passed after 19.038 seconds. +✔ Suite MusicBedCoverageTests passed after 19.038 seconds. +✔ Suite EventCatalogTests passed after 19.037 seconds. +✔ Suite CameraPresentationTests passed after 19.038 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 5.792 seconds. +✔ Suite CameraHousingArtTests passed after 19.039 seconds. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +✔ Suite PatrolSlipSearch passed after 19.038 seconds. +✔ Suite ExpansionGateDecisionTests passed after 19.037 seconds. +◇ Test headingsAdvanceClockwise() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 0.072 seconds. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test audioCoverageIsMeasurable() started. +✔ Test headingsAdvanceClockwise() passed after 0.073 seconds. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 3.287 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 3.287 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 3.955 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 3.287 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 3.287 seconds. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 3.287 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 3.287 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 3.287 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 3.288 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 3.290 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 3.290 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 3.290 seconds. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +✔ Test nothingDeliveredMeansNothingBacked() passed after 3.290 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 3.290 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 3.290 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 3.306 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 3.306 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 3.306 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 3.306 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 3.306 seconds. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 3.306 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 3.307 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 3.308 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 3.308 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 3.308 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 3.308 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 3.308 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 6.726 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 3.308 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 3.308 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 3.310 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 3.308 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 3.308 seconds. +◇ Test originalSpritesUseAuthoredBoxes() started. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 3.308 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 3.308 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 3.308 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 3.308 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 3.308 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 3.308 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 3.309 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 3.308 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 3.308 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 3.551 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 3.308 seconds. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 22.415 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 3.308 seconds. +✔ Test lockdownOutranksExtraction() passed after 3.308 seconds. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 3.308 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 3.308 seconds. +✔ Test tamperedCommandIsRejected() passed after 3.309 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 3.308 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 3.308 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 3.307 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 3.276 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 2.805 seconds. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 2.803 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 2.803 seconds. +✔ Test audioCoverageIsMeasurable() passed after 3.343 seconds. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 2.641 seconds. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Suite CaptainClipTests passed after 23.021 seconds. +✔ Suite GhostSettingTests passed after 23.023 seconds. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 0.623 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 0.606 seconds. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 0.606 seconds. +✔ Suite RunTelemetryTests passed after 23.023 seconds. +✔ Suite CombatAuthorityReceiptTests passed after 23.022 seconds. +✔ Suite CameraHUDTests passed after 23.023 seconds. +✔ Suite TutorialCardDurationTests passed after 23.023 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 3.352 seconds. +✔ Suite CaptainCameraTests passed after 23.022 seconds. +✔ Suite AssetIntakeChecks passed after 23.023 seconds. +◇ Test correlatorCommitStaysAStateClip() started. +✔ Suite DeviceRunEvidenceTests passed after 23.023 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test originalSpritesUseAuthoredBoxes() passed after 0.604 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Suite AudioProjectorSmokeTests passed after 23.049 seconds. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 4.072 seconds. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +✔ Suite ApproximateCueTests passed after 23.181 seconds. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +✔ Test correlatorCommitStaysAStateClip() passed after 0.160 seconds. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test tamperedDigestIsRejected() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test anyTouchSkips() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test aLostApproachHasNoPayoutCaption() passed after 2.589 seconds. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 2.595 seconds. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 2.595 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 2.595 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 2.595 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 2.596 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 2.596 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 2.596 seconds. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 2.596 seconds. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +✔ Test anEmptyGroupIsNotBacked() passed after 2.597 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 2.597 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 2.596 seconds. +DAILY-RUN-400 distinct=400 salted=0 +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 7.154 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 3.081 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 3.081 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 3.081 seconds. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 3.081 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 3.083 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 3.083 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 3.083 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 3.083 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 3.083 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 3.082 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 7.153 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 3.082 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 3.082 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 3.082 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 3.082 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 3.082 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 3.082 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 3.082 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 3.082 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 13.461 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 3.082 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 7.154 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 3.082 seconds. +✔ Test exposureEX010SingleStateJumpEvent() passed after 3.082 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 3.082 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 3.084 seconds. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 13.035 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 3.083 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 3.084 seconds. +◇ Test everyActorSpriteIsSizeChecked() started. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 3.083 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 3.067 seconds. +✔ Test anyTouchSkips() passed after 3.054 seconds. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 3.037 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 7.155 seconds. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 3.082 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 2.422 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 2.999 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 3.094 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 0.497 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 26.276 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.012 seconds. +✔ Suite ReplayMatrixTests passed after 26.276 seconds. +◇ Test informantContactHitShowsItsCommit() started. +✔ Suite TamperFloorTests passed after 26.275 seconds. +✔ Suite TutorialPreemptionTests passed after 26.275 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.012 seconds. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +✔ Suite ReplayTests passed after 26.337 seconds. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test noTwoPhasesShareABed() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +✔ Test informantContactHitShowsItsCommit() passed after 0.062 seconds. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 1.497 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 4.651 seconds. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 1.498 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 1.498 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 1.498 seconds. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 1.498 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 1.498 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 1.498 seconds. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 1.498 seconds. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 1.498 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 1.498 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 1.498 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test mixLevelsClampToTheContractRange() passed after 1.511 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 1.511 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 1.511 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 1.514 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 1.514 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 1.514 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 1.515 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 1.584 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 1.515 seconds. +✔ Test noTwoPhasesShareABed() passed after 1.515 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 1.515 seconds. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 1.515 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 1.515 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 1.515 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 1.515 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 1.515 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 1.515 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 1.515 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 4.669 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 1.515 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 1.515 seconds. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 1.515 seconds. +✔ Test tamperedDigestIsRejected() passed after 4.670 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 1.516 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 1.516 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 1.516 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 1.516 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 1.516 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 1.518 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 1.518 seconds. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 1.711 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 1.704 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 1.562 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 0.915 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite QuietApproachPresentationTests passed after 28.118 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 1.841 seconds. +✔ Suite CameraDestructionReceiptTests passed after 28.118 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 0.282 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.269 seconds. +✔ Suite BossPhaseMusicTests passed after 28.118 seconds. +✔ Suite AudioProjectorTests passed after 28.118 seconds. +✔ Suite DamageOrderingTests passed after 28.117 seconds. +✔ Suite ObjectiveGraphTests passed after 28.117 seconds. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +✔ Suite ArenaReachabilityTests passed after 28.117 seconds. +✔ Suite DaemonClipTests passed after 28.118 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.263 seconds. +✔ Suite DeterminismTests passed after 28.117 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +✔ Suite HUDMappingTests passed after 28.166 seconds. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test spawnRuleCoversEveryCause() started. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 0.048 seconds. +◇ Test playerPC003HalfMagnitude() started. +◇ Test tamperedTicksAreRejected() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 5.144 seconds. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test labelFormat() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 4.473 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test playerPC001FullRightSixtyTicks() passed after 2.646 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 2.646 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 2.648 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 2.650 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 2.650 seconds. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 2.650 seconds. +◇ Test upgradeUP001PendingFreezesClock() started. +✔ Test runtimeMountSolidsHaveNoArt() passed after 2.650 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 2.650 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 2.651 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 2.658 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 2.659 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 2.658 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 2.661 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 2.661 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 2.661 seconds. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 2.661 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 2.661 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 2.661 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 2.661 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 2.660 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 2.660 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 2.661 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 2.660 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 2.660 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 2.660 seconds. +✔ Test playerPC003HalfMagnitude() passed after 2.660 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 17.584 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 2.663 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 2.663 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 2.655 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 2.655 seconds. +✔ Test labelFormat() passed after 2.732 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 2.758 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 2.701 seconds. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 2.728 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Suite RuntimeBundleTests passed after 31.005 seconds. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.193 seconds. +✔ Test tamperedTicksAreRejected() passed after 2.838 seconds. +✔ Suite EnemyBehaviourTests passed after 31.006 seconds. +✔ Suite ExtractionCountdownTests passed after 31.004 seconds. +✔ Suite TerminalPrecedenceTests passed after 31.006 seconds. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.175 seconds. +✔ Suite RunOutcomeTerminalTests passed after 31.005 seconds. +✔ Suite DailyRunSeedTests passed after 31.005 seconds. +✔ Suite ProceduralVFXTests passed after 31.006 seconds. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test groundTilesAreUniform() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 0.181 seconds. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.181 seconds. +✔ Suite CombatCausalityTests passed after 31.188 seconds. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 1.133 seconds. +✔ Test quietRestoreFailsClosed() passed after 1.130 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 1.145 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 1.152 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 1.152 seconds. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 1.153 seconds. +◇ Test outOfOrderCommandsAreRejected() started. +✔ Test coverageCountsOnlyDeclaredIds() passed after 1.153 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 1.153 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 1.153 seconds. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 1.166 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 1.166 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 1.166 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 13.241 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 3.538 seconds. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 1.166 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 1.166 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 1.166 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 1.166 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 1.166 seconds. +✔ Test theLatchIsInTheDigest() passed after 1.166 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 1.166 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 1.166 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 1.230 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 1.601 seconds. +✔ Suite ConeOrientationTests passed after 32.416 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 1.237 seconds. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 1.237 seconds. +✔ Test groundTilesAreUniform() passed after 1.247 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 0.762 seconds. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.185 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 0.161 seconds. +✔ Suite EnvironmentLibraryTests passed after 32.501 seconds. +◇ Test resetClearsCommits() started. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 4.334 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test peakDetectionIsTheHighestReached() started. +◇ Test bossSpawnsWithTenDpsContact() started. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test swiftIsUnderFiveThirty() started. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 1.383 seconds. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +✔ Test resetClearsCommits() passed after 0.069 seconds. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 1.306 seconds. +✔ Test patrolBlockFailsClosed() passed after 1.306 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 1.624 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 1.636 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 1.636 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 1.636 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test t3CompletesOnFirstImpact() passed after 1.636 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 1.636 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 2.194 seconds. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 2.194 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 2.194 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 3.577 seconds. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 2.194 seconds. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 2.194 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 34.766 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 2.194 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 2.194 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 2.194 seconds. +✔ Test coneSightNeedsAClearLine() passed after 2.194 seconds. +✔ Test rs024GhostIsExactlyTheLatch() passed after 2.194 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 2.194 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 2.194 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 2.250 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +✔ Test upgradeUP002SelectsSignalJammer() passed after 2.251 seconds. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 2.201 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 2.201 seconds. +✔ Test theEliteIsFullyBacked() passed after 4.529 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 3.883 seconds. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 3.383 seconds. +✔ Suite StealthTextureTests passed after 37.260 seconds. +✔ Suite CameraPlacementTests passed after 37.260 seconds. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +✔ Test damageToANonEnemyIsIgnored() passed after 2.437 seconds. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite CompleteRunVectorTests passed after 37.632 seconds. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +◇ Test playerBlockFailsClosed() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +✔ Test recordRoundTripsThroughJSON() passed after 3.426 seconds. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test rs021AFailedRunEarnsNothing() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test musicIsNotAnEffectCue() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test sightRangeIsInclusive() started. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 0.379 seconds. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 2.225 seconds. +✔ Test playerBlockFailsClosed() passed after 2.225 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 2.225 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 8.677 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 2.232 seconds. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 2.232 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 2.228 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 2.351 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 2.351 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 2.351 seconds. +✔ Test musicIsNotAnEffectCue() passed after 2.351 seconds. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 2.351 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 2.351 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 2.351 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 2.351 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 2.351 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 2.351 seconds. +✔ Test sightRangeIsInclusive() passed after 2.351 seconds. +✔ Suite CommitClipTests passed after 39.988 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 2.349 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 13.736 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 2.434 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 2.356 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 2.356 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 2.442 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 0.503 seconds. +✔ Suite PeakDensityProfilerTests passed after 40.076 seconds. +◇ Test lockstepMatchesALiveReplay() started. +✔ Suite AudioDeliveryTests passed after 40.075 seconds. +✔ Suite SpawnFairnessTests passed after 40.075 seconds. +✔ Suite QuietApproachTests passed after 40.076 seconds. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.001 seconds. +✔ Suite OpeningTests passed after 40.075 seconds. +✔ Suite AmbientMotionTests passed after 40.076 seconds. +✔ Suite RunCardTests passed after 40.285 seconds. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test palettesMatchTheirNamedLight() started. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 2.646 seconds. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +✔ Test arenaAR008ExtractionLeaveResets() passed after 1.089 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 1.089 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 1.089 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 1.089 seconds. +✔ Suite ClipMetadataTests passed after 41.376 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 1.089 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 1.089 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 1.089 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 1.089 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 3.168 seconds. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 1.089 seconds. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 1.089 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 1.089 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 1.089 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 1.089 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 1.089 seconds. +✔ Test encounterEN020SolidBlocksSight() passed after 1.141 seconds. +◇ Test resetClearsEveryReaction() started. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 1.141 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 0.275 seconds. +✔ Suite CombatContentFailClosedTests passed after 41.491 seconds. +✔ Suite TutorialStateMachineTests passed after 41.491 seconds. +✔ Suite PresentationSettingsTests passed after 41.491 seconds. +✔ Suite ClipAlignmentTests passed after 41.491 seconds. +✔ Suite LegacyAdmissionTests passed after 41.491 seconds. +✔ Test resetClearsEveryReaction() passed after 0.062 seconds. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +✔ Suite ReactionClipTrackerTests passed after 41.493 seconds. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 3.989 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 3.989 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 3.989 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 3.987 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 3.987 seconds. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 3.987 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 3.986 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 3.987 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 3.987 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 4.008 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 4.008 seconds. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 0.479 seconds. +✔ Suite KernelVectorTests passed after 45.950 seconds. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 19.611 seconds. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test minesProjectWithTheirArmingState() started. +✔ Suite ExpansionGateReportTests passed after 45.951 seconds. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 1.467 seconds. +✔ Test crossfadeTakesOneSecond() passed after 1.467 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 1.467 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 1.467 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 7.342 seconds. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 1.464 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 1.464 seconds. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 1.476 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 1.476 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 0.184 seconds. +✔ Suite CombatVisibilityTests passed after 47.568 seconds. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 1.617 seconds. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +◇ Test allyAlertsNeverChain() started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.636 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.636 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 2.251 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 0.636 seconds. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.636 seconds. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.636 seconds. +✔ Test allyAlertsNeverChain() passed after 0.647 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 0.647 seconds. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.414 seconds. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.380 seconds. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test aDirectionNeverBorrowsFromAnother() started. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 1.315 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 1.315 seconds. +✔ Test patrolEN035MovingPastHoldsFire() passed after 1.315 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 1.315 seconds. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 1.315 seconds. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +✔ Test bossPhaseBO002HealthBands() passed after 1.315 seconds. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 1.328 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 1.329 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.043 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.013 seconds. +✔ Suite CameraDestructionOrderTests passed after 49.915 seconds. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +◇ Test coverageIsWhatTheRecordSays() started. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +✔ Suite TargetingPriorityTests passed after 49.917 seconds. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.615 seconds. +✔ Test trackerUsesReducedPalettes() passed after 0.615 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.615 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.615 seconds. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.615 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.615 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.615 seconds. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.615 seconds. +✔ Suite OriginalArtTests passed after 50.531 seconds. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.754 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.754 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.754 seconds. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.754 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.754 seconds. +✔ Test unawareEnemyDealsNoContactDamage() passed after 0.754 seconds. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.754 seconds. +◇ Test lockdownTintNeverBrightens() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test playerIntegrityComesFromContent() started. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +✔ Test lockdownTintNeverBrightens() passed after 1.743 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 1.743 seconds. +✔ Test playerIntegrityComesFromContent() passed after 1.743 seconds. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 21.730 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 1.743 seconds. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 1.743 seconds. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 1.743 seconds. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +◇ Test heatBlockDecodesFromTheBundledContract() started. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.052 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.052 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.052 seconds. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.052 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 0.052 seconds. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.052 seconds. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 0.052 seconds. +✔ Suite CourtClimaxTests passed after 53.092 seconds. +◇ Test snapshotNamesEveryGate() started. +◇ Test patrolIsOutsideHeat() started. +◇ Test heatBlockFailsClosed() started. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +✔ Test snapshotNamesEveryGate() passed after 0.060 seconds. +✔ Test patrolIsOutsideHeat() passed after 0.060 seconds. +✔ Test heatBlockFailsClosed() passed after 0.060 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 0.060 seconds. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.060 seconds. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.058 seconds. +◇ Test actorContrastValues() started. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test tutorialLockdownPreemptsCopy() started. +◇ Test awarenessIsDigested() started. +◇ Test encounterEN001WaveTotals() started. +✔ Test actorContrastValues() passed after 0.849 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 6.432 seconds. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.848 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.848 seconds. +✔ Test awarenessIsDigested() passed after 0.848 seconds. +✔ Test encounterEN001WaveTotals() passed after 0.848 seconds. +✔ Suite ReadabilityFinishTests passed after 54.002 seconds. +✔ Suite GrayscaleSystemsTests passed after 54.001 seconds. +◇ Test ghostStopsAtItsTerminalTick() started. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +✔ Test ghostStopsAtItsTerminalTick() passed after 4.292 seconds. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 4.292 seconds. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 4.292 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 4.292 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +◇ Test awarenessBlockFailsClosed() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 19.532 seconds. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 1.524 seconds. +✔ Test awarenessBlockFailsClosed() passed after 1.524 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 1.524 seconds. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.012 seconds. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.012 seconds. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.012 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.012 seconds. +✔ Suite ReleaseCandidateEvidenceTests passed after 59.833 seconds. +✔ Suite HeatReinforcementTests passed after 59.832 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.001 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.001 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.998 seconds. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.998 seconds. +✔ Suite AwarenessTests passed after 60.834 seconds. +✔ Suite ContractVectorTests passed after 60.834 seconds. +✔ Test ghostFadesAfterItsTerminalTick() passed after 3.970 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 7.535 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 1.454 seconds. +✔ Suite GhostRunTests passed after 71.256 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 50.427 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.016 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.224 seconds. +✔ Suite GateVerificationTests passed after 78.006 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 65.344 seconds. +✔ Suite PacingSegmentsTests passed after 88.527 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 131.875 seconds. +✔ Suite CameraFairnessTests passed after 131.878 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 151.913 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 6.494 seconds. +✔ Suite GameFeelTests passed after 209.696 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 240.440 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 244.513 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 277.085 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 45.970 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 286.413 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 255.236 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 288.062 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 329.557 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 115.222 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.026 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 3.980 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.111 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.018 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.115 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.010 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.005 seconds. +✔ Suite TransitPatrolTests passed after 427.881 seconds. +✔ Test run with 773 tests in 109 suites passed after 427.884 seconds. diff --git a/docs/review/player-contrast-encounter/replay.json b/docs/review/player-contrast-encounter/replay.json new file mode 100644 index 00000000..d1d952de --- /dev/null +++ b/docs/review/player-contrast-encounter/replay.json @@ -0,0 +1 @@ +{"seed":1,"contentVersion":"civic-seam-content-006","ticks":461,"replaySchemaVersion":"runtime-kernel-001","rulesetVersion":"ss-rules-008","digest":"3ef4396ad640181e63f716d717d117d262fd60d88480aa2f19e24f83d31d3a13","arenaVersion":"civic-seam-arena-004","commands":[{"d":false,"t":1,"x":32767,"y":0},{"d":false,"t":2,"x":32767,"y":0},{"d":false,"t":3,"x":32767,"y":0},{"d":false,"t":4,"x":32767,"y":0},{"d":false,"t":5,"x":32767,"y":0},{"d":false,"t":6,"x":32767,"y":0},{"d":false,"t":7,"x":32767,"y":0},{"d":false,"t":8,"x":32767,"y":0},{"d":false,"t":9,"x":32767,"y":0},{"d":false,"t":10,"x":32767,"y":0},{"d":false,"t":11,"x":32767,"y":0},{"d":false,"t":12,"x":32767,"y":0},{"d":false,"t":13,"x":32767,"y":0},{"d":false,"t":14,"x":32767,"y":0},{"d":false,"t":15,"x":32767,"y":0},{"d":false,"t":16,"x":32767,"y":0},{"d":false,"t":17,"x":32767,"y":0},{"d":false,"t":18,"x":32767,"y":0},{"d":false,"t":19,"x":32767,"y":0},{"d":false,"t":20,"x":32767,"y":0},{"d":false,"t":21,"x":32767,"y":0},{"d":false,"t":22,"x":32767,"y":0},{"d":false,"t":23,"x":32767,"y":0},{"d":false,"t":24,"x":32767,"y":0},{"d":false,"t":25,"x":32767,"y":0},{"t":26,"x":32767,"y":0,"d":false},{"t":27,"x":32767,"y":0,"d":false},{"t":28,"x":32767,"y":0,"d":false},{"t":29,"x":32767,"y":0,"d":false},{"t":30,"x":32767,"y":0,"d":false},{"t":31,"x":32767,"y":0,"d":false},{"t":32,"x":32767,"y":0,"d":false},{"t":33,"x":32767,"y":0,"d":false},{"t":34,"x":32767,"y":0,"d":false},{"t":35,"x":32767,"y":0,"d":false},{"t":36,"x":32767,"y":0,"d":false},{"t":37,"x":29308,"y":14654,"d":false},{"t":38,"x":29104,"y":15054,"d":false},{"t":39,"x":29071,"y":15117,"d":false},{"t":40,"x":29308,"y":14654,"d":false},{"t":41,"x":29308,"y":14654,"d":false},{"t":42,"x":26315,"y":19524,"d":false},{"t":43,"x":25865,"y":20117,"d":false},{"t":44,"x":25691,"y":20339,"d":false},{"t":45,"x":26064,"y":19858,"d":false},{"t":46,"x":25865,"y":20117,"d":false},{"t":47,"x":26423,"y":19377,"d":false},{"t":48,"x":24442,"y":21823,"d":false},{"t":49,"x":24599,"y":21647,"d":false},{"t":50,"x":24246,"y":22041,"d":false},{"t":51,"x":24419,"y":21849,"d":false},{"t":52,"x":24660,"y":21577,"d":false},{"t":53,"x":24077,"y":22225,"d":false},{"t":54,"x":23620,"y":22711,"d":false},{"t":55,"x":23679,"y":22649,"d":false},{"t":56,"x":23756,"y":22568,"d":false},{"t":57,"x":23170,"y":23170,"d":false},{"t":58,"x":23170,"y":23170,"d":false},{"t":59,"x":23170,"y":23170,"d":false},{"t":60,"x":24490,"y":21769,"d":false},{"t":61,"x":25172,"y":20977,"d":false},{"x":32321,"y":5387,"t":62,"d":false},{"x":32480,"y":4331,"t":63,"d":false},{"x":32238,"y":5862,"t":64,"d":false},{"x":7741,"y":-31840,"t":65,"d":false},{"x":8461,"y":-31656,"t":66,"d":false},{"x":9040,"y":-31495,"t":67,"d":false},{"x":9636,"y":31318,"t":68,"d":false},{"x":9429,"y":-31381,"t":69,"d":false},{"x":10141,"y":-31158,"t":70,"d":false},{"x":10668,"y":-30982,"t":71,"d":false},{"x":11361,"y":-30734,"t":72,"d":false},{"x":12094,"y":-30453,"t":73,"d":false},{"x":-4634,"y":32438,"t":74,"d":false},{"x":12395,"y":-30332,"t":75,"d":false},{"x":-5967,"y":32219,"t":76,"d":false},{"x":-5614,"y":32282,"t":77,"d":false},{"x":12144,"y":-30433,"t":78,"d":false},{"x":12820,"y":-30155,"t":79,"d":false},{"x":-8223,"y":31718,"t":80,"d":false},{"x":12943,"y":-30103,"t":81,"d":false},{"x":13526,"y":-29845,"t":82,"d":false},{"x":13995,"y":-29628,"t":83,"d":false},{"x":14594,"y":-29338,"t":84,"d":false},{"x":15136,"y":-29062,"t":85,"d":false},{"x":15626,"y":-28801,"t":86,"d":false},{"x":16123,"y":-28526,"t":87,"d":false},{"x":16627,"y":-28235,"t":88,"d":false},{"x":17253,"y":-27857,"t":89,"d":false},{"x":17768,"y":-27532,"t":90,"d":false},{"x":18176,"y":-27264,"t":91,"d":false},{"x":18890,"y":-26774,"t":92,"d":false},{"x":19312,"y":-26471,"t":93,"d":false},{"x":19848,"y":-26072,"t":94,"d":false},{"x":20365,"y":-25670,"t":95,"d":false},{"x":20909,"y":-25229,"t":96,"d":false},{"x":21540,"y":-24692,"t":97,"d":false},{"t":98,"x":22085,"y":-24206,"d":false},{"t":99,"x":22441,"y":-23877,"d":false},{"t":100,"x":-23170,"y":-23170,"d":false},{"t":101,"x":23079,"y":-23260,"d":false},{"t":102,"x":-23170,"y":-23170,"d":false},{"t":103,"x":23529,"y":-22805,"d":false},{"t":104,"x":-23170,"y":-23170,"d":false},{"t":105,"x":24056,"y":-22248,"d":false},{"t":106,"x":-23170,"y":-23170,"d":false},{"t":107,"x":-23170,"y":-23170,"d":false},{"t":108,"x":24400,"y":-21870,"d":false},{"t":109,"x":-23170,"y":-23170,"d":false},{"t":110,"x":24917,"y":-21280,"d":false},{"t":111,"x":-23170,"y":-23170,"d":false},{"t":112,"x":-23170,"y":-23170,"d":false},{"t":113,"x":25320,"y":-20799,"d":false},{"t":114,"x":-23170,"y":-23170,"d":false},{"t":115,"x":25658,"y":-20380,"d":false},{"t":116,"x":-23170,"y":-23170,"d":false},{"t":117,"x":-23170,"y":-23170,"d":false},{"t":118,"x":26039,"y":-19891,"d":false},{"t":119,"x":-23170,"y":-23170,"d":false},{"t":120,"x":26366,"y":-19456,"d":false},{"t":121,"x":-23170,"y":-23170,"d":false},{"t":122,"x":26749,"y":-18925,"d":false},{"t":123,"x":-23170,"y":-23170,"d":false},{"t":124,"x":-23170,"y":-23170,"d":false},{"t":125,"x":27038,"y":-18510,"d":false},{"t":126,"x":-23170,"y":-23170,"d":false},{"t":127,"x":27264,"y":-18176,"d":false},{"t":128,"x":-23170,"y":-23170,"d":false},{"t":129,"x":-23170,"y":-23170,"d":false},{"t":130,"x":27539,"y":-17756,"d":false},{"t":131,"x":-23170,"y":-23170,"d":false},{"t":132,"x":-23170,"y":-23170,"d":false},{"t":133,"x":27756,"y":-17415,"d":false},{"d":false,"x":-23170,"t":134,"y":-23170},{"d":false,"x":27968,"t":135,"y":-17072},{"d":false,"x":-23170,"t":136,"y":-23170},{"d":false,"x":-23170,"t":137,"y":-23170},{"d":false,"x":28177,"t":138,"y":-16725},{"d":false,"x":-23170,"t":139,"y":-23170},{"d":false,"x":-23170,"t":140,"y":-23170},{"d":false,"x":28427,"t":141,"y":-16296},{"d":false,"x":-23170,"t":142,"y":-23170},{"d":false,"x":28703,"t":143,"y":-15805},{"d":false,"x":-23170,"t":144,"y":-23170},{"d":false,"x":-23170,"t":145,"y":-23170},{"d":false,"x":28745,"t":146,"y":-15729},{"d":false,"x":-23170,"t":147,"y":-23170},{"d":false,"x":-23170,"t":148,"y":-23170},{"d":false,"x":28937,"t":149,"y":-15373},{"d":false,"x":-32767,"t":150,"y":0},{"d":false,"x":-32767,"t":151,"y":0},{"d":false,"x":-32767,"t":152,"y":0},{"d":false,"x":-32767,"t":153,"y":0},{"d":false,"x":-32767,"t":154,"y":0},{"d":false,"x":-32767,"t":155,"y":0},{"d":false,"x":-32767,"t":156,"y":0},{"d":false,"x":-32767,"t":157,"y":0},{"d":false,"x":-32767,"t":158,"y":0},{"d":false,"x":-32767,"t":159,"y":0},{"d":false,"x":-32767,"t":160,"y":0},{"d":false,"x":-32767,"t":161,"y":0},{"d":false,"x":27748,"t":162,"y":-17427},{"d":false,"x":27909,"t":163,"y":-17168},{"d":false,"x":28105,"t":164,"y":-16846},{"d":false,"x":28260,"t":165,"y":-16584},{"d":false,"x":28450,"t":166,"y":-16257},{"d":false,"x":-28599,"t":167,"y":15992},{"d":false,"x":-28408,"t":168,"y":16330},{"d":false,"x":-28269,"t":169,"y":16569},{"y":16871,"t":170,"x":-28090,"d":false},{"y":17173,"t":171,"x":-27906,"d":false},{"y":17413,"t":172,"x":-27757,"d":false},{"y":17754,"t":173,"x":-27540,"d":false},{"y":18095,"t":174,"x":-27317,"d":false},{"y":18337,"t":175,"x":-27156,"d":false},{"y":18638,"t":176,"x":-26950,"d":false},{"y":18879,"t":177,"x":-26782,"d":false},{"y":19162,"t":178,"x":-26580,"d":false},{"y":19504,"t":179,"x":-26330,"d":false},{"y":19802,"t":180,"x":-26107,"d":false},{"y":20086,"t":181,"x":-25889,"d":false},{"y":20327,"t":182,"x":-25700,"d":false},{"y":20612,"t":183,"x":-25472,"d":false},{"y":20852,"t":184,"x":-25276,"d":false},{"y":21137,"t":185,"x":-25038,"d":false},{"y":21377,"t":186,"x":-24834,"d":false},{"y":21661,"t":187,"x":-24586,"d":false},{"y":21996,"t":188,"x":-24287,"d":false},{"y":22233,"t":189,"x":-24070,"d":false},{"y":22515,"t":190,"x":-23807,"d":false},{"y":22796,"t":191,"x":-23537,"d":false},{"y":23030,"t":192,"x":-23309,"d":false},{"y":23309,"t":193,"x":-23029,"d":false},{"y":23587,"t":194,"x":-22745,"d":false},{"y":23864,"t":195,"x":-22454,"d":false},{"y":24095,"t":196,"x":-22206,"d":false},{"y":24370,"t":197,"x":-21904,"d":false},{"y":24642,"t":198,"x":-21597,"d":false},{"y":24831,"t":199,"x":-21380,"d":false},{"y":25101,"t":200,"x":-21062,"d":false},{"y":25369,"t":201,"x":-20739,"d":false},{"y":25596,"t":202,"x":-20458,"d":false},{"y":25812,"t":203,"x":-20184,"d":false},{"y":26037,"t":204,"x":-19893,"d":false},{"y":26261,"t":205,"x":-19597,"d":false},{"t":206,"x":-19185,"d":false,"y":26564},{"t":207,"x":-18877,"d":false,"y":26783},{"t":208,"x":-18610,"d":false,"y":26969},{"t":209,"x":-18313,"d":false,"y":27172},{"t":210,"x":-17921,"d":false,"y":27432},{"t":211,"x":-17592,"d":false,"y":27644},{"t":212,"x":-17184,"d":false,"y":27899},{"t":213,"x":-16918,"d":false,"y":28062},{"t":214,"x":-16618,"d":false,"y":28240},{"t":215,"x":-16147,"d":false,"y":28512},{"t":216,"x":-15913,"d":false,"y":28644},{"t":217,"x":-15473,"d":false,"y":28883},{"t":218,"x":-15150,"d":false,"y":29054},{"t":219,"x":-14779,"d":false,"y":29245},{"t":220,"x":-14403,"d":false,"y":29432},{"t":221,"x":-13937,"d":false,"y":29655},{"t":222,"x":-13631,"d":false,"y":29797},{"t":223,"x":-13239,"d":false,"y":29973},{"t":224,"x":-12843,"d":false,"y":30145},{"t":225,"x":-12390,"d":false,"y":30334},{"t":226,"x":-12114,"d":false,"y":30446},{"t":227,"x":-11647,"d":false,"y":30627},{"t":228,"x":-11233,"d":false,"y":30782},{"t":229,"x":-10786,"d":false,"y":30941},{"t":230,"x":-10493,"d":false,"y":31042},{"t":231,"x":-9967,"d":false,"y":31214},{"t":232,"x":-9598,"d":false,"y":31330},{"t":233,"x":-9192,"d":false,"y":31451},{"t":234,"x":-8678,"d":false,"y":31597},{"t":235,"x":-8394,"d":false,"y":31674},{"t":236,"x":-7974,"d":false,"y":31782},{"t":237,"x":-7442,"d":false,"y":31911},{"t":238,"x":-7036,"d":false,"y":32003},{"t":239,"x":-6601,"d":false,"y":32095},{"t":240,"x":-6073,"d":false,"y":32199},{"t":241,"x":-5629,"d":false,"y":32280},{"t":242,"d":false,"y":32352,"x":-5199},{"t":243,"d":false,"y":32419,"x":-4764},{"t":244,"d":false,"y":32481,"x":-4323},{"t":245,"d":false,"y":32551,"x":-3760},{"t":246,"d":false,"y":32600,"x":-3307},{"t":247,"d":false,"y":32644,"x":-2839},{"t":248,"d":false,"y":32680,"x":-2385},{"t":249,"d":false,"y":32711,"x":-1917},{"t":250,"d":false,"y":32735,"x":-1439},{"t":251,"d":false,"y":32753,"x":-967},{"t":252,"d":false,"y":32763,"x":-485},{"t":253,"d":false,"y":32767,"x":0},{"t":254,"d":false,"y":32763,"x":491},{"t":255,"d":false,"y":32752,"x":985},{"t":256,"d":false,"y":32733,"x":1488},{"t":257,"d":false,"y":32707,"x":1990},{"t":258,"d":false,"y":32670,"x":2513},{"t":259,"d":false,"y":32627,"x":3023},{"t":260,"d":false,"y":32576,"x":3535},{"t":261,"d":false,"y":32543,"x":3829},{"t":262,"d":false,"y":32477,"x":4347},{"t":263,"d":false,"y":32398,"x":4905},{"t":264,"d":false,"y":32314,"x":5429},{"t":265,"d":false,"y":32217,"x":5976},{"t":266,"d":false,"y":32131,"x":6426},{"t":267,"d":false,"y":32020,"x":6955},{"t":268,"d":false,"y":31894,"x":7512},{"t":269,"d":false,"y":31781,"x":7978},{"t":270,"d":false,"y":31634,"x":8542},{"t":271,"d":false,"y":31465,"x":9144},{"t":272,"d":false,"y":31333,"x":9589},{"t":273,"d":false,"y":31192,"x":10036},{"t":274,"d":false,"y":31016,"x":10567},{"t":275,"d":false,"y":30814,"x":11143},{"t":276,"d":false,"y":30647,"x":11596},{"t":277,"d":false,"y":30452,"x":12097},{"y":30246,"x":12603,"t":278,"d":false},{"y":29978,"x":13230,"t":279,"d":false},{"y":29772,"x":13687,"t":280,"d":false},{"y":29560,"x":14138,"t":281,"d":false},{"y":29250,"x":14768,"t":282,"d":false},{"y":29043,"x":15172,"t":283,"d":false},{"y":28738,"x":15741,"t":284,"d":false},{"y":28512,"x":16147,"t":285,"d":false},{"y":28175,"x":16729,"t":286,"d":false},{"y":27927,"x":17140,"t":287,"d":false},{"y":27534,"x":17764,"t":288,"d":false},{"y":27218,"x":18245,"t":289,"d":false},{"y":26935,"x":18659,"t":290,"d":false},{"y":26571,"x":19174,"t":291,"d":false},{"y":26158,"x":19734,"t":292,"d":false},{"y":25765,"x":20244,"t":293,"d":false},{"y":25436,"x":20657,"t":294,"d":false},{"y":25032,"x":21145,"t":295,"d":false},{"y":24679,"x":21555,"t":296,"d":false},{"y":24387,"x":21885,"t":297,"d":false},{"y":24089,"x":22212,"t":298,"d":false},{"y":23787,"x":22535,"t":299,"d":false},{"y":23556,"x":22776,"t":300,"d":false},{"y":23248,"x":23092,"t":301,"d":false},{"y":22935,"x":23403,"t":302,"d":false},{"y":22617,"x":23709,"t":303,"d":false},{"y":22127,"x":24167,"t":304,"d":false},{"y":21876,"x":24395,"t":305,"d":false},{"y":21544,"x":24689,"t":306,"d":false},{"y":21208,"x":24978,"t":307,"d":false},{"y":20946,"x":25198,"t":308,"d":false},{"y":20603,"x":25479,"t":309,"d":false},{"y":20335,"x":25694,"t":310,"d":false},{"y":20009,"x":25949,"t":311,"d":false},{"y":19735,"x":26157,"t":312,"d":false},{"y":19384,"x":26419,"t":313,"d":false},{"x":26695,"d":false,"t":314,"y":19001},{"x":26895,"d":false,"t":315,"y":18717},{"x":27191,"d":false,"t":316,"y":18284},{"x":27384,"d":false,"t":317,"y":17995},{"x":27573,"d":false,"t":318,"y":17703},{"x":27760,"d":false,"t":319,"y":17409},{"x":27987,"d":false,"t":320,"y":17042},{"x":28235,"d":false,"t":321,"y":16627},{"x":28411,"d":false,"t":322,"y":16325},{"x":28621,"d":false,"t":323,"y":15953},{"x":28790,"d":false,"t":324,"y":15647},{"x":29020,"d":false,"t":325,"y":15216},{"x":-12413,"d":false,"t":326,"y":30325},{"x":-11815,"d":false,"t":327,"y":30563},{"x":-11160,"d":false,"t":328,"y":30808},{"x":-10691,"d":false,"t":329,"y":30974},{"x":-10078,"d":false,"t":330,"y":31179},{"x":-9459,"d":false,"t":331,"y":31372},{"x":-8794,"d":false,"t":332,"y":31565},{"x":-8169,"d":false,"t":333,"y":31732},{"x":-7688,"d":false,"t":334,"y":31852},{"x":-7058,"d":false,"t":335,"y":31998},{"x":-6426,"d":false,"t":336,"y":32131},{"x":-5820,"d":false,"t":337,"y":32246},{"x":-5183,"d":false,"t":338,"y":32354},{"x":-4546,"d":false,"t":339,"y":32450},{"x":-3929,"d":false,"t":340,"y":32531},{"x":-3291,"d":false,"t":341,"y":32601},{"x":-2669,"d":false,"t":342,"y":32658},{"x":-2044,"d":false,"t":343,"y":32703},{"x":-1410,"d":false,"t":344,"y":32737},{"x":-784,"d":false,"t":345,"y":32758},{"x":-157,"d":false,"t":346,"y":32767},{"x":470,"d":false,"t":347,"y":32764},{"x":1097,"d":false,"t":348,"y":32749},{"x":1722,"d":false,"t":349,"y":32722},{"t":350,"d":false,"x":2346,"y":32683},{"t":351,"d":false,"x":2981,"y":32631},{"t":352,"d":false,"x":3601,"y":32568},{"t":353,"d":false,"x":4238,"y":32492},{"t":354,"d":false,"x":4853,"y":32406},{"t":355,"d":false,"x":5489,"y":32304},{"t":356,"d":false,"x":6095,"y":32195},{"t":357,"d":false,"x":6727,"y":32069},{"t":358,"d":false,"x":7357,"y":31931},{"t":359,"d":false,"x":7836,"y":31816},{"t":360,"d":false,"x":8462,"y":31655},{"t":361,"d":false,"x":9085,"y":31483},{"t":362,"d":false,"x":9702,"y":31298},{"t":363,"d":false,"x":10315,"y":31101},{"t":364,"d":false,"x":10922,"y":30893},{"t":365,"d":false,"x":11299,"y":30757},{"t":366,"d":false,"x":11710,"y":30603},{"t":367,"d":false,"x":31693,"y":8319},{"t":368,"d":false,"x":31794,"y":7924},{"t":369,"d":false,"x":31891,"y":7527},{"t":370,"d":false,"x":31982,"y":7129},{"t":371,"d":false,"x":32068,"y":6730},{"t":372,"d":false,"x":32150,"y":6331},{"t":373,"d":false,"x":32222,"y":5949},{"t":374,"d":false,"x":32294,"y":5547},{"t":375,"d":false,"x":32360,"y":5146},{"t":376,"d":false,"x":32420,"y":4759},{"t":377,"d":false,"x":32476,"y":4357},{"t":378,"d":false,"x":32526,"y":3967},{"t":379,"d":false,"x":32573,"y":3564},{"t":380,"d":false,"x":32613,"y":3172},{"t":381,"d":false,"x":32650,"y":2770},{"t":382,"d":false,"x":32681,"y":2377},{"t":383,"d":false,"x":32701,"y":2081},{"t":384,"d":false,"x":32724,"y":1681},{"t":385,"d":false,"x":32742,"y":1286},{"y":891,"d":false,"x":32755,"t":386},{"y":495,"d":false,"x":32763,"t":387},{"y":99,"d":false,"x":32767,"t":388},{"y":-297,"d":false,"x":32766,"t":389},{"y":-693,"d":false,"x":32760,"t":390},{"y":-1088,"d":false,"x":32749,"t":391},{"y":-1483,"d":false,"x":32733,"t":392},{"y":-1883,"d":false,"x":32713,"t":393},{"y":2292,"d":false,"x":-32687,"t":394},{"y":1901,"d":false,"x":-32712,"t":395},{"y":1511,"d":false,"x":-32732,"t":396},{"y":1112,"d":false,"x":-32748,"t":397},{"y":710,"d":false,"x":-32759,"t":398},{"y":306,"d":false,"x":-32766,"t":399},{"y":-102,"d":false,"x":-32767,"t":400},{"y":-515,"d":false,"x":-32763,"t":401},{"y":-930,"d":false,"x":-32754,"t":402},{"y":-1347,"d":false,"x":-32739,"t":403},{"y":-1771,"d":false,"x":-32719,"t":404},{"y":-2193,"d":false,"x":-32693,"t":405},{"y":-2521,"d":false,"x":-32670,"t":406},{"y":-2957,"d":false,"x":-32633,"t":407},{"y":-3386,"d":false,"x":-32592,"t":408},{"y":-3829,"d":false,"x":-32543,"t":409},{"y":-4169,"d":false,"x":-32501,"t":410},{"y":-4604,"d":false,"x":-32442,"t":411},{"y":-5072,"d":false,"x":-32372,"t":412},{"y":-5527,"d":false,"x":-32297,"t":413},{"y":-5986,"d":false,"x":-32216,"t":414},{"y":-6342,"d":false,"x":-32147,"t":415},{"y":-6806,"d":false,"x":-32052,"t":416},{"y":-7295,"d":false,"x":-31945,"t":417},{"y":-7660,"d":false,"x":-31859,"t":418},{"y":-8104,"d":false,"x":-31749,"t":419},{"y":-8603,"d":false,"x":-31618,"t":420},{"y":-8972,"d":false,"x":-31515,"t":421},{"d":false,"x":-31398,"t":422,"y":-9374},{"d":false,"x":-31273,"t":423,"y":-9780},{"d":false,"x":-31120,"t":424,"y":-10259},{"d":false,"x":-30958,"t":425,"y":-10738},{"d":false,"x":-30811,"t":426,"y":-11152},{"d":false,"x":-30657,"t":427,"y":-11569},{"d":false,"x":-30511,"t":428,"y":-11949},{"d":false,"x":-30284,"t":429,"y":-12511},{"d":false,"x":-8667,"t":430,"y":-31600},{"d":false,"x":-8168,"t":431,"y":-31733},{"d":false,"x":-7693,"t":432,"y":-31851},{"d":false,"x":-7180,"t":433,"y":-31971},{"d":false,"x":-6688,"t":434,"y":-32077},{"d":false,"x":-6188,"t":435,"y":-32177},{"d":false,"x":-5655,"t":436,"y":-32275},{"d":false,"x":-5118,"t":437,"y":-32365},{"d":false,"x":-4614,"t":438,"y":-32440},{"d":false,"x":-4202,"t":439,"y":-32496},{"d":false,"x":-3681,"t":440,"y":-32560},{"d":false,"x":-28650,"t":441,"y":-15901},{"d":false,"x":-28423,"t":442,"y":-16304},{"d":false,"x":-28059,"t":443,"y":-16922},{"d":false,"x":-27811,"t":444,"y":-17327},{"d":false,"x":-27399,"t":445,"y":-17971},{"d":false,"x":-27126,"t":446,"y":-18381},{"d":false,"x":-26774,"t":447,"y":-18890},{"d":false,"x":-26409,"t":448,"y":-19397},{"d":false,"x":-26050,"t":449,"y":-19876},{"d":false,"x":-25734,"t":450,"y":-20284},{"d":false,"x":-25347,"t":451,"y":-20766},{"d":false,"x":-25008,"t":452,"y":-21172},{"d":false,"x":-24592,"t":453,"y":-21654},{"d":false,"x":-24232,"t":454,"y":-22057},{"d":false,"x":-23787,"t":455,"y":-22535},{"d":false,"x":-23170,"t":456,"y":-23170},{"d":false,"x":-22535,"t":457,"y":-23787},{"y":-24309,"d":false,"t":458,"x":-21972},{"y":-24823,"d":false,"t":459,"x":-21389},{"y":-25464,"d":false,"t":460,"x":-20621}]} \ No newline at end of file diff --git a/docs/review/player-contrast-encounter/review.md b/docs/review/player-contrast-encounter/review.md new file mode 100644 index 00000000..f08773d8 --- /dev/null +++ b/docs/review/player-contrast-encounter/review.md @@ -0,0 +1,15 @@ +# BP-010 legal-encounter contrast diagnostic + +Status: REVIEWED static encounter; production admission incomplete. + +Runtime base 746ef65 plus the new test; specs c075b21e9e70828b032f7f319a712c179450b4f9. Normal seed-1 GameSession commands from DebugAutopilot run reached nearby enemies and projectiles without scenario seeding. GameScene then advanced normally and rendered its production scene/HUD/fog/fields. Only the Player texture was replaced with its registered painted neutral facing, at the same 64×64 logical size. Three paused captures compare the fine outline at 100%, 25% and 0%. This uses the current shipping projection, not the experimental shared-scene projection. + +Recorded state: tick 461, Player (264,592), south; two enemies, one projectile, no telegraphs. The full no-border screenshot visibly includes both enemies, a projectile and a Camera field. The Player remains distinguishable, including the grayscale Player crop. Existing enemy dashed outlines are preserved. This is an observer judgment about this frame, not a faction-recognition user study. No dense encounter, motion, hit confirmation or final source-animation acceptance follows. The legacy environment, camera and enemy art are visibly inconsistent with the benchmark and remain unfinished. + +The attachment serializes a GhostRecord with seed, identity, tick, digest and normal input commands. It is a review artifact, not a successful run saved to the user's best-run store. Decoding and replaying those commands reproduces the captured state's digest. This verifies legal provenance without overwriting authoritative state. The source scene uses normal GameScene settings; no controlled fog-density matrix was performed. Paused SpriteKit actions and a neutral Player pose are not animation evidence. + +Initial iOS build failed because PlayerCommand is not Encodable. Defect #125 was filed before repair. The test now uses the existing GhostRecord format and verifies replay digest; no assertion was weakened and production code was unchanged. Initial failure is retained in work/player-contrast-encounter/capture.xcresult. Corrected result Test-SSRuntime-2026.10.14_18-16-00--0700.xcresult: succeeded, 98 executions, one existing warning; new encounter test passed in 6.668 seconds. 91 Swift Testing tests passed in 36.679 seconds, plus five XCTest cases and two extra parameter executions. Simulator iPhone 17 Pro CACB3927-A76E-43A5-9ACA-C389EB38C0C3; viewport 704×326 points, original captures 2112×978 pixels. + +Core regression: 773 tests in 109 suites passed in 427.884 seconds. The app-test-only serialization correction does not change that core code. No physical-device testing occurred. + +Continue with multiple encounter phases, directional movement, damage versus steady-state treatment, controlled fog, occlusion and dense-scene evidence before selecting a production border policy. Do not call this sparse still the completed BP-010 matrix or the final benchmark scene. diff --git a/docs/review/player-contrast-ground/capture-summary.json b/docs/review/player-contrast-ground/capture-summary.json new file mode 100644 index 00000000..076ec6ab --- /dev/null +++ b/docs/review/player-contrast-ground/capture-summary.json @@ -0,0 +1,46 @@ +{ + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "97" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "compositionStatus": "Success", + "attachments": [ + "BP010-ground-asphalt-full-south", + "BP010-ground-asphalt-quarter-south", + "BP010-ground-asphalt-none-south", + "BP010-ground-service-full-south", + "BP010-ground-service-quarter-south", + "BP010-ground-service-none-south", + "BP010-ground-asphalt-full-east", + "BP010-ground-asphalt-quarter-east", + "BP010-ground-asphalt-none-east", + "BP010-ground-service-full-east", + "BP010-ground-service-quarter-east", + "BP010-ground-service-none-east", + "BP010-ground-asphalt-full-north", + "BP010-ground-asphalt-quarter-north", + "BP010-ground-asphalt-none-north", + "BP010-ground-service-full-north", + "BP010-ground-service-quarter-north", + "BP010-ground-service-none-north", + "BP010-ground-asphalt-full-west", + "BP010-ground-asphalt-quarter-west", + "BP010-ground-asphalt-none-west", + "BP010-ground-service-full-west", + "BP010-ground-service-quarter-west", + "BP010-ground-service-none-west" + ] +} diff --git a/docs/review/player-contrast-ground/core-tests.log b/docs/review/player-contrast-ground/core-tests.log new file mode 100644 index 00000000..382895dd --- /dev/null +++ b/docs/review/player-contrast-ground/core-tests.log @@ -0,0 +1,1840 @@ +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.49s) +Test Suite 'All tests' started at 2026-10-14 17:50:42.167. +Test Suite 'All tests' passed at 2026-10-14 17:50:42.169. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.002) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite PacingProbeTests started. +◇ Suite ClipMetadataTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite ProceduralVFXTests started. +◇ Suite OpeningTests started. +◇ Suite KernelVectorTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite EventCatalogTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite DeterminismTests started. +◇ Suite AmbientMotionTests started. +◇ Suite OriginalArtTests started. +◇ Suite RunCardTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite ContractVersionsTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite CameraPlacementTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite AwarenessTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite CaptainClipTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite TransitPatrolTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite SimulationClockTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite ReceiptArchiveTests started. +◇ Suite GhostSettingTests started. +◇ Suite ConeOrientationTests started. +◇ Suite CaptainCameraTests started. +◇ Suite ApproximateCueTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite ClipTimingTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite StealthTextureTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite HUDMappingTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite VisualLanguageTests started. +◇ Suite TamperFloorTests started. +◇ Suite CommitClipTests started. +◇ Suite AssetCatalogTests started. +◇ Suite DaemonClipTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite QuietApproachTests started. +◇ Suite GateVerificationTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite ReplayTests started. +◇ Suite MedalTests started. +◇ Suite GameFeelTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite DefectRegistryTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite CameraFollowTests started. +◇ Suite GhostRunTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite DamageOrderingTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite CameraHUDTests started. +◇ Suite CameraPresentationTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite ContractVectorTests started. +◇ Suite D021CeilingsTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite RunTelemetryTests started. +◇ Suite HUDPresentationTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite CourtClimaxTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite CombatCausalityTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite CameraFairnessTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite AudioProjectorTests started. +◇ Suite SilhouetteTests started. +◇ Suite DailyFlavourTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Suite ExposureFinalizationTests started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test currentIdentityIsCompatible() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test originalsAreAdmitted() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test sha256KnownVector() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test ghostIsOnByDefault() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test exactMigrationVectors() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test daemonHasClips() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 6.436 seconds. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 6.449 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 6.449 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 6.450 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 6.450 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 6.450 seconds. +✔ Test currentIdentityIsCompatible() passed after 6.449 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 6.449 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 6.450 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 6.449 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 6.450 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 6.450 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 6.450 seconds. +✔ Test sha256KnownVector() passed after 6.450 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 6.450 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 6.454 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 6.454 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 6.454 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 6.454 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 6.454 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 6.454 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 6.454 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 6.454 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 6.454 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 6.454 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 6.455 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 6.455 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 6.455 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 6.455 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 6.455 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 6.459 seconds. +✔ Test originalsAreAdmitted() passed after 6.459 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 6.459 seconds. +✔ Test ghostIsOnByDefault() passed after 6.459 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 6.459 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 6.459 seconds. +✔ Test exactMigrationVectors() passed after 6.459 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 6.459 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 6.459 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 6.459 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 6.459 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 6.459 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 6.459 seconds. +✔ Test anUnawareKillIsATakedown() passed after 6.459 seconds. +✔ Test mappedElementsScaleProportionally() passed after 6.459 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 6.459 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 6.459 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 6.459 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 6.459 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 6.459 seconds. +✔ Test daemonHasClips() passed after 6.459 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 6.459 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 6.459 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 6.459 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 6.459 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 6.461 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 6.461 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 6.461 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 6.461 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 6.461 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 6.461 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 6.461 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 6.461 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 6.461 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 6.461 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 6.461 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 6.461 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 6.461 seconds. +✔ Test aFreshRunStartsQuiet() passed after 6.461 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 6.461 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 6.461 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 6.461 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 6.461 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 6.460 seconds. +✔ Test attackStatesAreUnchanged() passed after 6.461 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 6.461 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 6.460 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 6.462 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 6.461 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 6.461 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 6.461 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 6.461 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 6.461 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 6.461 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 6.461 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 6.460 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 6.467 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 6.467 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 6.467 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 6.467 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 6.467 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 6.467 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 6.468 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 6.467 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 6.468 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 6.467 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 6.467 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 6.467 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 6.467 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 6.467 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 6.468 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 6.468 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 6.468 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 6.470 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 6.468 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 6.468 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 6.468 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 6.468 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 6.468 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 6.470 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 6.468 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 6.468 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 6.468 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 6.814 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 6.814 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 9.347 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 9.347 seconds. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 9.347 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 9.349 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 9.348 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 9.347 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 9.348 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 9.339 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 9.324 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 9.305 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test titleDetailNamesGradeAndFog() passed after 7.903 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 7.903 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 7.902 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 7.868 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 7.868 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 7.862 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 6.087 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 6.087 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 6.087 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 4.515 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 4.515 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 4.515 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 4.171 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 4.171 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 9.810 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 4.171 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 4.171 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 4.171 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 4.171 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Suite CombatFeedbackTests passed after 9.821 seconds. +✔ Suite ClipTimingTests passed after 9.821 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 9.821 seconds. +✔ Suite DefectRegistryTests passed after 9.821 seconds. +✔ Suite CameraFollowTests passed after 9.821 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 9.820 seconds. +✔ Suite ClipMetadataV2Tests passed after 9.820 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 4.180 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 9.816 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite DailyFlavourTests passed after 9.821 seconds. +✔ Suite CanonicalArenaZonesTests passed after 9.821 seconds. +✔ Suite ExposureFinalizationTests passed after 9.821 seconds. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test nodeAndCopyAgree() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test playingIsNotTerminal() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test identityMismatchIsRejected() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 4.287 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 4.287 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 4.287 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 4.287 seconds. +✔ Test unknownIdentityFailsClosed() passed after 4.287 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 4.287 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 4.287 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 4.297 seconds. +✔ Test nodeAndCopyAgree() passed after 4.297 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 4.297 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 4.297 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 14.118 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 14.118 seconds. +✔ Test aCompleteGroupIsBacked() passed after 4.297 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 4.297 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 4.297 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 4.297 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 4.297 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 4.294 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 4.294 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 4.297 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 4.294 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 4.298 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 4.298 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 4.298 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 14.120 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 4.298 seconds. +✔ Test familiesMapToDistinctAssets() passed after 4.298 seconds. +✔ Test playingIsNotTerminal() passed after 4.298 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 4.298 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 4.298 seconds. +✔ Test windowsMatchTheD090Table() passed after 4.298 seconds. +✔ Test captainArtIsAllOrNothing() passed after 4.298 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 4.298 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 4.298 seconds. +✔ Test seedIsDeterministicForADate() passed after 4.298 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 4.298 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 4.298 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 4.298 seconds. +✔ Test successRowsWithNoStoredBest() passed after 4.302 seconds. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 4.298 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 4.298 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 4.298 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 4.298 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 4.298 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 4.298 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 4.298 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 4.298 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 4.297 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 4.297 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 4.297 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 4.297 seconds. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 4.297 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 4.298 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 4.297 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 4.297 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 4.297 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 4.297 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 4.297 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 4.297 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 4.299 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 4.297 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 4.297 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 4.297 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 4.297 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 4.297 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 4.297 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 4.297 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 4.299 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 4.297 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 4.297 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 4.297 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 4.297 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 4.297 seconds. +✔ Test identityMismatchIsRejected() passed after 4.297 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 4.305 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 4.353 seconds. +✔ Test musicAssetIdsAreReachable() passed after 4.353 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 4.353 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 4.353 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 4.353 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 4.220 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 3.398 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 3.391 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 0.603 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 4.410 seconds. +✔ Suite ContractVersionsTests passed after 14.246 seconds. +✔ Suite ObjectiveProjectionTests passed after 14.246 seconds. +✔ Suite CameraMountSolidTests passed after 14.246 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 14.246 seconds. +✔ Suite SimulationClockTests passed after 14.246 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 4.417 seconds. +✔ Suite VisualLanguageTests passed after 14.246 seconds. +✔ Suite AssetCatalogTests passed after 14.246 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 4.415 seconds. +✔ Suite CivicSeamIdentityTests passed after 14.245 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 14.245 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.062 seconds. +✔ Suite SilhouetteTests passed after 14.245 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 14.245 seconds. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +✔ Suite ReceiptArchiveTests passed after 14.248 seconds. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test patrolSlipSearch() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test profileT406AggregateReportIsStable() started. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 3.824 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 8.241 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 3.824 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 3.824 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 3.824 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 3.824 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 3.828 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 3.828 seconds. +✔ Test groupsAreBackedIndependently() passed after 3.828 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 3.828 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 3.828 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 3.828 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 3.828 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 3.828 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 3.828 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 4.437 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 3.828 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 3.828 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 3.827 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 18.071 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 3.828 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 3.828 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 3.827 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 3.827 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 3.827 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 3.828 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 3.828 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 3.827 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 3.827 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 3.827 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 3.827 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 3.827 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 18.071 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 3.827 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 3.827 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 3.827 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 3.827 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 3.827 seconds. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 18.075 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 3.827 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 3.827 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 3.827 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 3.827 seconds. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 3.827 seconds. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 3.827 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 3.827 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 3.827 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 3.828 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 3.827 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 3.827 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 3.827 seconds. +✔ Test patrolSlipSearch() passed after 3.827 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 3.827 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 3.827 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 3.827 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 3.827 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 3.827 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 3.827 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 3.827 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 3.827 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 3.828 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 3.826 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 3.826 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 3.827 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 3.826 seconds. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 3.857 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 3.857 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 3.857 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 3.857 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 3.857 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 3.848 seconds. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 3.770 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 0.835 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 3.991 seconds. +✔ Suite EventCatalogTests passed after 18.241 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 3.989 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 3.992 seconds. +✔ Suite CameraHousingArtTests passed after 18.241 seconds. +✔ Suite ExpansionGateDecisionTests passed after 18.241 seconds. +✔ Suite CaptainClipTests passed after 18.241 seconds. +✔ Suite DeviceRunEvidenceTests passed after 18.242 seconds. +✔ Suite TerminalShareGeometryTests passed after 18.241 seconds. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 8.413 seconds. +✔ Suite PatrolSlipSearch passed after 18.242 seconds. +✔ Suite CameraPresentationTests passed after 18.241 seconds. +✔ Suite HUDPresentationTests passed after 18.241 seconds. +✔ Suite EnvironmentContractTests passed after 18.242 seconds. +✔ Suite MusicBedCoverageTests passed after 18.241 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.133 seconds. +✔ Suite ArenaAndSimulationTests passed after 18.241 seconds. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +✔ Test headingsAdvanceClockwise() passed after 0.003 seconds. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 2.225 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 2.392 seconds. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 2.225 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 2.225 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 2.225 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 2.229 seconds. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 2.229 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 2.229 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 2.229 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 2.229 seconds. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 2.229 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 2.229 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 2.229 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 2.228 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 2.229 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 2.228 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 2.228 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 2.228 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 6.222 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 2.228 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 2.228 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 2.228 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 2.228 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 2.228 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 6.222 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 2.228 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 2.228 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 2.228 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 2.228 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 2.228 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 2.228 seconds. +✔ Test lockdownOutranksExtraction() passed after 2.228 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 2.228 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 2.229 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 2.228 seconds. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +✔ Test ex014ItStaysLostAfterRecovery() passed after 2.228 seconds. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 2.228 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 2.228 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 2.228 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 6.225 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 2.228 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 2.228 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 2.228 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 2.228 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 2.228 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 2.228 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 2.228 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 2.228 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 2.228 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 2.228 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 2.228 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 2.228 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 2.228 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 2.228 seconds. +✔ Test audioCoverageIsMeasurable() passed after 2.279 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 2.279 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 2.008 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 2.877 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +DAILY-RUN-400 distinct=400 salted=0 +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 1.460 seconds. +✔ Suite TutorialCardDurationTests passed after 21.559 seconds. +✔ Test tamperedCommandIsRejected() passed after 3.312 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite GhostSettingTests passed after 21.559 seconds. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 1.086 seconds. +✔ Suite CaptainCameraTests passed after 21.559 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 3.314 seconds. +✔ Suite CameraHUDTests passed after 21.559 seconds. +✔ Suite D021CeilingsTests passed after 21.559 seconds. +✔ Suite AudioProjectorSmokeTests passed after 21.559 seconds. +✔ Suite ApproximateCueTests passed after 21.560 seconds. +✔ Suite CombatAuthorityReceiptTests passed after 21.559 seconds. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 1.037 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 1.122 seconds. +◇ Test anyTouchSkips() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 3.352 seconds. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +✔ Test anyTouchSkips() passed after 1.817 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 3.314 seconds. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 1.817 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 1.817 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 1.817 seconds. +◇ Test tamperedDigestIsRejected() started. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 1.818 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 1.818 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 1.818 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 1.819 seconds. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 1.819 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 1.819 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 1.819 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 1.819 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 1.819 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 1.819 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 1.819 seconds. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 1.819 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 1.819 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 1.817 seconds. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 1.817 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 1.820 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 5.172 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 1.817 seconds. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 1.817 seconds. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 2.944 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 1.817 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 1.817 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 1.817 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 1.816 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 1.816 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 1.817 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 1.816 seconds. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 1.816 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 1.816 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 1.816 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 1.816 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 1.816 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 1.816 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 1.816 seconds. +✔ Test exposureEX010SingleStateJumpEvent() passed after 1.815 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 1.815 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 1.815 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 5.172 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 1.815 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 1.815 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 1.815 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 1.815 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 1.815 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 9.170 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 1.407 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 1.506 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 0.341 seconds. +◇ Test correlatorCommitStaysAStateClip() started. +✔ Suite ReplayMatrixTests passed after 23.428 seconds. +✔ Suite AssetIntakeChecks passed after 23.426 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.010 seconds. +✔ Suite RunTelemetryTests passed after 23.427 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 23.427 seconds. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 1.827 seconds. +✔ Suite TutorialPreemptionTests passed after 23.427 seconds. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 0.010 seconds. +✔ Suite TamperFloorTests passed after 23.428 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.052 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test correlatorCommitStaysAStateClip() passed after 0.056 seconds. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test noTwoPhasesShareABed() started. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +✔ Suite ReplayTests passed after 23.479 seconds. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 0.653 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 0.653 seconds. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 0.652 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 0.652 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 0.652 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 0.715 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 2.591 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 0.715 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 0.715 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 0.715 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 0.715 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 0.715 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 0.715 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 0.715 seconds. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 0.714 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 0.714 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 0.714 seconds. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 0.714 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test noVisualAssetComesFromAnotherCity() passed after 0.719 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 0.718 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 2.597 seconds. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 0.718 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 24.193 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 0.718 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 0.718 seconds. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 0.718 seconds. +◇ Test labelFormat() started. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 0.718 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 0.718 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 0.718 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 0.718 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 0.718 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 0.718 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 0.718 seconds. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 0.718 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 0.718 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 0.718 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 0.718 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 0.718 seconds. +✔ Test noTwoPhasesShareABed() passed after 0.719 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 0.726 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 0.726 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test environmentArtMatchesItsSolid() passed after 0.727 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 0.718 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 0.653 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 0.433 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 0.110 seconds. +◇ Test informantContactHitShowsItsCommit() started. +✔ Suite DeterminismTests passed after 24.247 seconds. +✔ Suite ObjectiveGraphTests passed after 24.247 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 0.819 seconds. +✔ Suite ExtractionCountdownTests passed after 24.247 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.048 seconds. +✔ Suite CameraDestructionReceiptTests passed after 24.247 seconds. +✔ Test labelFormat() passed after 0.048 seconds. +✔ Suite QuietApproachPresentationTests passed after 24.247 seconds. +✔ Suite DamageOrderingTests passed after 24.247 seconds. +✔ Suite ArenaReachabilityTests passed after 24.247 seconds. +✔ Suite BossPhaseMusicTests passed after 24.247 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.092 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite AudioProjectorTests passed after 24.298 seconds. +✔ Test informantContactHitShowsItsCommit() passed after 0.085 seconds. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 2.740 seconds. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +✔ Suite HUDMappingTests passed after 24.300 seconds. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +✔ Suite DailyRunSeedTests passed after 24.305 seconds. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test playerPC003HalfMagnitude() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test groundTilesAreUniform() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 1.022 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 1.022 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 1.022 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 1.022 seconds. +✔ Test runtimeMountSolidsHaveNoArt() passed after 1.716 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 2.535 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 1.716 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 1.716 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 1.716 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 1.716 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 1.716 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 1.716 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 1.716 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 1.716 seconds. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 1.716 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 1.716 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 1.712 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 1.712 seconds. +✔ Test tamperedDigestIsRejected() passed after 2.601 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 1.712 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 1.712 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 1.712 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 1.712 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 1.712 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 1.712 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 1.716 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 1.712 seconds. +✔ Test playerPC003HalfMagnitude() passed after 1.712 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 1.712 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 1.712 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 1.725 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 1.725 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test groundTilesAreUniform() passed after 1.682 seconds. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 1.682 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 1.671 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 1.067 seconds. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +✔ Suite ProceduralVFXTests passed after 26.090 seconds. +✔ Suite DaemonClipTests passed after 26.089 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Suite TerminalPrecedenceTests passed after 26.090 seconds. +✔ Suite EnemyBehaviourTests passed after 26.090 seconds. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.073 seconds. +✔ Suite RunOutcomeTerminalTests passed after 26.090 seconds. +✔ Suite RuntimeBundleTests passed after 26.090 seconds. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.106 seconds. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 0.115 seconds. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +◇ Test peakDetectionIsTheHighestReached() started. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.102 seconds. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test tamperedTicksAreRejected() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +◇ Test coneSightNeedsAClearLine() started. +✔ Suite CombatCausalityTests passed after 26.192 seconds. +◇ Test theEliteIsFullyBacked() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 1.168 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 1.168 seconds. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 1.168 seconds. +✔ Test coverageCountsOnlyDeclaredIds() passed after 1.414 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 1.414 seconds. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 1.414 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 1.414 seconds. +✔ Suite ConeOrientationTests passed after 27.607 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 1.414 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 3.302 seconds. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 1.414 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 1.414 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 10.203 seconds. +✔ Test quietRestoreFailsClosed() passed after 1.414 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 1.414 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 1.414 seconds. +✔ Test theLatchIsInTheDigest() passed after 1.415 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 1.415 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 1.415 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 9.363 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 1.414 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 1.414 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 1.414 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 1.414 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 1.459 seconds. +✔ Test coneSightNeedsAClearLine() passed after 1.458 seconds. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 1.459 seconds. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 1.444 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 1.444 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 0.424 seconds. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +✔ Suite EnvironmentLibraryTests passed after 27.677 seconds. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.069 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 1.484 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 3.421 seconds. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test swiftIsUnderFiveThirty() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test bossSpawnsWithTenDpsContact() started. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 0.052 seconds. +◇ Test admittedAssetsReachTheBundleProjection() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test musicIsNotAnEffectCue() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 2.042 seconds. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +✔ Test theEliteIsFullyBacked() passed after 3.532 seconds. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 2.013 seconds. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 2.014 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 2.014 seconds. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 2.014 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 2.014 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Test tamperedTicksAreRejected() passed after 3.548 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 2.013 seconds. +◇ Test upgradeUP002SelectsSignalJammer() started. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 2.013 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 2.014 seconds. +✔ Test patrolBlockFailsClosed() passed after 2.013 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 2.013 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 2.013 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 2.013 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 2.013 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 2.014 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 2.013 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 2.013 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 2.013 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 2.012 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 2.055 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 2.055 seconds. +✔ Test rs024GhostIsExactlyTheLatch() passed after 2.048 seconds. +✔ Test musicIsNotAnEffectCue() passed after 2.021 seconds. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 2.021 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 2.021 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 29.792 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 0.705 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +✔ Suite CameraPlacementTests passed after 29.792 seconds. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.050 seconds. +✔ Suite StealthTextureTests passed after 29.792 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 0.050 seconds. +✔ Suite RunCardTests passed after 29.792 seconds. +◇ Test resetClearsCommits() started. +✔ Suite AudioDeliveryTests passed after 29.832 seconds. +✔ Test damageToANonEnemyIsIgnored() passed after 0.081 seconds. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +✔ Suite CompleteRunVectorTests passed after 29.872 seconds. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test sightRangeIsInclusive() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +◇ Test playerBlockFailsClosed() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test rs021AFailedRunEarnsNothing() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +✔ Test resetClearsCommits() passed after 0.081 seconds. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 1.362 seconds. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 1.362 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 1.363 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 1.363 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 1.363 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 1.363 seconds. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +✔ Test sightRangeIsInclusive() passed after 1.363 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 1.363 seconds. +✔ Test playerBlockFailsClosed() passed after 1.363 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 1.363 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 1.363 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 1.362 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 1.362 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 1.362 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 1.362 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 1.362 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 1.362 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 1.406 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 1.406 seconds. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 1.064 seconds. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 1.064 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 0.371 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite AmbientMotionTests passed after 31.351 seconds. +✔ Suite OpeningTests passed after 31.351 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 0.114 seconds. +✔ Suite ClipMetadataTests passed after 31.351 seconds. +✔ Suite SpawnFairnessTests passed after 31.350 seconds. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 1.477 seconds. +✔ Suite QuietApproachTests passed after 31.351 seconds. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.063 seconds. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test recordRoundTripsThroughJSON() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test palettesMatchTheirNamedLight() started. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 0.001 seconds. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +✔ Test reducedMotionIntroChangesNothingEither() passed after 7.674 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 0.627 seconds. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 0.627 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 8.491 seconds. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +✔ Test encounterEN020SolidBlocksSight() passed after 0.627 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 0.627 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 0.627 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 0.627 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 0.627 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 0.627 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 0.627 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 0.627 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 0.627 seconds. +✔ Suite CommitClipTests passed after 31.979 seconds. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 0.657 seconds. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 0.654 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 0.654 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 0.034 seconds. +◇ Test resetClearsEveryReaction() started. +✔ Suite ClipAlignmentTests passed after 32.086 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 0.107 seconds. +✔ Suite CombatContentFailClosedTests passed after 32.087 seconds. +✔ Suite PresentationSettingsTests passed after 32.086 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 4.398 seconds. +✔ Suite TutorialStateMachineTests passed after 32.125 seconds. +✔ Test resetClearsEveryReaction() passed after 0.118 seconds. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +✔ Suite PeakDensityProfilerTests passed after 32.128 seconds. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +✔ Suite ReactionClipTrackerTests passed after 32.753 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 1.392 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 1.273 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 2.048 seconds. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 1.273 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 1.273 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 2.049 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 1.273 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 1.273 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 1.273 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 1.273 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 1.279 seconds. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 1.167 seconds. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 0.653 seconds. +✔ Suite KernelVectorTests passed after 33.408 seconds. +✔ Suite LegacyAdmissionTests passed after 33.407 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 0.006 seconds. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test lockstepMatchesALiveReplay() started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 1.491 seconds. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 1.560 seconds. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 1.560 seconds. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 1.560 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 1.560 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 1.560 seconds. +✔ Test crossfadeTakesOneSecond() passed after 1.560 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 1.567 seconds. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 2.873 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 2.571 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 4.131 seconds. +✔ Suite CombatVisibilityTests passed after 37.539 seconds. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 3.935 seconds. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test allyAlertsNeverChain() started. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test aDirectionNeverBorrowsFromAnother() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +✔ Test patrolEN035MovingPastHoldsFire() passed after 0.712 seconds. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +✔ Test allyAlertsNeverChain() passed after 0.712 seconds. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.712 seconds. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.712 seconds. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.712 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.712 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 0.718 seconds. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 1.368 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 1.093 seconds. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 11.616 seconds. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 11.618 seconds. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +✔ Suite ExpansionGateReportTests passed after 39.345 seconds. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test coverageIsWhatTheRecordSays() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.210 seconds. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.210 seconds. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.210 seconds. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.210 seconds. +✔ Test bossPhaseBO002HealthBands() passed after 0.210 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.210 seconds. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 1.305 seconds. +◇ Test heatBlockDecodesFromTheBundledContract() started. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.204 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.019 seconds. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.011 seconds. +✔ Suite CameraDestructionOrderTests passed after 39.574 seconds. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.007 seconds. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +✔ Test damageTakesPrecedenceOverSight() passed after 0.007 seconds. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.007 seconds. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.007 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.007 seconds. +✔ Test trackerUsesReducedPalettes() passed after 0.007 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.007 seconds. +◇ Test heatBlockFailsClosed() started. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.010 seconds. +✔ Suite TargetingPriorityTests passed after 39.594 seconds. +✔ Test heatBlockFailsClosed() passed after 0.010 seconds. +◇ Test playerIntegrityComesFromContent() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +✔ Test playerIntegrityComesFromContent() passed after 0.193 seconds. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +✔ Test coverageIsWhatTheRecordSays() passed after 0.442 seconds. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.193 seconds. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.193 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.193 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.193 seconds. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.007 seconds. +✔ Suite OriginalArtTests passed after 39.796 seconds. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.007 seconds. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test lockdownTintNeverBrightens() started. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.092 seconds. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +✔ Test unawareEnemyDealsNoContactDamage() passed after 0.293 seconds. +✔ Test lockdownTintNeverBrightens() passed after 0.092 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 0.092 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 0.092 seconds. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.005 seconds. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.005 seconds. +◇ Test patrolIsOutsideHeat() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +✔ Test patrolIsOutsideHeat() passed after 0.025 seconds. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 0.025 seconds. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.025 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 0.025 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.025 seconds. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 0.017 seconds. +✔ Suite CourtClimaxTests passed after 39.935 seconds. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.017 seconds. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test snapshotNamesEveryGate() started. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 3.728 seconds. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 2.044 seconds. +✔ Test snapshotNamesEveryGate() passed after 2.044 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 2.044 seconds. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.007 seconds. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.007 seconds. +◇ Test ghostStopsAtItsTerminalTick() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test actorContrastValues() started. +◇ Test tutorialLockdownPreemptsCopy() started. +✔ Suite HeatReinforcementTests passed after 42.791 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 10.677 seconds. +◇ Test encounterEN001WaveTotals() started. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.815 seconds. +✔ Test actorContrastValues() passed after 0.815 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.815 seconds. +✔ Test encounterEN001WaveTotals() passed after 0.001 seconds. +✔ Suite ReadabilityFinishTests passed after 42.806 seconds. +✔ Suite GrayscaleSystemsTests passed after 42.805 seconds. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +◇ Test awarenessIsDigested() started. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.010 seconds. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +✔ Test awarenessIsDigested() passed after 0.010 seconds. +✔ Suite ReleaseCandidateEvidenceTests passed after 42.829 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 0.012 seconds. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.002 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.005 seconds. +◇ Test awarenessBlockFailsClosed() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +✔ Test awarenessBlockFailsClosed() passed after 0.023 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.001 seconds. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.004 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.001 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.001 seconds. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.002 seconds. +✔ Suite ContractVectorTests passed after 42.868 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.659 seconds. +✔ Suite AwarenessTests passed after 43.529 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 2.522 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test ghostFadesAfterItsTerminalTick() passed after 2.675 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 6.164 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 1.150 seconds. +✔ Suite GhostRunTests passed after 54.501 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 34.131 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.057 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.035 seconds. +✔ Suite GateVerificationTests passed after 58.703 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 45.931 seconds. +✔ Suite PacingSegmentsTests passed after 67.531 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 115.163 seconds. +✔ Suite CameraFairnessTests passed after 115.167 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 129.696 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 5.226 seconds. +✔ Suite GameFeelTests passed after 174.719 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 201.224 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 200.239 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 232.366 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 38.131 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 239.358 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 220.153 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 240.869 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 272.998 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 84.251 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.018 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 2.036 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.170 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.017 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.180 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.024 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.007 seconds. +✔ Suite TransitPatrolTests passed after 346.799 seconds. +✔ Test run with 773 tests in 109 suites passed after 346.800 seconds. diff --git a/docs/review/player-contrast-ground/review.md b/docs/review/player-contrast-ground/review.md new file mode 100644 index 00000000..1ceaebdd --- /dev/null +++ b/docs/review/player-contrast-ground/review.md @@ -0,0 +1,13 @@ +# BP-010 darker-ground comparison + +Status: REVIEWED static backdrop diagnostic; production selection remains open. + +Runtime base ee9331b plus the darker-ground capture test; spec c075b21e9e70828b032f7f319a712c179450b4f9. The fixture uses the existing projected shared scene at closer zoom, replacing only nodes whose texture is the review paving with bundled asphalt/service textures. Four facings × two surfaces × 100%/25%/0% Player border produces 24 original captures. Ground textures and border alpha are restored and asserted afterward. Root and Player texture remain fixed. No production rendering behavior changed. + +Simulator result Test-SSRuntime-2026.10.14_18-02-51--0700.xcresult completed successfully: 97 executions, one existing warning. The capture case passed in 40.442 seconds; 91 Swift Testing tests passed in 37.247 seconds, alongside four XCTest cases and two extra parameter executions. iPhone 17 Pro simulator CACB3927-A76E-43A5-9ACA-C389EB38C0C3, viewport 704×326 logical, 2112×978 captures. The prior core run for this unchanged capture edit passed 773 tests in 109 suites in 346.800 seconds; it was not restarted after unlock. + +Source hashes/dimensions match the catalog as recorded in surface-provenance.json. The colour asphalt plate and grayscale service plate were inspected across all facings. Without the added border, the hood, coat and boots remain distinguishable on these static backgrounds and the character integrates better with the painted scene. The 25% contour adds some separation but retains a light rim. This is an observer judgment from these captures, not user approval, a quantitative accessibility pass or proof of visibility during gameplay. + +The comparison plates crop actual renderer pixels without resizing. Grayscale is a derived Pillow luminance view, not an engine filter. This test substitutes surface materials in the existing composition; it does not move the player through real zone transitions or establish legal encounter state. Existing transition decorations remain in the scene. No enemy faction-discrimination claim follows from a scene without enemies. + +Keep no-border and 25% candidates for the remaining movement, fog, dark shadow, occlusion and legal dense-combat matrix. The quiet scene does not settle damage readability or faction identity. Source animation and environment registration gates also remain open. Normal play retains the current contrast contract. No physical-device test occurred. diff --git a/docs/review/player-contrast-ground/surface-provenance.json b/docs/review/player-contrast-ground/surface-provenance.json new file mode 100644 index 00000000..1943ccdb --- /dev/null +++ b/docs/review/player-contrast-ground/surface-provenance.json @@ -0,0 +1,51 @@ +{ + "status": "SOURCE_ONLY_NOT_RENDERER_READABILITY", + "note": "Pillow 8-bit grayscale summaries are not linear luminance, WCAG contrast or a readability pass.", + "surfaces": [ + { + "assetId": "env_ground_plaza", + "sha256": "098bc9dadddd45259cdf76bec9ba0c43835a1cbad14e689440c02780d2711484", + "dimensions": [ + 128, + 128 + ], + "alphaExtrema": [ + 255, + 255 + ], + "pillowLumaMean": 151.10614013671875, + "pillowLumaP10": 139, + "pillowLumaP90": 161 + }, + { + "assetId": "env_ground_asphalt", + "sha256": "96774980c0b90535f0edfa263b1f5c4841be0be9778be48feaec27e2fd7c1676", + "dimensions": [ + 128, + 128 + ], + "alphaExtrema": [ + 255, + 255 + ], + "pillowLumaMean": 94.00396728515625, + "pillowLumaP10": 87, + "pillowLumaP90": 101 + }, + { + "assetId": "env_ground_service", + "sha256": "eb2bd7750d064716dbf35acbdfad92e800fd52c3de66fffc4c235fa469bad5ef", + "dimensions": [ + 128, + 128 + ], + "alphaExtrema": [ + 255, + 255 + ], + "pillowLumaMean": 104.52667236328125, + "pillowLumaP10": 91, + "pillowLumaP90": 118 + } + ] +} diff --git a/docs/review/player-contrast/capture-summary.json b/docs/review/player-contrast/capture-summary.json new file mode 100644 index 00000000..a67b13c7 --- /dev/null +++ b/docs/review/player-contrast/capture-summary.json @@ -0,0 +1,54 @@ +{ + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "97" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "compositionStatus": "Success", + "attachments": [ + "BP007-outline-3x-south-unchanged-zoom", + "BP010-border-half-south-unchanged-zoom", + "BP010-border-quarter-south-unchanged-zoom", + "BP010-border-none-south-unchanged-zoom", + "BP007-outline-3x-east-unchanged-zoom", + "BP010-border-half-east-unchanged-zoom", + "BP010-border-quarter-east-unchanged-zoom", + "BP010-border-none-east-unchanged-zoom", + "BP007-outline-3x-north-unchanged-zoom", + "BP010-border-half-north-unchanged-zoom", + "BP010-border-quarter-north-unchanged-zoom", + "BP010-border-none-north-unchanged-zoom", + "BP007-outline-3x-west-unchanged-zoom", + "BP010-border-half-west-unchanged-zoom", + "BP010-border-quarter-west-unchanged-zoom", + "BP010-border-none-west-unchanged-zoom", + "BP007-outline-3x-south-equal-area-zoom", + "BP010-border-half-south-equal-area-zoom", + "BP010-border-quarter-south-equal-area-zoom", + "BP010-border-none-south-equal-area-zoom", + "BP007-outline-3x-east-equal-area-zoom", + "BP010-border-half-east-equal-area-zoom", + "BP010-border-quarter-east-equal-area-zoom", + "BP010-border-none-east-equal-area-zoom", + "BP007-outline-3x-north-equal-area-zoom", + "BP010-border-half-north-equal-area-zoom", + "BP010-border-quarter-north-equal-area-zoom", + "BP010-border-none-north-equal-area-zoom", + "BP007-outline-3x-west-equal-area-zoom", + "BP010-border-half-west-equal-area-zoom", + "BP010-border-quarter-west-equal-area-zoom", + "BP010-border-none-west-equal-area-zoom" + ] +} diff --git a/docs/review/player-contrast/core-tests.log b/docs/review/player-contrast/core-tests.log new file mode 100644 index 00000000..190f894e --- /dev/null +++ b/docs/review/player-contrast/core-tests.log @@ -0,0 +1,1866 @@ +Building for debugging... +[0/4] Write sources +[1/4] Copying contracts +[2/5] Copying SPEC_PIN.txt +[3/5] Write swift-version--58304C5D6DBC2206.txt +[5/7] Compiling SurveillanceCore ContractVersions.swift +[6/7] Emitting module SurveillanceCore +[7/14] Compiling SurveillanceCore ArenaManifest.swift +[8/14] Compiling SurveillanceCore ProceduralVFX.swift +[9/14] Compiling SurveillanceCore ReplayEnvelope.swift +[10/14] Compiling SurveillanceCore AssetCatalog.swift +[11/14] Compiling SurveillanceCore RunReceipt.swift +[12/14] Compiling SurveillanceCore ReleaseCandidateEvidence.swift +[13/14] Compiling SurveillanceCore Simulation.swift +[14/26] Compiling SurveillanceCoreTests ProceduralVFXTests.swift +[15/27] Compiling SurveillanceCoreTests ReplayTests.swift +[16/27] Compiling SurveillanceCoreTests ReadabilityFinishTests.swift +[17/27] Compiling SurveillanceCoreTests DailyRunGhostTests.swift +[18/27] Compiling SurveillanceCoreTests ReleaseCandidateEvidenceTests.swift +[19/27] Compiling SurveillanceCoreTests ClipMetadataTests.swift +[20/27] Compiling SurveillanceCoreTests ContractVersionsTests.swift +[21/27] Compiling SurveillanceCoreTests CameraPlacementTests.swift +[22/27] Compiling SurveillanceCoreTests AssetCatalogTests.swift +[23/27] Emitting module SurveillanceCoreTests +[24/27] Compiling SurveillanceCoreTests AmbientMotionTests.swift +[25/27] Compiling SurveillanceCoreTests ArenaAndSimulationTests.swift +[25/27] Write Objects.LinkFileList +[26/27] Linking SSRuntimePackageTests +Build complete! (15.66s) +Test Suite 'All tests' started at 2026-10-14 17:35:20.505. +Test Suite 'All tests' passed at 2026-10-14 17:35:20.508. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.002) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite CommitClipTests started. +◇ Suite OriginalArtTests started. +◇ Suite CameraFairnessTests started. +◇ Suite ReplayTests started. +◇ Suite StealthTextureTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite CameraFollowTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite DefectRegistryTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite GateVerificationTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite AwarenessTests started. +◇ Suite CameraHUDTests started. +◇ Suite ContractVersionsTests started. +◇ Suite CameraPlacementTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite SimulationClockTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite GameFeelTests started. +◇ Suite RunTelemetryTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite TamperFloorTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite CaptainClipTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite TransitPatrolTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite RunCardTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite ClipMetadataTests started. +◇ Suite CourtClimaxTests started. +◇ Suite AudioProjectorTests started. +◇ Suite MedalTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite SilhouetteTests started. +◇ Suite PacingProbeTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite ConeOrientationTests started. +◇ Suite AmbientMotionTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite D021CeilingsTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite DamageOrderingTests started. +◇ Suite CombatFeedbackTests started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite HUDMappingTests started. +◇ Suite DeterminismTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite QuietApproachTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite CameraPresentationTests started. +◇ Suite HUDPresentationTests started. +◇ Suite ApproximateCueTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite DailyFlavourTests started. +◇ Suite KernelVectorTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite CombatCausalityTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite ProceduralVFXTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite EventCatalogTests started. +◇ Suite ContractVectorTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite ClipTimingTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Suite GhostSettingTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite VisualLanguageTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite DaemonClipTests started. +◇ Suite CaptainCameraTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite OpeningTests started. +◇ Suite AudioDeliveryTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite GhostRunTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite AssetCatalogTests started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test originalsAreAdmitted() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test currentIdentityIsCompatible() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test sha256KnownVector() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test exactMigrationVectors() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test ghostIsOnByDefault() started. +◇ Test daemonHasClips() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 11.488 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 11.497 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 11.741 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 11.741 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 11.741 seconds. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 11.741 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 11.742 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 11.741 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 11.741 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 11.741 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 11.741 seconds. +✔ Test anUnawareKillIsATakedown() passed after 11.741 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 11.747 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 11.747 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 11.748 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 11.748 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 11.748 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 11.748 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 11.748 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 11.748 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 11.748 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 11.748 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 11.748 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 11.748 seconds. +✔ Test currentIdentityIsCompatible() passed after 11.748 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 11.748 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 11.748 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 11.749 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 11.748 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 11.749 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 11.750 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 11.750 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 11.750 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 11.750 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 11.751 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 11.750 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 11.750 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 11.750 seconds. +✔ Test originalsAreAdmitted() passed after 11.751 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 11.750 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 11.751 seconds. +✔ Test theRestartControlSitsInsideThePanel() passed after 11.751 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 11.751 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 11.751 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 11.751 seconds. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 11.751 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 11.751 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 11.751 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 11.751 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 11.752 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 11.751 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 11.751 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 11.751 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 11.751 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 11.751 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 11.751 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 11.752 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 11.751 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 11.752 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 11.751 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 11.751 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 11.752 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 11.751 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 11.751 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 11.751 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 11.751 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 11.751 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 11.751 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 11.751 seconds. +✔ Test sha256KnownVector() passed after 11.751 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 11.752 seconds. +✔ Test aFreshRunStartsQuiet() passed after 11.751 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 11.751 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 11.753 seconds. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 11.755 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 11.752 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 11.752 seconds. +✔ Test titleDetailNamesGradeAndFog() passed after 11.752 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 11.752 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 11.752 seconds. +✔ Test fogDensityScalesBeforeThinning() passed after 11.752 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 11.753 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 11.753 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 11.753 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 11.752 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 11.753 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 11.753 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 11.752 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 11.753 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 11.753 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 11.753 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 11.753 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 11.753 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 11.753 seconds. +✔ Test attackStatesAreUnchanged() passed after 11.753 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 11.753 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 11.753 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 11.753 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 11.753 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 11.753 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 11.753 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 11.753 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 11.754 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 11.753 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 11.753 seconds. +✔ Test mappedElementsScaleProportionally() passed after 11.754 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 11.753 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 11.753 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 11.753 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 11.753 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 11.755 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 11.753 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 11.753 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 11.753 seconds. +✔ Test exactMigrationVectors() passed after 11.753 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 11.829 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 11.829 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 11.833 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 11.829 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 11.829 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 11.829 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 11.845 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 11.845 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 11.845 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 11.845 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 11.845 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 11.846 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 11.892 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 12.329 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 12.330 seconds. +✔ Test captainIdsAreTheirOwnGroup() passed after 12.329 seconds. +✔ Test ghostIsOnByDefault() passed after 12.329 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 12.330 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 12.329 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 12.328 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 12.330 seconds. +✔ Test daemonHasClips() passed after 12.331 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 11.998 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 5.357 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 4.654 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 12.454 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 12.460 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 1.390 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 12.459 seconds. +✔ Suite CameraFollowTests passed after 12.464 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 12.464 seconds. +✔ Suite DefectRegistryTests passed after 12.464 seconds. +✔ Suite CanonicalArenaZonesTests passed after 12.464 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 1.345 seconds. +✔ Suite CombatFeedbackTests passed after 12.464 seconds. +✔ Suite DailyFlavourTests passed after 12.464 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 12.464 seconds. +✔ Suite ClipMetadataV2Tests passed after 12.464 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 12.458 seconds. +✔ Suite ClipTimingTests passed after 12.464 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite ExposureFinalizationTests passed after 12.465 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 12.467 seconds. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test seedIsDeterministicForADate() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test playingIsNotTerminal() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test nodeAndCopyAgree() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 5.729 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 5.729 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 5.729 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 5.729 seconds. +✔ Test aCompleteGroupIsBacked() passed after 5.729 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 5.729 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 7.077 seconds. +✔ Test seedIsDeterministicForADate() passed after 5.729 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 5.729 seconds. +✔ Test unknownIdentityFailsClosed() passed after 5.729 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 5.728 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 5.728 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 5.728 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 5.728 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 5.728 seconds. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 5.728 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 5.728 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 5.728 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 5.728 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 5.728 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 5.728 seconds. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 5.728 seconds. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 5.728 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 5.728 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 5.728 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 5.728 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 5.728 seconds. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 5.728 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 5.728 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 5.728 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 5.728 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 5.728 seconds. +✔ Test playingIsNotTerminal() passed after 5.728 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 5.728 seconds. +◇ Test stagedAssetsAreStillUnplaced() started. +✔ Test successRowsWithNoStoredBest() passed after 5.729 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 5.728 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 5.728 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 5.728 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 5.728 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 5.728 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 5.728 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 7.705 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 5.728 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 5.728 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 5.728 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 5.728 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 5.729 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 5.728 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 5.729 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 5.746 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 5.745 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 5.744 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 5.744 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 5.745 seconds. +✔ Test familiesMapToDistinctAssets() passed after 5.745 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 5.745 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 5.745 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 5.745 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 5.745 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 5.745 seconds. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 5.745 seconds. +✔ Test windowsMatchTheD090Table() passed after 5.745 seconds. +✔ Test nodeAndCopyAgree() passed after 5.745 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 5.746 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 5.745 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 5.745 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 18.210 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 5.745 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 5.746 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 6.284 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 6.287 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 6.287 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 6.287 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 6.314 seconds. +✔ Test captainArtIsAllOrNothing() passed after 6.314 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 6.315 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 6.315 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 6.315 seconds. +✔ Test environmentIdsAreRuntimeReachable() passed after 6.316 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 6.174 seconds. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test musicAssetIdsAreReachable() passed after 2.150 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 1.769 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 6.554 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 1.160 seconds. +✔ Suite ContractVersionsTests passed after 19.029 seconds. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 6.554 seconds. +✔ Suite CameraMountSolidTests passed after 19.029 seconds. +✔ Suite SimulationClockTests passed after 19.029 seconds. +✔ Suite SilhouetteTests passed after 19.029 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 0.830 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.811 seconds. +✔ Suite ObjectiveProjectionTests passed after 19.028 seconds. +✔ Suite VisualLanguageTests passed after 19.028 seconds. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Suite CivicSeamIdentityTests passed after 19.036 seconds. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 19.038 seconds. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 19.039 seconds. +◇ Test ghostRowShowsNewBestOrTheGap() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 19.036 seconds. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test identityMismatchIsRejected() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test patrolSlipSearch() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +✔ Test theCounterRestartsWithEachPhase() passed after 8.488 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 8.488 seconds. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 15.059 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 8.489 seconds. +✔ Test groupsAreBackedIndependently() passed after 8.489 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 15.055 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 8.489 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 8.489 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 8.489 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 8.489 seconds. +◇ Test theTwoTelegraphsAreDistinguishable() started. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 8.491 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 8.491 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 8.491 seconds. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 8.491 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 8.491 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 8.491 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 8.491 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 8.491 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 8.491 seconds. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 8.491 seconds. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 8.491 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 8.491 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 8.491 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 8.492 seconds. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 8.491 seconds. +✔ Suite DeviceRunEvidenceTests passed after 27.533 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 27.528 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 8.490 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 8.490 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 8.490 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 8.490 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 8.494 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 8.493 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 8.490 seconds. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 8.491 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 8.490 seconds. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 8.490 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 8.490 seconds. +✔ Test identityMismatchIsRejected() passed after 8.490 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 8.489 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 8.490 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 8.490 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 8.490 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 8.494 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 8.493 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 8.493 seconds. +✔ Test patrolSlipSearch() passed after 8.822 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 8.822 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 8.822 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 8.822 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 27.859 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 8.823 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 8.823 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 8.823 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 8.823 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 8.831 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test alertCausesAreThePublishedVocabulary() passed after 8.831 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 8.831 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 8.831 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 8.830 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 8.830 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 8.831 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 8.833 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 8.840 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 8.837 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 8.836 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 8.836 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 9.072 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 9.072 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 9.072 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 9.072 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 9.072 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 9.073 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 8.811 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 9.336 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 3.500 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 9.336 seconds. +✔ Suite ReceiptArchiveTests passed after 28.382 seconds. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 9.336 seconds. +✔ Suite AssetCatalogTests passed after 28.380 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Suite CameraPresentationTests passed after 28.382 seconds. +✔ Suite PatrolSlipSearch passed after 28.383 seconds. +✔ Suite HUDPresentationTests passed after 28.382 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.508 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 9.339 seconds. +✔ Suite EventCatalogTests passed after 28.382 seconds. +✔ Suite ArenaAndSimulationTests passed after 28.382 seconds. +✔ Suite CameraHousingArtTests passed after 28.382 seconds. +✔ Suite CaptainClipTests passed after 28.384 seconds. +✔ Suite TerminalShareGeometryTests passed after 28.382 seconds. +✔ Suite MusicBedCoverageTests passed after 28.383 seconds. +✔ Suite ExpansionGateDecisionTests passed after 28.383 seconds. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +✔ Suite EnvironmentContractTests passed after 28.386 seconds. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +✔ Test headingsAdvanceClockwise() passed after 0.008 seconds. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test profileT406AggregateReportIsStable() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +✔ Test safetyMessagesSurviveTheCap() passed after 3.600 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 3.600 seconds. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 3.600 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 3.600 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 3.600 seconds. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 7.608 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 3.600 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 3.600 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 3.600 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 3.600 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 4.459 seconds. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 3.600 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 3.600 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 19.514 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 31.983 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 3.600 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 3.600 seconds. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 3.600 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 12.942 seconds. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 3.600 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 3.600 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 3.600 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 3.600 seconds. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 3.598 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 3.597 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 3.597 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 3.597 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 3.597 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 3.597 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 3.597 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 3.597 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 3.597 seconds. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 3.597 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 3.597 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 3.597 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 3.597 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 3.597 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 3.601 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 3.597 seconds. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 3.597 seconds. +✔ Test lockdownOutranksExtraction() passed after 3.597 seconds. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 3.597 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 3.597 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 3.600 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 3.601 seconds. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 3.601 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 5.104 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 3.601 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 3.612 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 3.612 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 3.612 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 3.612 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 3.613 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 3.612 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 3.615 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 3.642 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 3.642 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 3.642 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 3.642 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 3.350 seconds. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 0.309 seconds. +✔ Suite TutorialCardDurationTests passed after 32.114 seconds. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Suite CombatAuthorityReceiptTests passed after 34.606 seconds. +✔ Suite AudioProjectorSmokeTests passed after 34.607 seconds. +✔ Suite D021CeilingsTests passed after 34.606 seconds. +✔ Suite CameraHUDTests passed after 34.607 seconds. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite RunTelemetryTests passed after 34.611 seconds. +✔ Suite AssetIntakeChecks passed after 34.610 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 2.616 seconds. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 2.606 seconds. +✔ Suite ApproximateCueTests passed after 34.610 seconds. +✔ Suite GhostSettingTests passed after 34.610 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 6.219 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Suite CaptainCameraTests passed after 34.636 seconds. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test correlatorCommitStaysAStateClip() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test telegraphsCarryTheirAudioCues() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 6.252 seconds. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test anyTouchSkips() started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +DAILY-RUN-400 distinct=400 salted=0 +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 8.820 seconds. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 2.572 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 2.584 seconds. +✔ Test correlatorCommitStaysAStateClip() passed after 2.585 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 2.585 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 2.585 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 2.585 seconds. +✔ Test the001SchemaIsNoLongerAccepted() passed after 2.585 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 2.585 seconds. +✔ Test audioCoverageIsMeasurable() passed after 2.585 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 2.585 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 2.585 seconds. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 2.585 seconds. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 2.585 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 2.585 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 6.265 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 2.585 seconds. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 2.585 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 2.585 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 8.837 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 2.585 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 2.585 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 2.585 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 2.585 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 2.585 seconds. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 2.585 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 2.585 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 2.585 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 2.585 seconds. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 8.834 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 2.585 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 8.838 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 2.586 seconds. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 2.585 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 2.585 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 2.585 seconds. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 2.585 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 2.585 seconds. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 2.585 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 2.596 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 2.596 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test everyActorSpriteIsSizeChecked() passed after 2.599 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 2.598 seconds. +✔ Test exposureEX010SingleStateJumpEvent() passed after 2.598 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 2.598 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 2.598 seconds. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 2.598 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 2.598 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 2.598 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 2.598 seconds. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test failedRunNeverShowsNewBest() started. +✔ Test anyTouchSkips() passed after 2.428 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 2.624 seconds. +✔ Suite TerminalSurfaceGeometryTests passed after 37.290 seconds. +✔ Suite TamperFloorTests passed after 37.291 seconds. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +✔ Suite ReplayMatrixTests passed after 37.291 seconds. +✔ Suite TutorialPreemptionTests passed after 37.290 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.053 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.052 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 0.050 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite ReplayTests passed after 37.541 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test informantContactHitShowsItsCommit() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 0.254 seconds. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test noTwoPhasesShareABed() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 2.342 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 2.342 seconds. +✔ Test informantContactHitShowsItsCommit() passed after 2.342 seconds. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 2.342 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 2.342 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 5.242 seconds. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 2.342 seconds. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 22.025 seconds. +✔ Test tamperedCommandIsRejected() passed after 5.244 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 2.343 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 2.342 seconds. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 2.342 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 2.342 seconds. +✔ Test spawnRuleCoversEveryCause() passed after 2.342 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 2.342 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 2.342 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 2.341 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 2.341 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 2.341 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 2.341 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 2.339 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 2.339 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 2.343 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 2.339 seconds. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 2.339 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 2.339 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 2.339 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 2.339 seconds. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 2.339 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 2.339 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 2.339 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 2.339 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 2.339 seconds. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 2.338 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 2.338 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 2.338 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test acceptedOriginalAudioIsPlayable() passed after 2.344 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 2.338 seconds. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 2.338 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 2.338 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 2.338 seconds. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 2.340 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 2.338 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 2.339 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 2.338 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 1.971 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite ObjectiveGraphTests passed after 39.977 seconds. +✔ Suite AudioProjectorTests passed after 39.977 seconds. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +✔ Suite DamageOrderingTests passed after 39.977 seconds. +✔ Suite CameraDestructionReceiptTests passed after 39.977 seconds. +✔ Suite DeterminismTests passed after 39.977 seconds. +✔ Suite QuietApproachPresentationTests passed after 39.977 seconds. +✔ Suite ArenaReachabilityTests passed after 39.977 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 2.430 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.091 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.101 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 2.485 seconds. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test tamperedDigestIsRejected() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 5.421 seconds. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 0.118 seconds. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test enemyEN010StandardDeathDropsNothing() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test labelFormat() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +✔ Suite HUDMappingTests passed after 40.029 seconds. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +◇ Test playerPC003HalfMagnitude() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test groundTilesAreUniform() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 5.121 seconds. +✔ Test runtimeMountSolidsHaveNoArt() passed after 5.121 seconds. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 5.121 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 5.170 seconds. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 5.128 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 5.128 seconds. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 5.128 seconds. +✔ Test noTwoPhasesShareABed() passed after 7.607 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 5.128 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 5.127 seconds. +✔ Test tamperedDigestIsRejected() passed after 5.127 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 5.127 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 5.127 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 5.127 seconds. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 5.127 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 5.127 seconds. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 5.127 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 5.127 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 5.127 seconds. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 5.127 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 5.126 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 5.126 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 5.126 seconds. +✔ Test labelFormat() passed after 5.126 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 5.126 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 5.126 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 5.126 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 5.126 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 5.126 seconds. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 5.126 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 5.126 seconds. +✔ Test playerPC003HalfMagnitude() passed after 5.126 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 5.126 seconds. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 5.123 seconds. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 5.123 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 5.123 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 5.128 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 5.123 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 5.012 seconds. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Suite BossPhaseMusicTests passed after 45.254 seconds. +✔ Suite RuntimeBundleTests passed after 45.255 seconds. +✔ Suite DaemonClipTests passed after 45.253 seconds. +✔ Suite TerminalPrecedenceTests passed after 45.255 seconds. +✔ Suite RunOutcomeTerminalTests passed after 45.256 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +◇ Test peakDetectionIsTheHighestReached() started. +✔ Suite EnemyBehaviourTests passed after 45.256 seconds. +✔ Suite DailyRunSeedTests passed after 45.256 seconds. +✔ Suite ExtractionCountdownTests passed after 45.254 seconds. +✔ Suite ProceduralVFXTests passed after 45.255 seconds. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.099 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.161 seconds. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +◇ Test tamperedTicksAreRejected() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.147 seconds. +◇ Test blackoutNeedsNetworkBlackout() started. +✔ Test peakDetectionIsTheHighestReached() passed after 0.147 seconds. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test theLatchIsInTheDigest() started. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test admittedAssetsReachTheBundleProjection() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test narrowTailoringProjectsThreeLanes() started. +✔ Suite CombatCausalityTests passed after 45.425 seconds. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 4.423 seconds. +✔ Test coverageCountsOnlyDeclaredIds() passed after 4.423 seconds. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 4.423 seconds. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 4.423 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 4.475 seconds. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 4.475 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 4.475 seconds. +✔ Test groundTilesAreUniform() passed after 9.845 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 21.485 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 4.475 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 4.475 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 4.475 seconds. +✔ Suite ConeOrientationTests passed after 49.877 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 4.475 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 4.475 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 15.239 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 4.475 seconds. +✔ Test theLatchIsInTheDigest() passed after 4.471 seconds. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 4.471 seconds. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 4.471 seconds. +✔ Test quietRestoreFailsClosed() passed after 4.471 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 4.476 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 4.471 seconds. +✔ Test coneSightNeedsAClearLine() passed after 4.471 seconds. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 4.470 seconds. +✔ Test tamperedTicksAreRejected() passed after 4.476 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 4.470 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 4.476 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 4.470 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 3.594 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Suite EnvironmentLibraryTests passed after 50.081 seconds. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.568 seconds. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test resetClearsCommits() started. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test sightRangeIsInclusive() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test swiftIsUnderFiveThirty() started. +✔ Test profileT406AggregateReportIsStable() passed after 22.256 seconds. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +◇ Test bossSpawnsWithTenDpsContact() started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 5.247 seconds. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 5.243 seconds. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 2.108 seconds. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 7.600 seconds. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 2.108 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 2.227 seconds. +✔ Test resetClearsCommits() passed after 2.227 seconds. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 2.227 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 2.227 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 7.468 seconds. +✔ Test sightRangeIsInclusive() passed after 2.227 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 2.227 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 2.227 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 2.227 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 2.227 seconds. +✔ Test theEliteIsFullyBacked() passed after 2.228 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 2.227 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 52.878 seconds. +✔ Test rs024GhostIsExactlyTheLatch() passed after 2.226 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 2.225 seconds. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 2.225 seconds. +✔ Test patrolBlockFailsClosed() passed after 2.225 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 2.225 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 2.225 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 2.226 seconds. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 2.226 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 2.226 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 2.226 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 2.787 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 2.226 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 2.226 seconds. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Suite StealthTextureTests passed after 52.880 seconds. +✔ Suite CameraPlacementTests passed after 52.879 seconds. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +✔ Suite RunCardTests passed after 52.879 seconds. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.698 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test rs021AFailedRunEarnsNothing() started. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 2.882 seconds. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +◇ Test playerBlockFailsClosed() started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 0.699 seconds. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test recordRoundTripsThroughJSON() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +✔ Suite CompleteRunVectorTests passed after 55.732 seconds. +✔ Test damageToANonEnemyIsIgnored() passed after 2.154 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 2.154 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 2.155 seconds. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 2.155 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 2.155 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 2.155 seconds. +✔ Test encounterEN020SolidBlocksSight() passed after 2.155 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 2.155 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 2.155 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 2.155 seconds. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 2.155 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 2.155 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 2.155 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 2.155 seconds. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 2.155 seconds. +✔ Test playerBlockFailsClosed() passed after 2.154 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 2.154 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 2.154 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 2.155 seconds. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 2.154 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 15.707 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 2.154 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 2.155 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 2.154 seconds. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite SpawnFairnessTests passed after 56.159 seconds. +✔ Suite CommitClipTests passed after 56.160 seconds. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 1.961 seconds. +✔ Suite QuietApproachTests passed after 56.159 seconds. +✔ Suite AmbientMotionTests passed after 56.159 seconds. +◇ Test musicIsNotAnEffectCue() started. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 0.002 seconds. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +✔ Suite ClipMetadataTests passed after 56.162 seconds. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +✔ Test musicIsNotAnEffectCue() passed after 0.002 seconds. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 1.954 seconds. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 1.968 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 1.968 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 1.968 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 1.968 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 1.968 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 1.968 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 1.968 seconds. +✔ Suite OpeningTests passed after 58.128 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 1.968 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 1.968 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 1.968 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 1.968 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 1.968 seconds. +✔ Suite AudioDeliveryTests passed after 58.129 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 1.968 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 4.551 seconds. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 1.968 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 1.968 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 1.968 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 1.968 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 1.968 seconds. +✔ Suite ClipAlignmentTests passed after 58.132 seconds. +✔ Suite LegacyAdmissionTests passed after 58.133 seconds. +✔ Suite PresentationSettingsTests passed after 58.132 seconds. +✔ Suite TutorialStateMachineTests passed after 58.131 seconds. +✔ Suite CombatContentFailClosedTests passed after 58.131 seconds. +◇ Test resetClearsEveryReaction() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test lockstepMatchesALiveReplay() started. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +✔ Test resetClearsEveryReaction() passed after 3.522 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 3.523 seconds. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 3.523 seconds. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 3.523 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 8.776 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 3.523 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 3.523 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 3.523 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 3.523 seconds. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 3.523 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 3.523 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 3.523 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 3.523 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 3.452 seconds. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite ReactionClipTrackerTests passed after 64.496 seconds. +✔ Suite PeakDensityProfilerTests passed after 64.496 seconds. +✔ Suite KernelVectorTests passed after 64.497 seconds. +✔ Test lockstepMatchesALiveReplay() passed after 6.364 seconds. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test allyAlertsNeverChain() started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 1.466 seconds. +✔ Test allyAlertsNeverChain() passed after 1.466 seconds. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 1.466 seconds. +✔ Test crossfadeTakesOneSecond() passed after 1.466 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 1.466 seconds. +✔ Test hudUI006ExtractionSecondsCeil() passed after 1.466 seconds. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 1.466 seconds. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 1.466 seconds. +✔ Test patrolEN035MovingPastHoldsFire() passed after 1.466 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 1.466 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 17.046 seconds. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 3.197 seconds. +✔ Suite CombatVisibilityTests passed after 67.695 seconds. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +✔ Suite ExpansionGateReportTests passed after 67.695 seconds. +◇ Test aDirectionNeverBorrowsFromAnother() started. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.513 seconds. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.513 seconds. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.513 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.513 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 0.513 seconds. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.513 seconds. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 0.513 seconds. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.513 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.513 seconds. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 23.060 seconds. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test coverageIsWhatTheRecordSays() started. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.073 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.073 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.073 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.073 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.073 seconds. +✔ Test bossPhaseBO002HealthBands() passed after 0.073 seconds. +◇ Test heatBlockDecodesFromTheBundledContract() started. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.332 seconds. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.073 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.073 seconds. +✔ Suite CameraDestructionOrderTests passed after 68.545 seconds. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.002 seconds. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test playerIntegrityComesFromContent() started. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.445 seconds. +✔ Test unawareEnemyDealsNoContactDamage() passed after 0.445 seconds. +✔ Test trackerUsesReducedPalettes() passed after 0.445 seconds. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.445 seconds. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.445 seconds. +◇ Test heatBlockFailsClosed() started. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.445 seconds. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.445 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.522 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.447 seconds. +✔ Suite TargetingPriorityTests passed after 68.992 seconds. +✔ Suite OriginalArtTests passed after 68.994 seconds. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +✔ Test heatBlockFailsClosed() passed after 0.014 seconds. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 0.011 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.011 seconds. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.011 seconds. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.011 seconds. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.011 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.014 seconds. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test lockdownTintNeverBrightens() started. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.026 seconds. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.026 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 0.026 seconds. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.026 seconds. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 0.026 seconds. +◇ Test patrolIsOutsideHeat() started. +✔ Test lockdownTintNeverBrightens() passed after 0.026 seconds. +✔ Test patrolIsOutsideHeat() passed after 0.009 seconds. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.044 seconds. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 0.044 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.044 seconds. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 0.044 seconds. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 0.044 seconds. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.044 seconds. +✔ Suite CourtClimaxTests passed after 69.130 seconds. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.136 seconds. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +◇ Test awarenessIsDigested() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +◇ Test snapshotNamesEveryGate() started. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.034 seconds. +✔ Test awarenessIsDigested() passed after 0.034 seconds. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.034 seconds. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 0.034 seconds. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +✔ Test snapshotNamesEveryGate() passed after 0.034 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 5.164 seconds. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test encounterEN001WaveTotals() started. +◇ Test tutorialLockdownPreemptsCopy() started. +◇ Test actorContrastValues() started. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.002 seconds. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.002 seconds. +✔ Test encounterEN001WaveTotals() passed after 0.002 seconds. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.002 seconds. +◇ Test ghostStopsAtItsTerminalTick() started. +✔ Test actorContrastValues() passed after 0.002 seconds. +✔ Suite HeatReinforcementTests passed after 72.530 seconds. +✔ Suite GrayscaleSystemsTests passed after 72.529 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 16.367 seconds. +✔ Suite ReadabilityFinishTests passed after 72.528 seconds. +◇ Test awarenessBlockFailsClosed() started. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +✔ Test awarenessBlockFailsClosed() passed after 0.044 seconds. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 0.044 seconds. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.001 seconds. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +✔ Suite ReleaseCandidateEvidenceTests passed after 72.576 seconds. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.011 seconds. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.011 seconds. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +◇ Test bossBO005AndBO006ObservationRounding() started. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.001 seconds. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.001 seconds. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.836 seconds. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.836 seconds. +✔ Suite AwarenessTests passed after 73.427 seconds. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.005 seconds. +✔ Suite ContractVectorTests passed after 73.430 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 3.256 seconds. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test ghostFadesAfterItsTerminalTick() passed after 3.316 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 7.727 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 2.130 seconds. +✔ Suite GhostRunTests passed after 87.561 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 54.025 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.018 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.473 seconds. +✔ Suite GateVerificationTests passed after 93.060 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 76.483 seconds. +✔ Suite PacingSegmentsTests passed after 111.123 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 175.074 seconds. +✔ Suite CameraFairnessTests passed after 175.078 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 179.048 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 6.802 seconds. +✔ Suite GameFeelTests passed after 255.017 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 286.934 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 274.173 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 324.824 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 46.217 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 333.158 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 287.496 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 318.881 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 377.016 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 106.542 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.017 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 1.692 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.118 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.017 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.120 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.011 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.005 seconds. +✔ Suite TransitPatrolTests passed after 465.126 seconds. +✔ Test run with 773 tests in 109 suites passed after 465.129 seconds. diff --git a/docs/review/player-contrast/parity.log b/docs/review/player-contrast/parity.log new file mode 100644 index 00000000..0cb4fd5e --- /dev/null +++ b/docs/review/player-contrast/parity.log @@ -0,0 +1,2 @@ +parity: pin is c075b21e9e70828b032f7f319a712c179450b4f9 +parity: OK — every bundled contract and fixture byte-matches SS-specs@c075b21e9e70828b032f7f319a712c179450b4f9 diff --git a/docs/review/player-contrast/review.md b/docs/review/player-contrast/review.md new file mode 100644 index 00000000..0923055e --- /dev/null +++ b/docs/review/player-contrast/review.md @@ -0,0 +1,25 @@ +# Painted Player contrast comparison — BP-010 + +Status: REVIEWED quiet-scene diagnostic; production selection remains open. + +Runtime adopts specification c075b21e9e70828b032f7f319a712c179450b4f9 in all four pin locations. Exact local parity passes for every bundled contract and fixture. Gameplay versions, source art, active clip delivery and normal rendering remain unchanged. Runtime base b693cad plus the pin/capture change produces this review. + +## Method + +The existing shared-scene XCTest captures all four painted neutral facings at both existing projection zooms. Each pair holds texture, root, anchor, HUD, backdrop and source shadow fixed. The finer 3× outline is the 100% control. Additional 50%, 25% and 0% values change only the Player outline node's alpha, inside a scoped block that restores it even if capture throws. The test asserts unchanged Player root/texture and other child-node opacities, then verifies restoration. No production opacity control, user setting or enemy contrast change was introduced. + +Result Test-SSRuntime-2026.10.14_17-35-35--0700.xcresult: succeeded, 97 test executions, one pre-existing warning. This includes 91 Swift Testing tests and four XCTest cases with two additional parameter executions. Capture test passed in 44.864 seconds. Simulator: iPhone 17 Pro, CACB3927-A76E-43A5-9ACA-C389EB38C0C3. Viewport 704×326 logical, captures 2112×978 pixels. The static composition is the existing review snapshot; it is not a legal encounter or a performance benchmark. + +Thirty-two original captures are in renderer/. Comparison plates crop original pixels without resizing; derived grayscale uses Pillow luminance conversion. South half-scale images are Lanczos resizes of the full scene. These derived views are review aids, not new engine captures. The source/export provenance is unchanged from the painted-player and finer-outline reviews. + +## Observations + +The closer colour plate, unchanged-zoom grayscale plate and full closer south/no-border scene were inspected. On this pale paving, all four neutral silhouettes remain distinguishable without the added border. Removing it better integrates the hood/coat/boots with the painted style. At 25%, the border is less dominant but still adds a light rim; at 100%, it clearly reads as a separate graphic treatment. These are visual judgments on this backdrop, not user acceptance or a measured visibility score. + +No claim of complete grounding follows: the existing broad shadow and registered still poses do not demonstrate planted-foot contact. The building, paving and cropped Camera in the closer view remain unresolved benchmark composition issues. The no-border result is a promising comparison candidate, not an admitted art family. + +## Remaining acceptance + +BP-010 still requires dark asphalt, building shadow, busy props, fog, movement/reversal, damage versus steady-state cues, legal dense combat, Camera fields, occlusion and Reduced Motion evidence. There are no enemies in these diagnostic views, so grayscale here cannot prove faction discrimination. Half-scale derivatives exist but have not received a complete observer review. No optional accessibility mode or context-sensitive outline has been designed or implemented. + +Recommendation: carry the no-added-border candidate into the darker-backdrop and legal-encounter comparison, retaining 25% as a fallback comparator. Do not change shipping D-094 until that comparison supports the chosen treatment and coordinated spec/runtime changes. Full core regression: 773 tests in 109 suites passed in 465.129 seconds. No physical-device testing occurred. diff --git a/docs/review/player-hurt-source/export-records.json b/docs/review/player-hurt-source/export-records.json new file mode 100644 index 00000000..44df954f --- /dev/null +++ b/docs/review/player-hurt-source/export-records.json @@ -0,0 +1,165 @@ +{ + "status": "CAPTURED source study; NOT ADMITTED", + "sourceSHA256": "60906ad3f8be81f16cbdec8092acc5296cf4d73770885606ca02ac7135e7cc75", + "tool": "built-in image_gen; Pillow deterministic export", + "canvas": [ + 384, + 384 + ], + "logicalCanvas": [ + 64, + 64 + ], + "logicalAnchor": [ + 32, + 56 + ], + "pixelAnchor": [ + 192, + 336 + ], + "alphaCleanup": "<=32 transparent; >=240 opaque; linear between; RGB unchanged", + "frames": [ + { + "frame": "hurt-west-01.png", + "sourceCell": [ + 0, + 0, + 591, + 887 + ], + "sourceSoleCentersApproximate": [ + [ + 265, + 701 + ], + [ + 408, + 799 + ] + ], + "sourceRootInCell": [ + 336.5, + 750.0 + ], + "scale": 0.44192634560906513, + "offset": [ + 43, + 5 + ], + "exportSoleCentersApproximate": [ + [ + 160.11048158640227, + 314.79036827195466 + ], + [ + 223.30594900849857, + 358.09915014164307 + ] + ], + "alphaBounds": [ + 121, + 55, + 277, + 371 + ], + "sha256": "1dab15d57fd3f02def3728a226e8a62866a42e3092c2f7366a58806de9240e14" + }, + { + "frame": "hurt-west-02.png", + "sourceCell": [ + 591, + 0, + 1182, + 887 + ], + "sourceSoleCentersApproximate": [ + [ + 813, + 703 + ], + [ + 980, + 801 + ] + ], + "sourceRootInCell": [ + 305.5, + 752.0 + ], + "scale": 0.44192634560906513, + "offset": [ + 57, + 4 + ], + "exportSoleCentersApproximate": [ + [ + 155.10764872521247, + 314.6742209631728 + ], + [ + 228.90934844192634, + 357.9830028328612 + ] + ], + "alphaBounds": [ + 113, + 61, + 273, + 371 + ], + "sha256": "606504fa4d489e6a4f9f4050b4c278cf7419228f3b721e6f5c24939e40c655df" + }, + { + "frame": "hurt-west-03.png", + "sourceCell": [ + 1182, + 0, + 1774, + 887 + ], + "sourceSoleCentersApproximate": [ + [ + 1398, + 702 + ], + [ + 1518, + 801 + ] + ], + "sourceRootInCell": [ + 276.0, + 751.5 + ], + "scale": 0.44192634560906513, + "offset": [ + 70, + 4 + ], + "exportSoleCentersApproximate": [ + [ + 165.45609065155807, + 314.2322946175637 + ], + [ + 218.4872521246459, + 357.9830028328612 + ] + ], + "alphaBounds": [ + 127, + 54, + 275, + 372 + ], + "sha256": "6e9edf8fcd2a0a58336023d62a1839f5a959e1b2505ed0c0a70af040e07beeb6" + } + ], + "limitations": [ + "manual approximate sole landmarks", + "flat raster source, no editable rig", + "not complete four-facing player family", + "not runtime capture" + ] +} diff --git a/docs/review/player-hurt-source/export.py b/docs/review/player-hurt-source/export.py new file mode 100644 index 00000000..12369bd8 --- /dev/null +++ b/docs/review/player-hurt-source/export.py @@ -0,0 +1,39 @@ +"""BP-002/BP-007 study export; uniform scale, annotated roots, no art admission.""" +from pathlib import Path +from PIL import Image, ImageDraw +import hashlib,json +ROOT=Path(__file__).resolve().parent +source=Image.open(ROOT/'source.png').convert('RGBA') +# Manually annotated approximate boot sole centers in full source coordinates. +# These are visual landmarks, not collision geometry or proven planted contacts. +contacts=[[(265,701),(408,799)],[(813,703),(980,801)],[(1398,702),(1518,801)]] +scale=312/706 +records=[]; frames=[] +for i,pair in enumerate(contacts): + left=i*source.width//3; right=(i+1)*source.width//3 + cell=source.crop((left,0,right,source.height)) + a=cell.getchannel('A'); cell.putalpha(a.point(lambda v:0 if v<=32 else 255 if v>=240 else round((v-32)*255/208))) + root=(sum(p[0] for p in pair)/2-left,sum(p[1] for p in pair)/2) + # One scale for all cells; no per-frame alpha-box normalization or deformation. + scaled=cell.resize((round(cell.width*scale),round(cell.height*scale)),Image.Resampling.LANCZOS) + offset=(round(192-root[0]*scale),round(336-root[1]*scale)) + frame=Image.new('RGBA',(384,384));frame.alpha_composite(scaled,offset) + path=ROOT/f'hurt-west-{i+1:02}.png';frame.save(path);frames.append(frame) + landmarks=[[(p[0]-left)*scale+offset[0],p[1]*scale+offset[1]] for p in pair] + records.append({'frame':path.name,'sourceCell':[left,0,right,source.height], + 'sourceSoleCentersApproximate':pair,'sourceRootInCell':root,'scale':scale,'offset':offset, + 'exportSoleCentersApproximate':landmarks,'alphaBounds':frame.getchannel('A').getbbox(), + 'sha256':hashlib.sha256(path.read_bytes()).hexdigest()}) +plate=Image.new('RGBA',(1152,430),(43,45,48,255));d=ImageDraw.Draw(plate) +for i,frame in enumerate(frames): + plate.alpha_composite(frame,(i*384,35));d.text((i*384+16,12),f'POSE {i+1} / 384 px export',fill='white') + for x,y in records[i]['exportSoleCentersApproximate']: + d.ellipse((i*384+x-3,y+32,i*384+x+3,y+38),outline='#ffd56a',width=1) +plate.convert('RGB').save(ROOT/'registered-plate.png') +record={'status':'CAPTURED source study; NOT ADMITTED','sourceSHA256':hashlib.sha256((ROOT/'source.png').read_bytes()).hexdigest(), + 'tool':'built-in image_gen; Pillow deterministic export','canvas':[384,384], + 'logicalCanvas':[64,64],'logicalAnchor':[32,56],'pixelAnchor':[192,336], + 'alphaCleanup':'<=32 transparent; >=240 opaque; linear between; RGB unchanged', + 'frames':records,'limitations':['manual approximate sole landmarks','flat raster source, no editable rig','not complete four-facing player family','not runtime capture']} +(ROOT/'export-records.json').write_text(json.dumps(record,indent=2)+'\n') +print('Three 384x384 candidates, one uniform scale; no production resources changed.') diff --git a/docs/review/player-hurt-source/landmark-drift.json b/docs/review/player-hurt-source/landmark-drift.json new file mode 100644 index 00000000..9d875e38 --- /dev/null +++ b/docs/review/player-hurt-source/landmark-drift.json @@ -0,0 +1,35 @@ +[ + { + "frame": "hurt-west-01.png", + "distanceFromPose1Pixels": [ + 0.0, + 0.0 + ], + "logicalUnits": [ + 0.0, + 0.0 + ] + }, + { + "frame": "hurt-west-02.png", + "distanceFromPose1Pixels": [ + 5.004180935411689, + 5.604603055335489 + ], + "logicalUnits": [ + 0.8340301559019482, + 0.9341005092225815 + ] + }, + { + "frame": "hurt-west-03.png", + "distanceFromPose1Pixels": [ + 5.374661150361122, + 4.820096457104237 + ], + "logicalUnits": [ + 0.8957768583935204, + 0.8033494095173728 + ] + } +] diff --git a/docs/review/player-hurt-source/prompt.txt b/docs/review/player-hurt-source/prompt.txt new file mode 100644 index 00000000..7018e2b3 --- /dev/null +++ b/docs/review/player-hurt-source/prompt.txt @@ -0,0 +1,4 @@ +Use case: identity-preserve. Asset: SS hooded player WEST-facing hurt animation source study, three chronological poses in one horizontal strip on actual transparent background. Input 1 is costume reference ONLY; input 2 is the approved elevated game viewpoint and material/scale reference. Keep charcoal urban hooded coat, muted tan seam trim and arm patch, belt, cross-body strap, gloves, kneepads, work boots, concealed face. Urban street-theater survivor, human proportions, not wizard, not armor knight, no staff or new equipment. +Critical correction: view from ABOVE as in the street scene, clearly see TOP of hood, shoulders and both boots; character faces screen LEFT with a little lower-left foreshortening. Not eye-level side-scroller profile. Three copies of exactly the same character at exactly the same viewing angle, lighting, body scale and foot registration, evenly spaced in three equal-width cells. High authored detail, restrained painted game-sprite rendering. +Chronology left to right: 1 compact impact bracing, shoulders recoil slightly right and knees flex; 2 maximum small recoil, torso bends slightly right but arms remain close and feet fixed; 3 controlled recovery almost neutral, head still faces left. Both feet stay in the SAME locations in all three cells, no lifted feet, no translation, no direction change. Preserve exact hood shape, limb lengths, patch/strap side, boot shapes and equipment count. Keep action restrained for a 150ms response, no enormous flailing or spinning. +Full bodies with generous transparent padding, all feet on one common baseline. No baked ground shadows, no floor, no labels, no borders, no glow, no white fringe, no checkerboard painted into image. This is a source study; prioritize coherent identity over dramatic motion. diff --git a/docs/review/player-hurt-source/review.md b/docs/review/player-hurt-source/review.md new file mode 100644 index 00000000..d0a6f664 --- /dev/null +++ b/docs/review/player-hurt-source/review.md @@ -0,0 +1,13 @@ +# BP-002/BP-003 hooded hurt source study + +Status: CAPTURED / not admitted. Built-in image_gen produced a three-pose strip using the existing west costume reference and approved shared scene. Exact prompt is prompt.txt. Original is source.png; source hash and delivery hashes are export-records.json. This uses the user's authorized deterministic alpha cleanup and registration workflow. + +OBSERVED: costume identity is more consistent than the currently bundled hurt frames: hood, strap, belt, arm patch and boots remain recognizable. The elevated view exposes the top of hood and shoulders. The middle pose bends and brings the arms inward; the final pose recovers. This is a qualitative source comparison, not renderer or benchmark acceptance. + +Three 384×384 candidate exports use one uniform scale (312/706), with logical 64×64 canvas and (32,56) anchor. All are downsampled from the generated source, not enlarged from the 256px delivery. No frame is independently stretched or normalized by its alpha box. Alpha cleanup removes low-alpha haze; RGB is unchanged. Exact recipe: export.py. All three resulting alpha bounds remain within the canvas without edge clipping. + +FAILED planted-foot invariance: approximate manually annotated sole centers vary by up to 5.60 export pixels (0.93 logical units) relative to pose 1 after root registration. These are diagnostic estimates, not a precise contact solve or an acceptance threshold. See landmark-drift.json. Foot spacing and costume contour still shift; registration cannot repair those anatomical changes. + +OPEN: controlled editable source/pose master, consistent four-facing identity, matching live-state neutral/movement transition, real-renderer playback and normal/Reduced Motion review. The generated raster is not a rig or a complete character sheet. This study may guide a corrected source, but must not replace production frames yet. No new cadence: comparison uses the existing three-frame 20-fps hurt duration (150 ms); no authoritative damage or movement changes. + +Validation is image/export inspection only. No runtime resources or code changed, so no new runtime test claim is made. Previous renderer evidence remains at runtime 987c32a. Spec authority remains 56a5a5da1d87491d23df86731cc01a5acd868d26, BP-002/BP-003/BP-007. Art improvement is partial; the benchmark remains unachieved. diff --git a/docs/review/player-hurt-source/source.png b/docs/review/player-hurt-source/source.png new file mode 100644 index 00000000..ab01e37e Binary files /dev/null and b/docs/review/player-hurt-source/source.png differ diff --git a/docs/review/player-leg-volume/README.md b/docs/review/player-leg-volume/README.md new file mode 100644 index 00000000..8adc38db --- /dev/null +++ b/docs/review/player-leg-volume/README.md @@ -0,0 +1,9 @@ +# Player leg-volume candidate + +Fuller calf/trouser and boot-shaft geometry, with a small transition adjustment above the knee. Existing knee-pad surface detail and geometry retained. Hood, torso layers, coat, arm motion, stance, toe trajectories, source samples, 16 frames and half-second timing are unchanged. This edits the existing native mesh source; no new raster paint was generated. + +normal-speed.html and quarter-speed.html show separate source playback, with pause/step controls. detail-review.png compares previous source above with the fuller candidate below. seam-review.png shows frames 15, 16, 1, 2. Geometry parameters remain proposed. + +Validation: 16 unique frames, fixed 384×416 canvas, unchanged pose sample files and arm/coat assembly; changes confined to the lower-body region (first changed row 194); all 32 projected knee centers covered by finite opaque surfaces; alpha bounds stay inside the canvas. See volume-verification.json and joint-verification.json. The preliminary upper-210-row equality check failed because the intended thigh change starts above row 210; this was investigated rather than counted as a pass. Existing torso source layers and assembly remain identical. Statistics do not replace visual review. + +No runtime or production assets replaced. This revision has not yet been tested in the renderer; prior Reduced Motion test results apply to the previous candidate. Review both source speeds before renderer validation and shared-scene integration. diff --git a/docs/review/player-leg-volume/joint-verification.json b/docs/review/player-leg-volume/joint-verification.json new file mode 100644 index 00000000..6eef0ae9 --- /dev/null +++ b/docs/review/player-leg-volume/joint-verification.json @@ -0,0 +1,322 @@ +[ + { + "time": 0.0, + "side": "right", + "jointCenterPixel": [ + 174, + 281 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.158134950011185 + }, + { + "time": 0.0, + "side": "left", + "jointCenterPixel": [ + 210, + 256 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.182808855136578 + }, + { + "time": 0.03125, + "side": "right", + "jointCenterPixel": [ + 174, + 288 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1750276884371242 + }, + { + "time": 0.03125, + "side": "left", + "jointCenterPixel": [ + 210, + 203 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1853961390892955 + }, + { + "time": 0.0625, + "side": "right", + "jointCenterPixel": [ + 174, + 293 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1680603915629124 + }, + { + "time": 0.0625, + "side": "left", + "jointCenterPixel": [ + 210, + 193 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.182167701451185 + }, + { + "time": 0.09375, + "side": "right", + "jointCenterPixel": [ + 174, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.286449046015699 + }, + { + "time": 0.09375, + "side": "left", + "jointCenterPixel": [ + 210, + 212 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.178699261781965 + }, + { + "time": 0.125, + "side": "right", + "jointCenterPixel": [ + 174, + 262 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.8206686044090095 + }, + { + "time": 0.125, + "side": "left", + "jointCenterPixel": [ + 210, + 233 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.18905571276181 + }, + { + "time": 0.15625, + "side": "right", + "jointCenterPixel": [ + 174, + 264 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.5749160266612305 + }, + { + "time": 0.15625, + "side": "left", + "jointCenterPixel": [ + 210, + 252 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.174130206292631 + }, + { + "time": 0.1875, + "side": "right", + "jointCenterPixel": [ + 174, + 275 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1838167927621672 + }, + { + "time": 0.1875, + "side": "left", + "jointCenterPixel": [ + 210, + 266 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1879727114435354 + }, + { + "time": 0.21875, + "side": "right", + "jointCenterPixel": [ + 174, + 279 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1689675743417176 + }, + { + "time": 0.21875, + "side": "left", + "jointCenterPixel": [ + 210, + 276 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1871562622651233 + }, + { + "time": 0.25, + "side": "right", + "jointCenterPixel": [ + 174, + 256 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1706069256088583 + }, + { + "time": 0.25, + "side": "left", + "jointCenterPixel": [ + 210, + 281 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.171221736382954 + }, + { + "time": 0.28125, + "side": "right", + "jointCenterPixel": [ + 174, + 203 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.17317744779578 + }, + { + "time": 0.28125, + "side": "left", + "jointCenterPixel": [ + 210, + 288 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1872486935017026 + }, + { + "time": 0.3125, + "side": "right", + "jointCenterPixel": [ + 174, + 193 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1716515738223663 + }, + { + "time": 0.3125, + "side": "left", + "jointCenterPixel": [ + 210, + 293 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1786127511556277 + }, + { + "time": 0.34375, + "side": "right", + "jointCenterPixel": [ + 174, + 212 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1665185606355735 + }, + { + "time": 0.34375, + "side": "left", + "jointCenterPixel": [ + 210, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.2823039499813564 + }, + { + "time": 0.375, + "side": "right", + "jointCenterPixel": [ + 174, + 233 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1759709786115167 + }, + { + "time": 0.375, + "side": "left", + "jointCenterPixel": [ + 210, + 262 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.7786882276056 + }, + { + "time": 0.40625, + "side": "right", + "jointCenterPixel": [ + 174, + 252 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1610555675455743 + }, + { + "time": 0.40625, + "side": "left", + "jointCenterPixel": [ + 210, + 264 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.551245319522546 + }, + { + "time": 0.4375, + "side": "right", + "jointCenterPixel": [ + 174, + 266 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1748172349340535 + }, + { + "time": 0.4375, + "side": "left", + "jointCenterPixel": [ + 210, + 275 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1919854900253526 + }, + { + "time": 0.46875, + "side": "right", + "jointCenterPixel": [ + 174, + 276 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1740533521467427 + }, + { + "time": 0.46875, + "side": "left", + "jointCenterPixel": [ + 210, + 279 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.176983668421407 + } +] diff --git a/docs/review/player-leg-volume/runtime-reconciliation.md b/docs/review/player-leg-volume/runtime-reconciliation.md new file mode 100644 index 00000000..c6243870 --- /dev/null +++ b/docs/review/player-leg-volume/runtime-reconciliation.md @@ -0,0 +1,4 @@ +Test-only reconciliation: fuller-leg PNGs replace the reviewed knee-detail fixture, with source hashes recorded in AppTests/BenchmarkAssets/player-source-s-record.json. Exact timing, canvas, root and gameplay authority unchanged. Renderer tests pending; no prior asset result reused. Production spec pin and asset catalogs unchanged. + + +Held after owner feedback: excessive knee lift. The staged volume-only fixture has not been validated and is superseded for review by the lower-recovery source experiment. Do not admit it into production or use prior test results as evidence for it. diff --git a/docs/review/player-leg-volume/volume-verification.json b/docs/review/player-leg-volume/volume-verification.json new file mode 100644 index 00000000..58b4bae1 --- /dev/null +++ b/docs/review/player-leg-volume/volume-verification.json @@ -0,0 +1,208 @@ +{ + "status": "SOURCE_VOLUME_CANDIDATE_NOT_ADMITTED", + "frameCount": 16, + "poseSamplesUnchanged": true, + "armAndCoatAssemblyUnchanged": true, + "toeSoleGeometryUnchanged": true, + "canvas": [ + 384, + 416 + ], + "registrationRoot": [ + 192, + 336 + ], + "normalCycleSeconds": 0.5, + "quarterCycleSeconds": 2, + "proposedCalfRadii": [ + 1.86, + 2.38, + 2.55, + 2.15 + ], + "previousCalfRadii": [ + 1.6, + 2, + 2.2, + 2 + ], + "kneePadGeometryUnchanged": true, + "frames": [ + { + "frame": 1, + "sha256": "ea5d4646c08723c2a55691713d321b43f66d1609aed148ef0d28f51fcb2658dd", + "changedPixels": 2621, + "changedBounds": [ + 157, + 200, + 227, + 363 + ] + }, + { + "frame": 2, + "sha256": "537e1dffc4d0f40d643c47381e90992629c0612573ed27cce8e9aa6c3476cf05", + "changedPixels": 1812, + "changedBounds": [ + 157, + 206, + 226, + 330 + ] + }, + { + "frame": 3, + "sha256": "8542693e1f4b5f572bb31f3994890c49674516f58766376d5d274593583efa7c", + "changedPixels": 1418, + "changedBounds": [ + 157, + 204, + 226, + 306 + ] + }, + { + "frame": 4, + "sha256": "effd953a031b0195b03fba72ceb31d8513e14d7cd7397205fd3471aa066901db", + "changedPixels": 2057, + "changedBounds": [ + 157, + 196, + 227, + 288 + ] + }, + { + "frame": 5, + "sha256": "7b265408cf6af9e80abff20a63d6b364a805c40ddce20a2230e38171f6c64123", + "changedPixels": 2701, + "changedBounds": [ + 156, + 194, + 226, + 304 + ] + }, + { + "frame": 6, + "sha256": "37006fc56e418bc07238c9ef69a7bfb39cc564fc3c83a7614db2bae7c7642d7c", + "changedPixels": 2829, + "changedBounds": [ + 157, + 194, + 227, + 333 + ] + }, + { + "frame": 7, + "sha256": "34fe56dfd66857cdbd1660e7b9a50058146753b42da3dc172806b5bfcda6c1f0", + "changedPixels": 2687, + "changedBounds": [ + 156, + 200, + 226, + 347 + ] + }, + { + "frame": 8, + "sha256": "6a3a1e1819047426ecd44e7b3e7ca8f6d51f8a74e8cf406e8b7c932a80ff5e93", + "changedPixels": 2607, + "changedBounds": [ + 156, + 210, + 226, + 367 + ] + }, + { + "frame": 9, + "sha256": "17b38f002c592091a1ba5ebece571ab3efeff106da9dcfb0b90120aa0862e268", + "changedPixels": 2624, + "changedBounds": [ + 156, + 200, + 226, + 363 + ] + }, + { + "frame": 10, + "sha256": "d7821edf8dff6be4105a2cf756cc1d7cd980fb81d994854a9aa5e299aa4550ab", + "changedPixels": 1816, + "changedBounds": [ + 157, + 204, + 226, + 329 + ] + }, + { + "frame": 11, + "sha256": "04a3f1037cbd46f6f4ad4660b7d50c4eb9f244d7e5512cb4b640fbc229407687", + "changedPixels": 1412, + "changedBounds": [ + 156, + 203, + 226, + 306 + ] + }, + { + "frame": 12, + "sha256": "ff5e72e9679130ecac6cd8a0a059992cd9d8090bc2673a335e26f4fe115565aa", + "changedPixels": 2024, + "changedBounds": [ + 156, + 195, + 227, + 290 + ] + }, + { + "frame": 13, + "sha256": "f36177fad789f6d1aca4bab66f3c250507bf3cad45d146dc074bae8e071bf647", + "changedPixels": 2719, + "changedBounds": [ + 157, + 194, + 227, + 309 + ] + }, + { + "frame": 14, + "sha256": "214d76f4d39349b98d5c717f641c75a76c3a3710c7391198b920715533999c98", + "changedPixels": 2820, + "changedBounds": [ + 156, + 194, + 226, + 333 + ] + }, + { + "frame": 15, + "sha256": "90e429bf334f43720b781b2a4b8d006334cb4e29c14e5c3a06ac55e1e1517b41", + "changedPixels": 2704, + "changedBounds": [ + 157, + 200, + 227, + 355 + ] + }, + { + "frame": 16, + "sha256": "3f185405d6c930c9fba0c919bb24d50f0bde863b3b3f9e193b1b340acaa124e1", + "changedPixels": 2589, + "changedBounds": [ + 157, + 209, + 226, + 367 + ] + } + ] +} diff --git a/docs/review/player-live-capture/BP008-player-source-frame-0-tick-15.png b/docs/review/player-live-capture/BP008-player-source-frame-0-tick-15.png new file mode 100644 index 00000000..d1a1fe69 Binary files /dev/null and b/docs/review/player-live-capture/BP008-player-source-frame-0-tick-15.png differ diff --git a/docs/review/player-live-capture/BP008-player-source-frame-15-tick-30.png b/docs/review/player-live-capture/BP008-player-source-frame-15-tick-30.png new file mode 100644 index 00000000..f00c7394 Binary files /dev/null and b/docs/review/player-live-capture/BP008-player-source-frame-15-tick-30.png differ diff --git a/docs/review/player-live-capture/README.md b/docs/review/player-live-capture/README.md new file mode 100644 index 00000000..528a41c7 --- /dev/null +++ b/docs/review/player-live-capture/README.md @@ -0,0 +1,13 @@ +# Revised player: first live renderer integration + +BP-002/BP-007/BP-008. Specs remain d602775. Test-only source candidate; active production art and metadata are unchanged. + +The isolated fixture uses WorldRenderer, SpriteLibrary exact timing and GameSession simulation. It projects ground Y by 0.5 while a compensating parent preserves the elevated player artwork. The 384×416 source draws at 64×69⅓ with anchor (0.5, 1−336/416). Candidate textures and exact half-second timing live exclusively in the test bundle/library. Post-action records identify the actual selected SpriteKit texture; they are not inferred from simulation phase. + +Final simulator result: 107 executions (105 named tests including a three-case parameterized test), zero failures. Core: swift test --disable-sandbox exited 0; 773 tests in 109 suites passed in 654.926 seconds. Runtime graph refreshed: 6,943 nodes / 29,429 edges. + +Two earlier runs failed and are retained: first the completion check incorrectly depended on candidate availability and the initial sprite scale changed reported height; second the assertion incorrectly demanded south facing for the initial east-facing idle. Issue #130 records both corrections. The final assertions retain actual travel and changing frames, verify every candidate frame is south/move with correct dimensions, and require an explicit idle record after movement. No timeout extension or reduced movement requirement was used. + +Observed limitation: only source frames 0 and 15 were captured before the south arena boundary stops motion. Synchronous image extraction perturbs display cadence, so these stills are not a continuous video or a performance benchmark. The emitted contact analysis combines source annotations with actual frame identities/root positions; sparse samples cannot establish acceptable slip. Full unobstructed-cycle capture without image extraction in the measured interval is still required. + +Visual limitation: this fixture retains the inherited white outline as a control, which remains visibly heavy. It is not the approved benchmark finish. Ground-only context omits the building, cameras, HUD and encounters; this does not close their shared-scene gates. Other facings, partial input, diagonal travel, reversal, dodge and device acceptance remain open. diff --git a/docs/review/player-live-capture/analyze.py b/docs/review/player-live-capture/analyze.py new file mode 100644 index 00000000..c1115f66 --- /dev/null +++ b/docs/review/player-live-capture/analyze.py @@ -0,0 +1,30 @@ +from pathlib import Path +import json,math +R=Path(__file__).resolve().parent +samples=json.loads((R/'records.json').read_text()) +poses=json.loads((R/'samples.json').read_text()) +groups=[] +for side in ['left','right']: + group=[];previous=None + for row in samples: + if 'sourceFrameIndex' not in row: + if group:groups.append({'side':side,'samples':group});group=[] + previous=None + continue + frame=row['sourceFrameIndex'];leg=next(x for x in poses[frame]['legs'] if x['side']==side) + wrapped=previous is not None and frame1 else None + g['coverage']='observed interval only' if len(g['samples'])>1 else 'insufficient: only one support sample' +report={'scope':'Observed frame identity plus source toe annotation at actual projected actor positions; not pixel tracking, video, complete contact phase coverage or a pass threshold','records':len(samples),'distinctFrames':sorted({r['sourceFrameIndex'] for r in samples if 'sourceFrameIndex' in r}),'ticks':[samples[0]['tick'],samples[-1]['tick']],'supportGroups':groups} +(R/'contact-analysis.json').write_text(json.dumps(report,indent=2)+'\n') +print(json.dumps({k:report[k] for k in ['records','distinctFrames','ticks']}));print('observed support displacement:',[g['maxObservedDisplacement'] for g in groups]) diff --git a/docs/review/player-live-capture/contact-analysis.json b/docs/review/player-live-capture/contact-analysis.json new file mode 100644 index 00000000..e19143af --- /dev/null +++ b/docs/review/player-live-capture/contact-analysis.json @@ -0,0 +1,29 @@ +{ + "scope": "Observed frame identity plus source toe annotation at actual projected actor positions; not pixel tracking, video, complete contact phase coverage or a pass threshold", + "records": 32, + "distinctFrames": [ + 0, + 15 + ], + "ticks": [ + 0, + 90 + ], + "supportGroups": [ + { + "side": "right", + "samples": [ + { + "time": 207413.5114101667, + "tick": 15, + "frame": 0, + "toeViewX": 156.0, + "toeViewY": 58.5, + "displacementFromFirstObservedContact": 0.0 + } + ], + "maxObservedDisplacement": null, + "coverage": "insufficient: only one support sample" + } + ] +} diff --git a/docs/review/player-live-capture/final-summary.json b/docs/review/player-live-capture/final-summary.json new file mode 100644 index 00000000..44827edf --- /dev/null +++ b/docs/review/player-live-capture/final-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 107, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792090076.006, + "passedTests" : 105, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792089837.1, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "33% of duration", + "text" : "1 longest test run with outlier durations exceeding 18.40s (three standard deviations)" + } + ], + "totalTestCount" : 105 +} diff --git a/docs/review/player-live-capture/records.json b/docs/review/player-live-capture/records.json new file mode 100644 index 00000000..e5ffe0b2 --- /dev/null +++ b/docs/review/player-live-capture/records.json @@ -0,0 +1,250 @@ +[ + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207412.93333333338, + "facing" : "e", + "tick" : 0 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 33792, + "clip" : "player_move|s", + "displayTime" : 207413.51141016671, + "facing" : "s", + "framePath" : "player-source-s-00", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "imageAttachment" : "BP008-player-source-frame-0-tick-15", + "renderedX" : 160, + "renderedY" : 66, + "sourceFrameIndex" : 0, + "tick" : 15, + "width" : 64 + }, + { + "anchorX" : 0.5, + "anchorY" : 0.19230769574642181, + "artYScaleAfterParent" : 1, + "authoritativeRawX" : 40960, + "authoritativeRawY" : 18432, + "clip" : "player_move|s", + "displayTime" : 207413.98159570838, + "facing" : "s", + "framePath" : "player-source-s-15", + "groundYScale" : 0.5, + "height" : 69.333335876464844, + "imageAttachment" : "BP008-player-source-frame-15-tick-30", + "renderedX" : 160, + "renderedY" : 36, + "sourceFrameIndex" : 15, + "tick" : 30, + "width" : 64 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.32577437506, + "facing" : "s", + "tick" : 45 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.44001729172, + "facing" : "s", + "tick" : 51 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.49915183338, + "facing" : "s", + "tick" : 55 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.53575908337, + "facing" : "s", + "tick" : 57 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.57502558338, + "facing" : "s", + "tick" : 59 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.60000000003, + "facing" : "s", + "tick" : 61 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.6166666667, + "facing" : "s", + "tick" : 62 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.63333333339, + "facing" : "s", + "tick" : 63 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.65000000005, + "facing" : "s", + "tick" : 64 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.66666666672, + "facing" : "s", + "tick" : 65 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.68333333338, + "facing" : "s", + "tick" : 66 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.70000000004, + "facing" : "s", + "tick" : 67 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.73700325005, + "facing" : "s", + "tick" : 69 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.77413337506, + "facing" : "s", + "tick" : 71 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.80000000005, + "facing" : "s", + "tick" : 73 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.81666666671, + "facing" : "s", + "tick" : 74 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.83333333337, + "facing" : "s", + "tick" : 75 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.8666666667, + "facing" : "s", + "tick" : 77 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.88333333339, + "facing" : "s", + "tick" : 78 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.90000000005, + "facing" : "s", + "tick" : 79 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.91666666672, + "facing" : "s", + "tick" : 80 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.93333333338, + "facing" : "s", + "tick" : 81 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207414.97375770839, + "facing" : "s", + "tick" : 83 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207415.00000000006, + "facing" : "s", + "tick" : 85 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207415.01666666672, + "facing" : "s", + "tick" : 86 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207415.03333333338, + "facing" : "s", + "tick" : 87 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207415.05000000005, + "facing" : "s", + "tick" : 88 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207415.06666666671, + "facing" : "s", + "tick" : 89 + }, + { + "candidateAvailable" : false, + "clip" : "player_idle", + "displayTime" : 207415.08333333337, + "facing" : "s", + "tick" : 90 + } +] \ No newline at end of file diff --git a/docs/review/player-live-capture/samples.json b/docs/review/player-live-capture/samples.json new file mode 100644 index 00000000..79d7c15c --- /dev/null +++ b/docs/review/player-live-capture/samples.json @@ -0,0 +1,1138 @@ +[ + { + "time": 0.0, + "legs": [ + { + "side": "right", + "phase": 0.0, + "contact": true, + "angle": 0.0, + "hip": [ + -2.1, + 0, + 25.6 + ], + "knee": [ + -3.05, + 9.722185017242719, + 16.2819198066071 + ], + "ankle": [ + -4.0, + 7.5, + 3.0 + ], + "heel": [ + -4.0, + 5.0, + 0.0 + ], + "toe": [ + -4.0, + 15.0, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 3.05, + 13.201155464557, + 22.93973790753678 + ], + "ankle": [ + 4.0, + 0.3403332420232523, + 18.946399484565088 + ], + "heel": [ + 4.0, + -3.3423278551831803, + 17.64716615558899 + ], + "toe": [ + 4.0, + 5.250690328386904, + 12.532477651209286 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.03125, + "legs": [ + { + "side": "right", + "phase": 0.03125, + "contact": true, + "angle": 10.43701171875, + "hip": [ + -2.1, + 0, + 24.21731656763491 + ], + "knee": [ + -3.05, + 9.392407254453556, + 14.566918339246186 + ], + "ankle": [ + -4.0, + 0.6675535055610231, + 4.309022499434011 + ], + "heel": [ + -4.0, + -2.334546545071932, + 1.8115447145499082 + ], + "toe": [ + -4.0, + 7.5, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.28125, + "contact": false, + "angle": 25.654792785644535, + "hip": [ + 2.1, + 0, + 24.21731656763491 + ], + "knee": [ + 3.05, + 11.057344446739261, + 31.903839434716254 + ], + "ankle": [ + 4.0, + 4.174064737759603, + 20.329386512528142 + ], + "heel": [ + 4.0, + 0.6216735173416836, + 18.70749976645193 + ], + "toe": [ + 4.0, + 9.635862559488197, + 14.37801990018096 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.0625, + "legs": [ + { + "side": "right", + "phase": 0.0625, + "contact": true, + "angle": 30.76171875, + "hip": [ + -2.1, + 0, + 23.892893218813455 + ], + "knee": [ + -3.05, + 7.1210219845479985, + 12.463171179516785 + ], + "ankle": [ + -4.0, + -4.910357086363652, + 6.413921833355803 + ], + "heel": [ + -4.0, + -8.593018183570084, + 5.114688504379704 + ], + "toe": [ + -4.0, + 0.0, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.3125, + "contact": false, + "angle": 20.39337158203125, + "hip": [ + 2.1, + 0, + 23.892893218813455 + ], + "knee": [ + 3.05, + 9.765858713290438, + 33.16519086244253 + ], + "ankle": [ + 4.0, + 6.993858484790961, + 19.987045517470843 + ], + "heel": [ + 4.0, + 3.605161874054547, + 18.046237623735983 + ], + "toe": [ + 4.0, + 12.978384961297573, + 14.561601493983794 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.09375, + "legs": [ + { + "side": "right", + "phase": 0.09375, + "contact": true, + "angle": 44.49462890625, + "hip": [ + -2.1, + 0, + 25.523879532511287 + ], + "knee": [ + -3.05, + 1.8395204467309032, + 12.183577267342823 + ], + "ankle": [ + -4.0, + -10.74734394022944, + 7.3962664455693545 + ], + "heel": [ + -4.0, + -14.633161515468025, + 7.008423987905262 + ], + "toe": [ + -4.0, + -7.5, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.34375, + "contact": false, + "angle": 15.234947204589844, + "hip": [ + 2.1, + 0, + 25.523879532511287 + ], + "knee": [ + 3.05, + 12.336451038564142, + 30.92383099276625 + ], + "ankle": [ + 4.0, + 8.896410243605064, + 17.904091389801167 + ], + "heel": [ + 4.0, + 5.695936050882409, + 15.666466545973169 + ], + "toe": [ + 4.0, + 15.344499994023804, + 13.038689189515479 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.125, + "legs": [ + { + "side": "right", + "phase": 0.125, + "contact": false, + "angle": 44.49462890625, + "hip": [ + -2.1, + 0, + 25.975 + ], + "knee": [ + -3.05, + -2.6504044983664867, + 12.771861888360078 + ], + "ankle": [ + -4.0, + -15.224907614437024, + 7.952176070390993 + ], + "heel": [ + -4.0, + -19.11072518967561, + 7.564333612726901 + ], + "toe": [ + -4.0, + -11.977563674207584, + 0.5559096248216386 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.375, + "contact": false, + "angle": 10.43701171875, + "hip": [ + 2.1, + 0, + 25.975 + ], + "knee": [ + 3.05, + 13.372925380962588, + 27.56004471709999 + ], + "ankle": [ + 4.0, + 10.17684541349199, + 14.478279819291549 + ], + "heel": [ + 4.0, + 7.174745362859033, + 11.980802034407446 + ], + "toe": [ + 4.0, + 17.009291907930965, + 10.169257319857538 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.15625, + "legs": [ + { + "side": "right", + "phase": 0.15625, + "contact": false, + "angle": 42.580604553222656, + "hip": [ + -2.1, + 0, + 26.880330085889913 + ], + "knee": [ + -3.05, + -0.6070639143122367, + 13.427487508800866 + ], + "ankle": [ + -4.0, + -13.618975300847653, + 9.957954100840947 + ], + "heel": [ + -4.0, + -17.489670998175235, + 9.440542447812394 + ], + "toe": [ + -4.0, + -10.126409226106636, + 2.674274933444284 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.40625, + "contact": false, + "angle": 6.257057189941406, + "hip": [ + 2.1, + 0, + 26.880330085889913 + ], + "knee": [ + 3.05, + 13.099892995284673, + 23.75938415362971 + ], + "ankle": [ + 4.0, + 11.167309763179647, + 10.43224559912423 + ], + "heel": [ + 4.0, + 8.35523452021924, + 7.722590117715355 + ], + "toe": [ + 4.0, + 18.295663734401302, + 6.6326969863323795 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.1875, + "legs": [ + { + "side": "right", + "phase": 0.1875, + "contact": false, + "angle": 39.48211669921875, + "hip": [ + -2.1, + 0, + 26.99951905283833 + ], + "knee": [ + -3.05, + 4.081991552390702, + 14.166559730600497 + ], + "ankle": [ + -4.0, + -9.332183937511147, + 12.980222541553275 + ], + "heel": [ + -4.0, + -13.169253681545225, + 12.254346671022887 + ], + "toe": [ + -4.0, + -5.451022880445972, + 5.895973191825334 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.4375, + "contact": false, + "angle": 2.95257568359375, + "hip": [ + 2.1, + 0, + 26.99951905283833 + ], + "knee": [ + 3.05, + 11.571476750160718, + 20.11123727720735 + ], + "ankle": [ + 4.0, + 11.906522633381758, + 6.648873285094499 + ], + "heel": [ + 4.0, + 9.255313267294374, + 3.7816291557656867 + ], + "toe": [ + 4.0, + 19.242038384150042, + 3.266535532854132 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.21875, + "legs": [ + { + "side": "right", + "phase": 0.21875, + "contact": false, + "angle": 35.45665740966797, + "hip": [ + -2.1, + 0, + 26.15588571617311 + ], + "knee": [ + -3.05, + 9.132846577994423, + 16.259491757623586 + ], + "ankle": [ + -4.0, + -4.333685817181288, + 16.257200538926643 + ], + "heel": [ + -4.0, + -8.110333047586515, + 15.263754165400352 + ], + "toe": [ + -4.0, + 0.035212655096725776, + 9.462884816285634 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.46875, + "contact": false, + "angle": 0.7810592651367188, + "hip": [ + 2.1, + 0, + 26.15588571617311 + ], + "knee": [ + 3.05, + 10.203166558993354, + 17.367092160204255 + ], + "ankle": [ + 4.0, + 11.560305798910447, + 3.9691194373078122 + ], + "heel": [ + 4.0, + 9.019643185637126, + 1.0034772664592837 + ], + "toe": [ + 4.0, + 19.018714035295414, + 0.8671609302634504 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.25, + "legs": [ + { + "side": "right", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + -2.1, + 0, + 25.6 + ], + "knee": [ + -3.05, + 13.201155464557, + 22.93973790753678 + ], + "ankle": [ + -4.0, + 0.3403332420232523, + 18.946399484565088 + ], + "heel": [ + -4.0, + -3.3423278551831803, + 17.64716615558899 + ], + "toe": [ + -4.0, + 5.250690328386904, + 12.532477651209286 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.0, + "contact": true, + "angle": 0.0, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 3.05, + 9.722185017242719, + 16.2819198066071 + ], + "ankle": [ + 4.0, + 7.5, + 3.0 + ], + "heel": [ + 4.0, + 5.0, + 0.0 + ], + "toe": [ + 4.0, + 15.0, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.28125, + "legs": [ + { + "side": "right", + "phase": 0.28125, + "contact": false, + "angle": 25.654792785644535, + "hip": [ + -2.1, + 0, + 24.21731656763491 + ], + "knee": [ + -3.05, + 11.057344446739261, + 31.903839434716254 + ], + "ankle": [ + -4.0, + 4.174064737759603, + 20.329386512528142 + ], + "heel": [ + -4.0, + 0.6216735173416836, + 18.70749976645193 + ], + "toe": [ + -4.0, + 9.635862559488197, + 14.37801990018096 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.03125, + "contact": true, + "angle": 10.43701171875, + "hip": [ + 2.1, + 0, + 24.21731656763491 + ], + "knee": [ + 3.05, + 9.392407254453556, + 14.566918339246186 + ], + "ankle": [ + 4.0, + 0.6675535055610231, + 4.309022499434011 + ], + "heel": [ + 4.0, + -2.334546545071932, + 1.8115447145499082 + ], + "toe": [ + 4.0, + 7.5, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.3125, + "legs": [ + { + "side": "right", + "phase": 0.3125, + "contact": false, + "angle": 20.39337158203125, + "hip": [ + -2.1, + 0, + 23.892893218813455 + ], + "knee": [ + -3.05, + 9.765858713290438, + 33.16519086244253 + ], + "ankle": [ + -4.0, + 6.993858484790961, + 19.987045517470843 + ], + "heel": [ + -4.0, + 3.605161874054547, + 18.046237623735983 + ], + "toe": [ + -4.0, + 12.978384961297573, + 14.561601493983794 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.0625, + "contact": true, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 23.892893218813455 + ], + "knee": [ + 3.05, + 7.1210219845479985, + 12.463171179516785 + ], + "ankle": [ + 4.0, + -4.910357086363652, + 6.413921833355803 + ], + "heel": [ + 4.0, + -8.593018183570084, + 5.114688504379704 + ], + "toe": [ + 4.0, + 0.0, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.34375, + "legs": [ + { + "side": "right", + "phase": 0.34375, + "contact": false, + "angle": 15.234947204589844, + "hip": [ + -2.1, + 0, + 25.523879532511287 + ], + "knee": [ + -3.05, + 12.336451038564142, + 30.92383099276625 + ], + "ankle": [ + -4.0, + 8.896410243605064, + 17.904091389801167 + ], + "heel": [ + -4.0, + 5.695936050882409, + 15.666466545973169 + ], + "toe": [ + -4.0, + 15.344499994023804, + 13.038689189515479 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.09375, + "contact": true, + "angle": 44.49462890625, + "hip": [ + 2.1, + 0, + 25.523879532511287 + ], + "knee": [ + 3.05, + 1.8395204467309032, + 12.183577267342823 + ], + "ankle": [ + 4.0, + -10.74734394022944, + 7.3962664455693545 + ], + "heel": [ + 4.0, + -14.633161515468025, + 7.008423987905262 + ], + "toe": [ + 4.0, + -7.5, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.375, + "legs": [ + { + "side": "right", + "phase": 0.375, + "contact": false, + "angle": 10.43701171875, + "hip": [ + -2.1, + 0, + 25.975 + ], + "knee": [ + -3.05, + 13.372925380962588, + 27.56004471709999 + ], + "ankle": [ + -4.0, + 10.17684541349199, + 14.478279819291549 + ], + "heel": [ + -4.0, + 7.174745362859033, + 11.980802034407446 + ], + "toe": [ + -4.0, + 17.009291907930965, + 10.169257319857538 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.125, + "contact": false, + "angle": 44.49462890625, + "hip": [ + 2.1, + 0, + 25.975 + ], + "knee": [ + 3.05, + -2.6504044983664867, + 12.771861888360078 + ], + "ankle": [ + 4.0, + -15.224907614437024, + 7.952176070390993 + ], + "heel": [ + 4.0, + -19.11072518967561, + 7.564333612726901 + ], + "toe": [ + 4.0, + -11.977563674207584, + 0.5559096248216386 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.40625, + "legs": [ + { + "side": "right", + "phase": 0.40625, + "contact": false, + "angle": 6.257057189941406, + "hip": [ + -2.1, + 0, + 26.880330085889913 + ], + "knee": [ + -3.05, + 13.099892995284673, + 23.75938415362971 + ], + "ankle": [ + -4.0, + 11.167309763179647, + 10.43224559912423 + ], + "heel": [ + -4.0, + 8.35523452021924, + 7.722590117715355 + ], + "toe": [ + -4.0, + 18.295663734401302, + 6.6326969863323795 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.15625, + "contact": false, + "angle": 42.580604553222656, + "hip": [ + 2.1, + 0, + 26.880330085889913 + ], + "knee": [ + 3.05, + -0.6070639143122367, + 13.427487508800866 + ], + "ankle": [ + 4.0, + -13.618975300847653, + 9.957954100840947 + ], + "heel": [ + 4.0, + -17.489670998175235, + 9.440542447812394 + ], + "toe": [ + 4.0, + -10.126409226106636, + 2.674274933444284 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.4375, + "legs": [ + { + "side": "right", + "phase": 0.4375, + "contact": false, + "angle": 2.95257568359375, + "hip": [ + -2.1, + 0, + 26.99951905283833 + ], + "knee": [ + -3.05, + 11.571476750160718, + 20.11123727720735 + ], + "ankle": [ + -4.0, + 11.906522633381758, + 6.648873285094499 + ], + "heel": [ + -4.0, + 9.255313267294374, + 3.7816291557656867 + ], + "toe": [ + -4.0, + 19.242038384150042, + 3.266535532854132 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.1875, + "contact": false, + "angle": 39.48211669921875, + "hip": [ + 2.1, + 0, + 26.99951905283833 + ], + "knee": [ + 3.05, + 4.081991552390702, + 14.166559730600497 + ], + "ankle": [ + 4.0, + -9.332183937511147, + 12.980222541553275 + ], + "heel": [ + 4.0, + -13.169253681545225, + 12.254346671022887 + ], + "toe": [ + 4.0, + -5.451022880445972, + 5.895973191825334 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.46875, + "legs": [ + { + "side": "right", + "phase": 0.46875, + "contact": false, + "angle": 0.7810592651367188, + "hip": [ + -2.1, + 0, + 26.15588571617311 + ], + "knee": [ + -3.05, + 10.203166558993354, + 17.367092160204255 + ], + "ankle": [ + -4.0, + 11.560305798910447, + 3.9691194373078122 + ], + "heel": [ + -4.0, + 9.019643185637126, + 1.0034772664592837 + ], + "toe": [ + -4.0, + 19.018714035295414, + 0.8671609302634504 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.21875, + "contact": false, + "angle": 35.45665740966797, + "hip": [ + 2.1, + 0, + 26.15588571617311 + ], + "knee": [ + 3.05, + 9.132846577994423, + 16.259491757623586 + ], + "ankle": [ + 4.0, + -4.333685817181288, + 16.257200538926643 + ], + "heel": [ + 4.0, + -8.110333047586515, + 15.263754165400352 + ], + "toe": [ + 4.0, + 0.035212655096725776, + 9.462884816285634 + ], + "contactWorld": null + } + ] + } +] diff --git a/docs/review/player-live-capture/source-record.json b/docs/review/player-live-capture/source-record.json new file mode 100644 index 00000000..1cbb7d22 --- /dev/null +++ b/docs/review/player-live-capture/source-record.json @@ -0,0 +1,39 @@ +{ + "status": "TEST_ONLY_SOURCE_CANDIDATE_NOT_ADMITTED", + "sourceRevision": "718b392", + "specRevision": "d602775", + "sourceCanvas": [ + 384, + 416 + ], + "rootPixels": [ + 192, + 336 + ], + "logicalSize": [ + 64, + 69.33333333333333 + ], + "cycleSeconds": 0.5, + "frameDurationSeconds": 0.03125, + "projection": "ground x unchanged, ground y times 0.5; upright player keeps uniform scale; no diagonal view claim", + "sourceFiles": { + "player-source-s-00.png": "aa69a7b65117cffbf05910756b223ed9a61e90feef62883c71a27f3efe74efa6", + "player-source-s-01.png": "0fe42906fcfd60d91454b64cd3fc851e0ea3033a2bd0299b65411f3d2727e06d", + "player-source-s-02.png": "18eb0c77e1cb4cc61c0e3e255e467852d4c5470e19ada859364215ae1140db01", + "player-source-s-03.png": "6425d11ef5e05e50571f5b24870d7deb15d3a02dec91c9fee46643d8c3ae7b62", + "player-source-s-04.png": "65063ba779eb0f39fae2ab67121aaa0a743999ab33279f579782a2772175c19f", + "player-source-s-05.png": "057f8b6170cca65631984687377246dd29df92443b541f160a0d35bf07ff1ab1", + "player-source-s-06.png": "cd0bef603a3494a392574739392c225477cf13abc1c1354e84ea1296d3da262f", + "player-source-s-07.png": "36eea1493088c6345433e5ae2a643cf368137af543a94a717fc1f3025f63eeb2", + "player-source-s-08.png": "d32b59a011e926a045b0674b3d393b4d1599a98efbf3ed4e02eeafec8c7b31d5", + "player-source-s-09.png": "1cb5b660b9719888f3a5ef3e6f3ee4df8fb09a3f0601319f681d1178e87939cc", + "player-source-s-10.png": "42c2c787d548c7011cb29864dc225daf0fd32147013199b40fb563fbc34f04be", + "player-source-s-11.png": "c1bd1ae2a3fba255a31fd10b9be0fa22b91e6105c4d2b585f7163c8d03b39e21", + "player-source-s-12.png": "7a4c6cb9d43fdfa8125e80583a7b1e73e6e7328269db9c43b11a9ac080e373f3", + "player-source-s-13.png": "27eea525a5b9d9b3afae51a4414831ad8a9521c8587af3e8a234a761f08476b5", + "player-source-s-14.png": "aa929e8f60bab59d398d590c08d9882d08f9a4ae53eae4db8482d73643f2dfc7", + "player-source-s-15.png": "4afd2c2b090116cff77a0c92cdf954da63edff7cae7db92ce388aeb035e19d90", + "player-source-s-poses.json": "2bb65726c53e767f066cda2bba53d68c4f39eb7cca02c88e4b6070c8a48babb6" + } +} diff --git a/docs/review/player-low-recovery/README.md b/docs/review/player-low-recovery/README.md new file mode 100644 index 00000000..59899294 --- /dev/null +++ b/docs/review/player-low-recovery/README.md @@ -0,0 +1,19 @@ +# Lower-recovery renderer validation + +## Verified + +The new 16-frame source and matching pose metadata were reconciled into the test-only renderer fixture. See source-record.json for exact hashes. App run Test-SSRuntime-2026.10.15_17-42-31--0700 passed 111 named tests / 113 executions, zero failures or skips. Full/half/quarter input and all three Reduced Motion captures each observed all 16 textures. Prepared outline playback had no texture readbacks. This is post-action simulator evidence, not physical scanout or device acceptance. + +The core runner completed 773 tests / 109 suites with all tests passed in 619.924 seconds. However, the swift test command exited 1 after sandbox-exec denied manifest evaluation (sandbox_apply: Operation not permitted). Preserve this as test-runner success with a command-level environment failure, not a clean command pass. App and core tests overlapped, so callback timing is retained as loaded-host evidence, not an isolated performance result. Stage-4 p95 ranges from 16.67 to 33.33 ms and maxima reach 43.84 ms. No sustained 60-fps claim is made. + +## Contact gap + +Projected authored support-toe measurements show displacement within support observations. Full-input clean review spans 2.50–2.75 logical pixels per support segment; half input spans 7.25 and quarter input spans 7.75–8.75. Other full-input runs reach 4.75. These values include frame holds, sampling phase and whole-unit presentation rounding. They are not pixel-tracked contact or an acceptance threshold. Single-sample segments report null, never zero drift. + +Normal/quarter-speed visual review, contact acceptance and the interaction matrix remain open. Frame coverage alone must not close BP-008. Shared scene and production admission remain deferred. + +## Researched next comparison + +Apple documents action-speed scaling: https://developer.apple.com/documentation/spritekit/skaction . Unity distinguishes animation pose from root trajectory: https://docs.unity.com/en-us/engine/6000.7/manual/animation-section/animation-mecanim/avatar-creationand-setup/root-motion . These mechanisms do not prescribe an SS policy. + +Proposed next experiment: compare the exact authored-cadence control against presentation phase driven by actual post-collision distance. Keep simulation authoritative and unchanged; do not use desired joystick speed when blocked. Assess fixed frame holds and stop/start/reversal separately. This proposal must be reconciled with the existing rational timing contract before runtime adoption. No phase policy or numerical slip tolerance has been inferred or applied. diff --git a/docs/review/player-low-recovery/app-summary.json b/docs/review/player-low-recovery/app-summary.json new file mode 100644 index 00000000..43ba1d29 --- /dev/null +++ b/docs/review/player-low-recovery/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 113, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792111653.454, + "passedTests" : 111, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792111351.804, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "26% of duration", + "text" : "1 longest test run with outlier durations exceeding 18.53s (three standard deviations)" + } + ], + "totalTestCount" : 111 +} diff --git a/docs/review/player-low-recovery/cadence-research.md b/docs/review/player-low-recovery/cadence-research.md new file mode 100644 index 00000000..cf40797d --- /dev/null +++ b/docs/review/player-low-recovery/cadence-research.md @@ -0,0 +1,15 @@ +# Cadence comparison — proposed experiment + +The existing BP-008 contract requires comparing partial-input policies before adoption. The recorded south route now has an offline comparison: see phase-comparison.json. No runtime playback policy has changed. + +| Input | Existing support range | Distance-phase counterfactual | +|---|---:|---:| +| Full | 4.50–4.75 px | 2.25–2.75 px | +| Half | 7.25 px | 3.50 px | +| Quarter | 7.75–8.75 px | 3.50 px | + +Ranges are modeled projected toe displacement over support observations, not pixel tracking. Each comparison uses exactly the same recorded roots; reduced cadence yields fewer support intervals. All 16 frame identities occur in each record. A held frame cannot continuously keep its foot fixed while its root travels. This comparison establishes a useful next experiment, not an acceptance threshold. + +Apple provides action rate control: https://developer.apple.com/documentation/spritekit/skaction . Unity compares movement-driven and animation-driven approaches: https://docs.unity.cn/540/Documentation/Manual/nav-CouplingAnimationAndNavigation.html . SS must keep gameplay authoritative; neither source selects SS stride or partial-input appearance. + +Next: test-only live comparison with explicit interruption/reset semantics and original cadence control, then normal/quarter-speed visual review. Do not admit distance scheduling, change timing metadata, or stretch sprites on this evidence alone. diff --git a/docs/review/player-low-recovery/comparison.json b/docs/review/player-low-recovery/comparison.json new file mode 100644 index 00000000..72ee6854 --- /dev/null +++ b/docs/review/player-low-recovery/comparison.json @@ -0,0 +1,8261 @@ +[ + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.207686185836792, + "frameCosts": [ + { + "renderSeconds": 0.2039719820022583, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0033529996871948242, + "simulationSeconds": 0.08039200305938721, + "tick": 13 + }, + { + "renderSeconds": 0.002474069595336914, + "simulationSeconds": 0.03752791881561279, + "tick": 19 + }, + { + "renderSeconds": 0.002559065818786621, + "simulationSeconds": 0.019076943397521973, + "tick": 22 + }, + { + "renderSeconds": 0.0027910470962524414, + "simulationSeconds": 0.006078958511352539, + "tick": 23 + }, + { + "renderSeconds": 0.0029420852661132812, + "simulationSeconds": 0.01264190673828125, + "tick": 25 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006331920623779297, + "tick": 26 + }, + { + "renderSeconds": 0.002541065216064453, + "simulationSeconds": 0.006373882293701172, + "tick": 27 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006124019622802734, + "tick": 28 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.006404995918273926, + "tick": 29 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.006189942359924316, + "tick": 30 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.006286025047302246, + "tick": 31 + }, + { + "renderSeconds": 0.0025169849395751953, + "simulationSeconds": 0.006345987319946289, + "tick": 32 + }, + { + "renderSeconds": 0.0026988983154296875, + "simulationSeconds": 0.006381034851074219, + "tick": 33 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.006054043769836426, + "tick": 34 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.0063010454177856445, + "tick": 35 + }, + { + "renderSeconds": 0.0032379627227783203, + "simulationSeconds": 0.006304025650024414, + "tick": 36 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.006652951240539551, + "tick": 37 + }, + { + "renderSeconds": 0.003371000289916992, + "simulationSeconds": 0.006361961364746094, + "tick": 38 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0.007120966911315918, + "tick": 39 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006138920783996582, + "tick": 40 + }, + { + "renderSeconds": 0.002849102020263672, + "simulationSeconds": 0.0064449310302734375, + "tick": 41 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.006132960319519043, + "tick": 42 + }, + { + "renderSeconds": 0.003014087677001953, + "simulationSeconds": 0.0062749385833740234, + "tick": 43 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006437063217163086, + "tick": 44 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.0067119598388671875, + "tick": 45 + }, + { + "renderSeconds": 0.0029261112213134766, + "simulationSeconds": 0.006740927696228027, + "tick": 46 + }, + { + "renderSeconds": 0.0026210546493530273, + "simulationSeconds": 0.012218952178955078, + "tick": 47 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0.006299018859863281, + "tick": 48 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.006549954414367676, + "tick": 49 + }, + { + "renderSeconds": 0.00244903564453125, + "simulationSeconds": 0.006599068641662598, + "tick": 50 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006080985069274902, + "tick": 51 + }, + { + "renderSeconds": 0.0024099349975585938, + "simulationSeconds": 0.006232023239135742, + "tick": 52 + }, + { + "renderSeconds": 0.0025970935821533203, + "simulationSeconds": 0.00595700740814209, + "tick": 53 + }, + { + "renderSeconds": 0.0032739639282226562, + "simulationSeconds": 0.007146000862121582, + "tick": 54 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.006942033767700195, + "tick": 55 + }, + { + "renderSeconds": 0.00385892391204834, + "simulationSeconds": 0.008035063743591309, + "tick": 56 + }, + { + "renderSeconds": 0.0036020278930664062, + "simulationSeconds": 0.008826971054077148, + "tick": 57 + }, + { + "renderSeconds": 0.003206014633178711, + "simulationSeconds": 0.007742047309875488, + "tick": 58 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.007302999496459961, + "tick": 59 + }, + { + "renderSeconds": 0.0038139820098876953, + "simulationSeconds": 0.007650971412658691, + "tick": 60 + }, + { + "renderSeconds": 0.0032889842987060547, + "simulationSeconds": 0.007524013519287109, + "tick": 61 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.007121920585632324, + "tick": 62 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.007081031799316406, + "tick": 63 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.0062520503997802734, + "tick": 64 + }, + { + "renderSeconds": 0.00291597843170166, + "simulationSeconds": 0.0061539411544799805, + "tick": 65 + }, + { + "renderSeconds": 0.0028039216995239258, + "simulationSeconds": 0.006570935249328613, + "tick": 66 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0.0064269304275512695, + "tick": 67 + }, + { + "renderSeconds": 0.0029050111770629883, + "simulationSeconds": 0.006493926048278809, + "tick": 68 + }, + { + "renderSeconds": 0.0038460493087768555, + "simulationSeconds": 0.006430983543395996, + "tick": 69 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.006317019462585449, + "tick": 70 + }, + { + "renderSeconds": 0.0027000904083251953, + "simulationSeconds": 0.011309027671813965, + "tick": 71 + }, + { + "renderSeconds": 0.002601027488708496, + "simulationSeconds": 0.006613016128540039, + "tick": 72 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.006866931915283203, + "tick": 73 + }, + { + "renderSeconds": 0.0031279325485229492, + "simulationSeconds": 0.007072925567626953, + "tick": 74 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.0067479610443115234, + "tick": 75 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.0069580078125, + "tick": 76 + }, + { + "renderSeconds": 0.0030480623245239258, + "simulationSeconds": 0.00613093376159668, + "tick": 77 + }, + { + "renderSeconds": 0.0027260780334472656, + "simulationSeconds": 0.007040977478027344, + "tick": 78 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.006314992904663086, + "tick": 79 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.01276099681854248, + "tick": 80 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.006661057472229004, + "tick": 81 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0.006698012351989746, + "tick": 82 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.006260037422180176, + "tick": 83 + }, + { + "renderSeconds": 0.00274503231048584, + "simulationSeconds": 0.0062830448150634766, + "tick": 84 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.006164908409118652, + "tick": 85 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.006110072135925293, + "tick": 86 + }, + { + "renderSeconds": 0.003146052360534668, + "simulationSeconds": 0.007019996643066406, + "tick": 87 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.006016969680786133, + "tick": 88 + }, + { + "renderSeconds": 0.0030090808868408203, + "simulationSeconds": 0.006821990013122559, + "tick": 89 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.006389021873474121, + "tick": 90 + }, + { + "renderSeconds": 0.007014036178588867, + "simulationSeconds": 0.0061109066009521484, + "tick": 91 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.006001949310302734, + "tick": 92 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.0063610076904296875, + "tick": 93 + }, + { + "renderSeconds": 0.002660989761352539, + "simulationSeconds": 0.005959987640380859, + "tick": 94 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006533026695251465, + "tick": 95 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.006358027458190918, + "tick": 96 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.0065610408782958984, + "tick": 97 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.00616300106048584, + "tick": 98 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.006175994873046875, + "tick": 99 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.006065964698791504, + "tick": 100 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.006494998931884766, + "tick": 101 + }, + { + "renderSeconds": 0.0031380653381347656, + "simulationSeconds": 0.006353020668029785, + "tick": 102 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.006673932075500488, + "tick": 103 + }, + { + "renderSeconds": 0.0028020143508911133, + "simulationSeconds": 0.006219983100891113, + "tick": 104 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.006518006324768066, + "tick": 105 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.006233930587768555, + "tick": 106 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.0065299272537231445, + "tick": 107 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.006332993507385254, + "tick": 108 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.0064029693603515625, + "tick": 109 + }, + { + "renderSeconds": 0.0026339292526245117, + "simulationSeconds": 0.0063860416412353516, + "tick": 110 + }, + { + "renderSeconds": 0.0030090808868408203, + "simulationSeconds": 0.0066869258880615234, + "tick": 111 + }, + { + "renderSeconds": 0.0029349327087402344, + "simulationSeconds": 0.006217002868652344, + "tick": 112 + }, + { + "renderSeconds": 0.0030410289764404297, + "simulationSeconds": 0.006435036659240723, + "tick": 113 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.00625300407409668, + "tick": 114 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006406068801879883, + "tick": 115 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.006343960762023926, + "tick": 116 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006381988525390625, + "tick": 117 + }, + { + "renderSeconds": 0.0031681060791015625, + "simulationSeconds": 0.0064239501953125, + "tick": 118 + }, + { + "renderSeconds": 0.003098011016845703, + "simulationSeconds": 0.0062580108642578125, + "tick": 119 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0.0061719417572021484, + "tick": 120 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0.006562948226928711, + "tick": 121 + }, + { + "renderSeconds": 0.0026990175247192383, + "simulationSeconds": 0.0064389705657958984, + "tick": 122 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.006505012512207031, + "tick": 123 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.006387948989868164, + "tick": 124 + }, + { + "renderSeconds": 0.0029299259185791016, + "simulationSeconds": 0.006844997406005859, + "tick": 125 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.0065310001373291016, + "tick": 126 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.006453037261962891, + "tick": 127 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.0065490007400512695, + "tick": 128 + }, + { + "renderSeconds": 0.0025429725646972656, + "simulationSeconds": 0.01291191577911377, + "tick": 129 + }, + { + "renderSeconds": 0.002617955207824707, + "simulationSeconds": 0.0062999725341796875, + "tick": 130 + }, + { + "renderSeconds": 0.0028960704803466797, + "simulationSeconds": 0.006395936012268066, + "tick": 131 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0.006126999855041504, + "tick": 132 + }, + { + "renderSeconds": 0.0022400617599487305, + "simulationSeconds": 0.006319999694824219, + "tick": 133 + }, + { + "renderSeconds": 0.0025099515914916992, + "simulationSeconds": 0.00627899169921875, + "tick": 134 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.0066449642181396484, + "tick": 135 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.006361961364746094, + "tick": 136 + }, + { + "renderSeconds": 0.0024650096893310547, + "simulationSeconds": 0.006039977073669434, + "tick": 137 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006242990493774414, + "tick": 138 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.005946040153503418, + "tick": 139 + }, + { + "renderSeconds": 0.0029370784759521484, + "simulationSeconds": 0.0059850215911865234, + "tick": 140 + }, + { + "renderSeconds": 0.0024309158325195312, + "simulationSeconds": 0.006997942924499512, + "tick": 141 + }, + { + "renderSeconds": 0.002418041229248047, + "simulationSeconds": 0.0060759782791137695, + "tick": 142 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.006338000297546387, + "tick": 143 + }, + { + "renderSeconds": 0.0025649070739746094, + "simulationSeconds": 0.006273031234741211, + "tick": 144 + }, + { + "renderSeconds": 0.0023729801177978516, + "simulationSeconds": 0.0059850215911865234, + "tick": 145 + }, + { + "renderSeconds": 0.0025190114974975586, + "simulationSeconds": 0.006058931350708008, + "tick": 146 + }, + { + "renderSeconds": 0.002674102783203125, + "simulationSeconds": 0.010473966598510742, + "tick": 147 + }, + { + "renderSeconds": 0.002798914909362793, + "simulationSeconds": 0.006434082984924316, + "tick": 148 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006374001502990723, + "tick": 149 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.007340908050537109, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 200, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006149649620056152, + "preparationSeconds": 0.3890150785446167, + "reducedMotion": false, + "renderSeconds": 0.57850182056427, + "repetition": 1, + "scenePreparationSeconds": 0, + "simulationSeconds": 0.9942231178283691, + "snapshotBuildCount": 131, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 222.3984583397396, + "postActionRecords": 131, + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.17504608631134033, + "frameCosts": [ + { + "renderSeconds": 0.22745800018310547, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0033680200576782227, + "simulationSeconds": 0.09912300109863281, + "tick": 15 + }, + { + "renderSeconds": 0.0026439428329467773, + "simulationSeconds": 0.042694091796875, + "tick": 22 + }, + { + "renderSeconds": 0.002814054489135742, + "simulationSeconds": 0.01938498020172119, + "tick": 25 + }, + { + "renderSeconds": 0.004046082496643066, + "simulationSeconds": 0.012794971466064453, + "tick": 27 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.012300968170166016, + "tick": 29 + }, + { + "renderSeconds": 0.0026990175247192383, + "simulationSeconds": 0.012176990509033203, + "tick": 31 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.012933969497680664, + "tick": 33 + }, + { + "renderSeconds": 0.0024930238723754883, + "simulationSeconds": 0.0122300386428833, + "tick": 35 + }, + { + "renderSeconds": 0.0033379793167114258, + "simulationSeconds": 0.006554961204528809, + "tick": 36 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.006400942802429199, + "tick": 37 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.00644993782043457, + "tick": 38 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.006760001182556152, + "tick": 39 + }, + { + "renderSeconds": 0.009236931800842285, + "simulationSeconds": 0.006760001182556152, + "tick": 40 + }, + { + "renderSeconds": 0.0026149749755859375, + "simulationSeconds": 0.013080000877380371, + "tick": 42 + }, + { + "renderSeconds": 0.003246903419494629, + "simulationSeconds": 0.006242036819458008, + "tick": 43 + }, + { + "renderSeconds": 0.002814054489135742, + "simulationSeconds": 0.0192110538482666, + "tick": 45 + }, + { + "renderSeconds": 0.0025610923767089844, + "simulationSeconds": 0.01946389675140381, + "tick": 48 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.0067310333251953125, + "tick": 49 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0.02757704257965088, + "tick": 51 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.012199997901916504, + "tick": 53 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.014753937721252441, + "tick": 55 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.01267993450164795, + "tick": 57 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006279945373535156, + "tick": 58 + }, + { + "renderSeconds": 0.0027440786361694336, + "simulationSeconds": 0.007018923759460449, + "tick": 59 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 0.0062760114669799805, + "tick": 60 + }, + { + "renderSeconds": 0.0030410289764404297, + "simulationSeconds": 0.006310939788818359, + "tick": 61 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.0063669681549072266, + "tick": 62 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.006403923034667969, + "tick": 63 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006463050842285156, + "tick": 64 + }, + { + "renderSeconds": 0.0031380653381347656, + "simulationSeconds": 0.006201982498168945, + "tick": 65 + }, + { + "renderSeconds": 0.002888917922973633, + "simulationSeconds": 0.006061077117919922, + "tick": 66 + }, + { + "renderSeconds": 0.0029109716415405273, + "simulationSeconds": 0.006342053413391113, + "tick": 67 + }, + { + "renderSeconds": 0.0028960704803466797, + "simulationSeconds": 0.006556034088134766, + "tick": 68 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.006560087203979492, + "tick": 69 + }, + { + "renderSeconds": 0.0033110380172729492, + "simulationSeconds": 0.0062940120697021484, + "tick": 70 + }, + { + "renderSeconds": 0.0031080245971679688, + "simulationSeconds": 0.00625300407409668, + "tick": 71 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.0064040422439575195, + "tick": 72 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0.006732940673828125, + "tick": 73 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.0107879638671875, + "tick": 74 + }, + { + "renderSeconds": 0.003587007522583008, + "simulationSeconds": 0.006312966346740723, + "tick": 75 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.006533026695251465, + "tick": 76 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.006237983703613281, + "tick": 77 + }, + { + "renderSeconds": 0.002931952476501465, + "simulationSeconds": 0.006426095962524414, + "tick": 78 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.006494998931884766, + "tick": 79 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.006200075149536133, + "tick": 80 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.006759047508239746, + "tick": 81 + }, + { + "renderSeconds": 0.00303494930267334, + "simulationSeconds": 0.006440997123718262, + "tick": 82 + }, + { + "renderSeconds": 0.0030530691146850586, + "simulationSeconds": 0.006556987762451172, + "tick": 83 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.006181955337524414, + "tick": 84 + }, + { + "renderSeconds": 0.002479076385498047, + "simulationSeconds": 0.0092240571975708, + "tick": 85 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0.0063629150390625, + "tick": 86 + }, + { + "renderSeconds": 0.0029480457305908203, + "simulationSeconds": 0.006327986717224121, + "tick": 87 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.0063430070877075195, + "tick": 88 + }, + { + "renderSeconds": 0.0025119781494140625, + "simulationSeconds": 0.0066879987716674805, + "tick": 89 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0.0065059661865234375, + "tick": 90 + }, + { + "renderSeconds": 0.00247800350189209, + "simulationSeconds": 0.0064280033111572266, + "tick": 91 + }, + { + "renderSeconds": 0.002729058265686035, + "simulationSeconds": 0.0063970088958740234, + "tick": 92 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.0062580108642578125, + "tick": 93 + }, + { + "renderSeconds": 0.002836942672729492, + "simulationSeconds": 0.006399035453796387, + "tick": 94 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.0066030025482177734, + "tick": 95 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.006045937538146973, + "tick": 96 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.006510019302368164, + "tick": 97 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.006437063217163086, + "tick": 98 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.006296992301940918, + "tick": 99 + }, + { + "renderSeconds": 0.0025469064712524414, + "simulationSeconds": 0.006348967552185059, + "tick": 100 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.0063980817794799805, + "tick": 101 + }, + { + "renderSeconds": 0.003504037857055664, + "simulationSeconds": 0.006351947784423828, + "tick": 102 + }, + { + "renderSeconds": 0.0034160614013671875, + "simulationSeconds": 0.006351947784423828, + "tick": 103 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0.006154060363769531, + "tick": 104 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.006329059600830078, + "tick": 105 + }, + { + "renderSeconds": 0.0030580759048461914, + "simulationSeconds": 0.006760954856872559, + "tick": 106 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.006309032440185547, + "tick": 107 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.006312012672424316, + "tick": 108 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 0.0063430070877075195, + "tick": 109 + }, + { + "renderSeconds": 0.0031980276107788086, + "simulationSeconds": 0.006659984588623047, + "tick": 110 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.006812930107116699, + "tick": 111 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.006342053413391113, + "tick": 112 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.006093025207519531, + "tick": 113 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.007012009620666504, + "tick": 114 + }, + { + "renderSeconds": 0.00241696834564209, + "simulationSeconds": 0.006600022315979004, + "tick": 115 + }, + { + "renderSeconds": 0.0026519298553466797, + "simulationSeconds": 0.006376028060913086, + "tick": 116 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.006291985511779785, + "tick": 117 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.006862998008728027, + "tick": 118 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.006497979164123535, + "tick": 119 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.006183028221130371, + "tick": 120 + }, + { + "renderSeconds": 0.004088044166564941, + "simulationSeconds": 0.006703972816467285, + "tick": 121 + }, + { + "renderSeconds": 0.0029140710830688477, + "simulationSeconds": 0.0063610076904296875, + "tick": 122 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.006273984909057617, + "tick": 123 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.006626009941101074, + "tick": 124 + }, + { + "renderSeconds": 0.0025949478149414062, + "simulationSeconds": 0.0063190460205078125, + "tick": 125 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.006406068801879883, + "tick": 126 + }, + { + "renderSeconds": 0.0024880170822143555, + "simulationSeconds": 0.006222963333129883, + "tick": 127 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.00642704963684082, + "tick": 128 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.00625300407409668, + "tick": 129 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.006783008575439453, + "tick": 130 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.007203102111816406, + "tick": 131 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.006576061248779297, + "tick": 132 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.006322026252746582, + "tick": 133 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.0068749189376831055, + "tick": 134 + }, + { + "renderSeconds": 0.0024889707565307617, + "simulationSeconds": 0.006334066390991211, + "tick": 135 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.0063838958740234375, + "tick": 136 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.006125092506408691, + "tick": 137 + }, + { + "renderSeconds": 0.002545952796936035, + "simulationSeconds": 0.0064280033111572266, + "tick": 138 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.006173968315124512, + "tick": 139 + }, + { + "renderSeconds": 0.002762913703918457, + "simulationSeconds": 0.006128072738647461, + "tick": 140 + }, + { + "renderSeconds": 0.002581954002380371, + "simulationSeconds": 0.00633394718170166, + "tick": 141 + }, + { + "renderSeconds": 0.002765059471130371, + "simulationSeconds": 0.0062160491943359375, + "tick": 142 + }, + { + "renderSeconds": 0.002908945083618164, + "simulationSeconds": 0.005953073501586914, + "tick": 143 + }, + { + "renderSeconds": 0.002829909324645996, + "simulationSeconds": 0.00633692741394043, + "tick": 144 + }, + { + "renderSeconds": 0.00277101993560791, + "simulationSeconds": 0.005938053131103516, + "tick": 145 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0.0061299800872802734, + "tick": 146 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.006060004234313965, + "tick": 147 + }, + { + "renderSeconds": 0.002461075782775879, + "simulationSeconds": 0.00678706169128418, + "tick": 148 + }, + { + "renderSeconds": 0.002830028533935547, + "simulationSeconds": 0.006245017051696777, + "tick": 149 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.006031990051269531, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 170, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004704594612121582, + "preparationSeconds": 0.37346601486206055, + "reducedMotion": false, + "renderSeconds": 0.5616883039474487, + "repetition": 2, + "scenePreparationSeconds": 0, + "simulationSeconds": 0.9911375045776367, + "snapshotBuildCount": 116, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 37.188916670857, + "callbackMaxMS": 259.98037500539795, + "postActionRecords": 116, + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 16383, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.24102723598480225, + "frameCosts": [ + { + "renderSeconds": 0.000944972038269043, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0008759498596191406, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010570287704467773, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008509159088134766, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0032510757446289062, + "simulationSeconds": 0.005480051040649414, + "tick": 1 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.012240052223205566, + "tick": 3 + }, + { + "renderSeconds": 0.0027390718460083008, + "simulationSeconds": 0.005983948707580566, + "tick": 4 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.005977988243103027, + "tick": 5 + }, + { + "renderSeconds": 0.0032960176467895508, + "simulationSeconds": 0.006487011909484863, + "tick": 6 + }, + { + "renderSeconds": 0.0030950307846069336, + "simulationSeconds": 0.006425976753234863, + "tick": 7 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0.006273984909057617, + "tick": 8 + }, + { + "renderSeconds": 0.0029369592666625977, + "simulationSeconds": 0.006478071212768555, + "tick": 9 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.013106942176818848, + "tick": 11 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.007001042366027832, + "tick": 12 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.007823944091796875, + "tick": 13 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.006175994873046875, + "tick": 14 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.006303071975708008, + "tick": 15 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.006441950798034668, + "tick": 16 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.012707948684692383, + "tick": 18 + }, + { + "renderSeconds": 0.002891063690185547, + "simulationSeconds": 0.006277918815612793, + "tick": 19 + }, + { + "renderSeconds": 0.0031130313873291016, + "simulationSeconds": 0.006953001022338867, + "tick": 20 + }, + { + "renderSeconds": 0.002913951873779297, + "simulationSeconds": 0.006493926048278809, + "tick": 21 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.006999969482421875, + "tick": 22 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0030660629272460938, + "simulationSeconds": 0.006497979164123535, + "tick": 23 + }, + { + "renderSeconds": 0.0027440786361694336, + "simulationSeconds": 0.006564021110534668, + "tick": 24 + }, + { + "renderSeconds": 0.002931952476501465, + "simulationSeconds": 0.013128042221069336, + "tick": 26 + }, + { + "renderSeconds": 0.0028810501098632812, + "simulationSeconds": 0.006404995918273926, + "tick": 27 + }, + { + "renderSeconds": 0.002847909927368164, + "simulationSeconds": 0.006024956703186035, + "tick": 28 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0.006466984748840332, + "tick": 29 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.007082104682922363, + "tick": 30 + }, + { + "renderSeconds": 0.0030798912048339844, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0030270814895629883, + "simulationSeconds": 0.006235957145690918, + "tick": 31 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.013013005256652832, + "tick": 33 + }, + { + "renderSeconds": 0.0028650760650634766, + "simulationSeconds": 0.0104140043258667, + "tick": 34 + }, + { + "renderSeconds": 0.0027600526809692383, + "simulationSeconds": 0.006865024566650391, + "tick": 35 + }, + { + "renderSeconds": 0.0027080774307250977, + "simulationSeconds": 0.007200956344604492, + "tick": 36 + }, + { + "renderSeconds": 0.0030670166015625, + "simulationSeconds": 0.006775021553039551, + "tick": 37 + }, + { + "renderSeconds": 0.0032309293746948242, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 37 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006314992904663086, + "tick": 38 + }, + { + "renderSeconds": 0.0032569169998168945, + "simulationSeconds": 0.0067909955978393555, + "tick": 39 + }, + { + "renderSeconds": 0.0026410818099975586, + "simulationSeconds": 0.013094067573547363, + "tick": 41 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.00669097900390625, + "tick": 42 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.006461024284362793, + "tick": 43 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.006613016128540039, + "tick": 44 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.006468057632446289, + "tick": 45 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0026398897171020508, + "simulationSeconds": 0.006474971771240234, + "tick": 46 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.01278996467590332, + "tick": 48 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.0061190128326416016, + "tick": 49 + }, + { + "renderSeconds": 0.0029420852661132812, + "simulationSeconds": 0.006108999252319336, + "tick": 50 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.006672978401184082, + "tick": 51 + }, + { + "renderSeconds": 0.0028210878372192383, + "simulationSeconds": 0.006508946418762207, + "tick": 52 + }, + { + "renderSeconds": 0.0025739669799804688, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.005973935127258301, + "tick": 53 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.006502985954284668, + "tick": 54 + }, + { + "renderSeconds": 0.0031130313873291016, + "simulationSeconds": 0.014096975326538086, + "tick": 56 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.006657004356384277, + "tick": 57 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006378054618835449, + "tick": 58 + }, + { + "renderSeconds": 0.003065943717956543, + "simulationSeconds": 0.0071659088134765625, + "tick": 59 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0.007339000701904297, + "tick": 60 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0.007156014442443848, + "tick": 61 + }, + { + "renderSeconds": 0.002592921257019043, + "simulationSeconds": 0.01349496841430664, + "tick": 63 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.006785035133361816, + "tick": 64 + }, + { + "renderSeconds": 0.0027180910110473633, + "simulationSeconds": 0.006626009941101074, + "tick": 65 + }, + { + "renderSeconds": 0.003291010856628418, + "simulationSeconds": 0.006235003471374512, + "tick": 66 + }, + { + "renderSeconds": 0.0026628971099853516, + "simulationSeconds": 0.006008028984069824, + "tick": 67 + }, + { + "renderSeconds": 0.003018021583557129, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 67 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.006106972694396973, + "tick": 68 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.006318092346191406, + "tick": 69 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.012311935424804688, + "tick": 71 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.006880044937133789, + "tick": 72 + }, + { + "renderSeconds": 0.0044220685958862305, + "simulationSeconds": 0.0061719417572021484, + "tick": 73 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.006417036056518555, + "tick": 74 + }, + { + "renderSeconds": 0.0030510425567626953, + "simulationSeconds": 0.005946993827819824, + "tick": 75 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0.006559014320373535, + "tick": 76 + }, + { + "renderSeconds": 0.003116011619567871, + "simulationSeconds": 0.013983011245727539, + "tick": 78 + }, + { + "renderSeconds": 0.0030579566955566406, + "simulationSeconds": 0.0086899995803833, + "tick": 79 + }, + { + "renderSeconds": 0.003940939903259277, + "simulationSeconds": 0.007889986038208008, + "tick": 80 + }, + { + "renderSeconds": 0.003092050552368164, + "simulationSeconds": 0.0077779293060302734, + "tick": 81 + }, + { + "renderSeconds": 0.0034400224685668945, + "simulationSeconds": 0.006904006004333496, + "tick": 82 + }, + { + "renderSeconds": 0.0032160282135009766, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 82 + }, + { + "renderSeconds": 0.003098011016845703, + "simulationSeconds": 0.007451057434082031, + "tick": 83 + }, + { + "renderSeconds": 0.0032820701599121094, + "simulationSeconds": 0.007035970687866211, + "tick": 84 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.012304067611694336, + "tick": 86 + }, + { + "renderSeconds": 0.0026780366897583008, + "simulationSeconds": 0.006687045097351074, + "tick": 87 + }, + { + "renderSeconds": 0.00256502628326416, + "simulationSeconds": 0.0065310001373291016, + "tick": 88 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0.006456971168518066, + "tick": 89 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.006802082061767578, + "tick": 90 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.0063838958740234375, + "tick": 91 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.012682080268859863, + "tick": 93 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006844043731689453, + "tick": 94 + }, + { + "renderSeconds": 0.0027239322662353516, + "simulationSeconds": 0.006415963172912598, + "tick": 95 + }, + { + "renderSeconds": 0.00276792049407959, + "simulationSeconds": 0.006576061248779297, + "tick": 96 + }, + { + "renderSeconds": 0.0028629302978515625, + "simulationSeconds": 0.0061609745025634766, + "tick": 97 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.006612896919250488, + "tick": 98 + }, + { + "renderSeconds": 0.0030379295349121094, + "simulationSeconds": 0.006509065628051758, + "tick": 99 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0.012776970863342285, + "tick": 101 + }, + { + "renderSeconds": 0.002829909324645996, + "simulationSeconds": 0.006307005882263184, + "tick": 102 + }, + { + "renderSeconds": 0.003177046775817871, + "simulationSeconds": 0.006677985191345215, + "tick": 103 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.006757020950317383, + "tick": 104 + }, + { + "renderSeconds": 0.003699064254760742, + "simulationSeconds": 0.006863951683044434, + "tick": 105 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002726912498474121, + "simulationSeconds": 0.006691098213195801, + "tick": 106 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0.012190103530883789, + "tick": 108 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.007200956344604492, + "tick": 109 + }, + { + "renderSeconds": 0.002965092658996582, + "simulationSeconds": 0.006356000900268555, + "tick": 110 + }, + { + "renderSeconds": 0.0034639835357666016, + "simulationSeconds": 0.007122039794921875, + "tick": 111 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.007259964942932129, + "tick": 112 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 112 + }, + { + "renderSeconds": 0.0026369094848632812, + "simulationSeconds": 0.006071925163269043, + "tick": 113 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.006421089172363281, + "tick": 114 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.01237797737121582, + "tick": 116 + }, + { + "renderSeconds": 0.0026360750198364258, + "simulationSeconds": 0.00627899169921875, + "tick": 117 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.006265997886657715, + "tick": 118 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.006231904029846191, + "tick": 119 + }, + { + "renderSeconds": 0.0069539546966552734, + "simulationSeconds": 0.0065490007400512695, + "tick": 120 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.006342053413391113, + "tick": 121 + }, + { + "renderSeconds": 0.0025719404220581055, + "simulationSeconds": 0.012608051300048828, + "tick": 123 + }, + { + "renderSeconds": 0.002454996109008789, + "simulationSeconds": 0.0061730146408081055, + "tick": 124 + }, + { + "renderSeconds": 0.0025849342346191406, + "simulationSeconds": 0.00598597526550293, + "tick": 125 + }, + { + "renderSeconds": 0.0028810501098632812, + "simulationSeconds": 0.006345987319946289, + "tick": 126 + }, + { + "renderSeconds": 0.0027009248733520508, + "simulationSeconds": 0.006493926048278809, + "tick": 127 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0029140710830688477, + "simulationSeconds": 0.006204009056091309, + "tick": 128 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.006230950355529785, + "tick": 129 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.0126190185546875, + "tick": 131 + }, + { + "renderSeconds": 0.0030989646911621094, + "simulationSeconds": 0.006657004356384277, + "tick": 132 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.006407976150512695, + "tick": 133 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.006357073783874512, + "tick": 134 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006704092025756836, + "tick": 135 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0.006310939788818359, + "tick": 136 + }, + { + "renderSeconds": 0.0026140213012695312, + "simulationSeconds": 0.012305021286010742, + "tick": 138 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.007017970085144043, + "tick": 139 + }, + { + "renderSeconds": 0.0032089948654174805, + "simulationSeconds": 0.006441950798034668, + "tick": 140 + }, + { + "renderSeconds": 0.0031529664993286133, + "simulationSeconds": 0.006003022193908691, + "tick": 141 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.00622403621673584, + "tick": 142 + }, + { + "renderSeconds": 0.00260007381439209, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.006139993667602539, + "tick": 143 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.0060700178146362305, + "tick": 144 + }, + { + "renderSeconds": 0.0025670528411865234, + "simulationSeconds": 0.012506961822509766, + "tick": 146 + }, + { + "renderSeconds": 0.0024559497833251953, + "simulationSeconds": 0.006403088569641113, + "tick": 147 + }, + { + "renderSeconds": 0.002619028091430664, + "simulationSeconds": 0.006374001502990723, + "tick": 148 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.006001949310302734, + "tick": 149 + }, + { + "renderSeconds": 0.0029109716415405273, + "simulationSeconds": 0.006681919097900391, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03161350000300445, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 240, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006479024887084961, + "preparationSeconds": 0.5917650461196899, + "reducedMotion": false, + "renderSeconds": 0.43571698665618896, + "repetition": 0, + "scenePreparationSeconds": 0.21406996250152588, + "simulationSeconds": 0.981261134147644, + "snapshotBuildCount": 153, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986, + "postActionRecords": 151, + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.25052618980407715, + "frameCosts": [ + { + "renderSeconds": 0.0010509490966796875, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0008910894393920898, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011440515518188477, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011469125747680664, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.0055849552154541016, + "tick": 1 + }, + { + "renderSeconds": 0.002756953239440918, + "simulationSeconds": 0.006448984146118164, + "tick": 2 + }, + { + "renderSeconds": 0.0029718875885009766, + "simulationSeconds": 0.007275938987731934, + "tick": 3 + }, + { + "renderSeconds": 0.0033990144729614258, + "simulationSeconds": 0.007601022720336914, + "tick": 4 + }, + { + "renderSeconds": 0.0035070180892944336, + "simulationSeconds": 0.008131980895996094, + "tick": 5 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.016260981559753418, + "tick": 7 + }, + { + "renderSeconds": 0.0030339956283569336, + "simulationSeconds": 0.016317009925842285, + "tick": 9 + }, + { + "renderSeconds": 0.0032930374145507812, + "simulationSeconds": 0.007972002029418945, + "tick": 10 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 0.013126969337463379, + "tick": 12 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.006344914436340332, + "tick": 13 + }, + { + "renderSeconds": 0.0028160810470581055, + "simulationSeconds": 0.013224959373474121, + "tick": 15 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.006708979606628418, + "tick": 16 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.0062340497970581055, + "tick": 17 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.0061370134353637695, + "tick": 18 + }, + { + "renderSeconds": 0.0036579370498657227, + "simulationSeconds": 0.007017016410827637, + "tick": 19 + }, + { + "renderSeconds": 0.002949953079223633, + "simulationSeconds": 0.006319999694824219, + "tick": 20 + }, + { + "renderSeconds": 0.004412055015563965, + "simulationSeconds": 0.012554049491882324, + "tick": 22 + }, + { + "renderSeconds": 0.003078937530517578, + "simulationSeconds": 0.011820077896118164, + "tick": 24 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0, + "tick": 24 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.0066449642181396484, + "tick": 25 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.006921052932739258, + "tick": 26 + }, + { + "renderSeconds": 0.003493070602416992, + "simulationSeconds": 0.006545901298522949, + "tick": 27 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 0.006289958953857422, + "tick": 28 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.013437986373901367, + "tick": 30 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0028570890426635742, + "simulationSeconds": 0.008262991905212402, + "tick": 31 + }, + { + "renderSeconds": 0.0025960206985473633, + "simulationSeconds": 0.0067369937896728516, + "tick": 32 + }, + { + "renderSeconds": 0.002908945083618164, + "simulationSeconds": 0.006344914436340332, + "tick": 33 + }, + { + "renderSeconds": 0.0031300783157348633, + "simulationSeconds": 0.0065490007400512695, + "tick": 34 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.006571054458618164, + "tick": 35 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.012895941734313965, + "tick": 37 + }, + { + "renderSeconds": 0.003386974334716797, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0032929182052612305, + "simulationSeconds": 0.006770968437194824, + "tick": 38 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.006412029266357422, + "tick": 39 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0.006553053855895996, + "tick": 40 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.0064879655838012695, + "tick": 41 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.0063599348068237305, + "tick": 42 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0.006521940231323242, + "tick": 43 + }, + { + "renderSeconds": 0.0023900270462036133, + "simulationSeconds": 0.012562990188598633, + "tick": 45 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0031130313873291016, + "simulationSeconds": 0.007150888442993164, + "tick": 46 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.006428956985473633, + "tick": 47 + }, + { + "renderSeconds": 0.0028160810470581055, + "simulationSeconds": 0.006761908531188965, + "tick": 48 + }, + { + "renderSeconds": 0.0032619237899780273, + "simulationSeconds": 0.006410002708435059, + "tick": 49 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.006911039352416992, + "tick": 50 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.012699007987976074, + "tick": 52 + }, + { + "renderSeconds": 0.0030940771102905273, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0028579235076904297, + "simulationSeconds": 0.006466031074523926, + "tick": 53 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.006379961967468262, + "tick": 54 + }, + { + "renderSeconds": 0.002707958221435547, + "simulationSeconds": 0.006645083427429199, + "tick": 55 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006312012672424316, + "tick": 56 + }, + { + "renderSeconds": 0.002794981002807617, + "simulationSeconds": 0.006681084632873535, + "tick": 57 + }, + { + "renderSeconds": 0.003072977066040039, + "simulationSeconds": 0.00639796257019043, + "tick": 58 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.014251947402954102, + "tick": 60 + }, + { + "renderSeconds": 0.002965092658996582, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.003114938735961914, + "simulationSeconds": 0.007115960121154785, + "tick": 61 + }, + { + "renderSeconds": 0.002769947052001953, + "simulationSeconds": 0.006559014320373535, + "tick": 62 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.006378054618835449, + "tick": 63 + }, + { + "renderSeconds": 0.0052460432052612305, + "simulationSeconds": 0.007952094078063965, + "tick": 64 + }, + { + "renderSeconds": 0.0027168989181518555, + "simulationSeconds": 0.006183028221130371, + "tick": 65 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.012827038764953613, + "tick": 67 + }, + { + "renderSeconds": 0.003960967063903809, + "simulationSeconds": 0.007381081581115723, + "tick": 68 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006239056587219238, + "tick": 69 + }, + { + "renderSeconds": 0.0030111074447631836, + "simulationSeconds": 0.0065419673919677734, + "tick": 70 + }, + { + "renderSeconds": 0.0031930208206176758, + "simulationSeconds": 0.007091045379638672, + "tick": 71 + }, + { + "renderSeconds": 0.0034379959106445312, + "simulationSeconds": 0.007230997085571289, + "tick": 72 + }, + { + "renderSeconds": 0.0029109716415405273, + "simulationSeconds": 0.006330013275146484, + "tick": 73 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.01287996768951416, + "tick": 75 + }, + { + "renderSeconds": 0.0028520822525024414, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.003122091293334961, + "simulationSeconds": 0.0067369937896728516, + "tick": 76 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.00618898868560791, + "tick": 77 + }, + { + "renderSeconds": 0.003020048141479492, + "simulationSeconds": 0.007097959518432617, + "tick": 78 + }, + { + "renderSeconds": 0.0031539201736450195, + "simulationSeconds": 0.006319999694824219, + "tick": 79 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.0067789554595947266, + "tick": 80 + }, + { + "renderSeconds": 0.002685070037841797, + "simulationSeconds": 0.012483954429626465, + "tick": 82 + }, + { + "renderSeconds": 0.0029599666595458984, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.00338590145111084, + "simulationSeconds": 0.006409049034118652, + "tick": 83 + }, + { + "renderSeconds": 0.00267791748046875, + "simulationSeconds": 0.0065059661865234375, + "tick": 84 + }, + { + "renderSeconds": 0.0027800798416137695, + "simulationSeconds": 0.006266951560974121, + "tick": 85 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.0065729618072509766, + "tick": 86 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.006456971168518066, + "tick": 87 + }, + { + "renderSeconds": 0.0028390884399414062, + "simulationSeconds": 0.006551980972290039, + "tick": 88 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.01318502426147461, + "tick": 90 + }, + { + "renderSeconds": 0.003091096878051758, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.004459023475646973, + "simulationSeconds": 0.006970047950744629, + "tick": 91 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006103992462158203, + "tick": 92 + }, + { + "renderSeconds": 0.0029969215393066406, + "simulationSeconds": 0.006319999694824219, + "tick": 93 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.006353020668029785, + "tick": 94 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.007440090179443359, + "tick": 95 + }, + { + "renderSeconds": 0.0026770830154418945, + "simulationSeconds": 0.012315988540649414, + "tick": 97 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.0062819719314575195, + "tick": 98 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.00745391845703125, + "tick": 99 + }, + { + "renderSeconds": 0.0025669336318969727, + "simulationSeconds": 0.010779023170471191, + "tick": 100 + }, + { + "renderSeconds": 0.0029659271240234375, + "simulationSeconds": 0.006227016448974609, + "tick": 101 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.006515026092529297, + "tick": 102 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.006837964057922363, + "tick": 103 + }, + { + "renderSeconds": 0.0027419328689575195, + "simulationSeconds": 0.012259960174560547, + "tick": 105 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002659916877746582, + "simulationSeconds": 0.006060004234313965, + "tick": 106 + }, + { + "renderSeconds": 0.002720952033996582, + "simulationSeconds": 0.006371974945068359, + "tick": 107 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.0062950849533081055, + "tick": 108 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.006344914436340332, + "tick": 109 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.0060520172119140625, + "tick": 110 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.012997031211853027, + "tick": 112 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.006573081016540527, + "tick": 113 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.006289958953857422, + "tick": 114 + }, + { + "renderSeconds": 0.0031429529190063477, + "simulationSeconds": 0.0067130327224731445, + "tick": 115 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.00622403621673584, + "tick": 116 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.006208896636962891, + "tick": 117 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.011891007423400879, + "tick": 118 + }, + { + "renderSeconds": 0.003062009811401367, + "simulationSeconds": 0.013149023056030273, + "tick": 120 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003442049026489258, + "simulationSeconds": 0.006255984306335449, + "tick": 121 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.006479024887084961, + "tick": 122 + }, + { + "renderSeconds": 0.0029859542846679688, + "simulationSeconds": 0.0067909955978393555, + "tick": 123 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.006347060203552246, + "tick": 124 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.006322026252746582, + "tick": 125 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.012498974800109863, + "tick": 127 + }, + { + "renderSeconds": 0.0025670528411865234, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0024950504302978516, + "simulationSeconds": 0.006672024726867676, + "tick": 128 + }, + { + "renderSeconds": 0.0033069849014282227, + "simulationSeconds": 0.006461977958679199, + "tick": 129 + }, + { + "renderSeconds": 0.0028269290924072266, + "simulationSeconds": 0.006147980690002441, + "tick": 130 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0.006797075271606445, + "tick": 131 + }, + { + "renderSeconds": 0.003834962844848633, + "simulationSeconds": 0.006292104721069336, + "tick": 132 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.00630795955657959, + "tick": 133 + }, + { + "renderSeconds": 0.002520918846130371, + "simulationSeconds": 0.012410998344421387, + "tick": 135 + }, + { + "renderSeconds": 0.003138899803161621, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0025430917739868164, + "simulationSeconds": 0.006556034088134766, + "tick": 136 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.006304025650024414, + "tick": 137 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.006168961524963379, + "tick": 138 + }, + { + "renderSeconds": 0.002544999122619629, + "simulationSeconds": 0.006227970123291016, + "tick": 139 + }, + { + "renderSeconds": 0.00268399715423584, + "simulationSeconds": 0.005993008613586426, + "tick": 140 + }, + { + "renderSeconds": 0.002503037452697754, + "simulationSeconds": 0.013955950736999512, + "tick": 142 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.007156014442443848, + "tick": 143 + }, + { + "renderSeconds": 0.00280606746673584, + "simulationSeconds": 0.006255984306335449, + "tick": 144 + }, + { + "renderSeconds": 0.0028210878372192383, + "simulationSeconds": 0.0062139034271240234, + "tick": 145 + }, + { + "renderSeconds": 0.0025020837783813477, + "simulationSeconds": 0.005922913551330566, + "tick": 146 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.006494045257568359, + "tick": 147 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.0060280561447143555, + "tick": 148 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0.01267695426940918, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.05246820833417587, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 230, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.007369279861450195, + "preparationSeconds": 0.6014699935913086, + "reducedMotion": false, + "renderSeconds": 0.427595853805542, + "repetition": 0, + "scenePreparationSeconds": 0.21117699146270752, + "simulationSeconds": 0.9964805841445923, + "snapshotBuildCount": 148, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 38.12987499986775, + "postActionRecords": 146, + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics" + }, + { + "axis": 8191, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.22781944274902344, + "frameCosts": [ + { + "renderSeconds": 0.0008679628372192383, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010039806365966797, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010379552841186523, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008630752563476562, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 0.005602002143859863, + "tick": 1 + }, + { + "renderSeconds": 0.0033360719680786133, + "simulationSeconds": 0.007197976112365723, + "tick": 2 + }, + { + "renderSeconds": 0.0038110017776489258, + "simulationSeconds": 0.0074280500411987305, + "tick": 3 + }, + { + "renderSeconds": 0.0037959814071655273, + "simulationSeconds": 0.017109990119934082, + "tick": 5 + }, + { + "renderSeconds": 0.003762960433959961, + "simulationSeconds": 0.01801598072052002, + "tick": 7 + }, + { + "renderSeconds": 0.0033190250396728516, + "simulationSeconds": 0.007809996604919434, + "tick": 8 + }, + { + "renderSeconds": 0.0031870603561401367, + "simulationSeconds": 0.007171034812927246, + "tick": 9 + }, + { + "renderSeconds": 0.003483891487121582, + "simulationSeconds": 0.007136106491088867, + "tick": 10 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.01326608657836914, + "tick": 12 + }, + { + "renderSeconds": 0.002957940101623535, + "simulationSeconds": 0.006610989570617676, + "tick": 13 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.0064400434494018555, + "tick": 14 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.007480025291442871, + "tick": 15 + }, + { + "renderSeconds": 0.0029369592666625977, + "simulationSeconds": 9.5367431640625e-07, + "tick": 15 + }, + { + "renderSeconds": 0.0026929378509521484, + "simulationSeconds": 0.013265013694763184, + "tick": 16 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.018339991569519043, + "tick": 19 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.012398004531860352, + "tick": 21 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.006654024124145508, + "tick": 22 + }, + { + "renderSeconds": 0.003249049186706543, + "simulationSeconds": 0.006286978721618652, + "tick": 23 + }, + { + "renderSeconds": 0.0033739805221557617, + "simulationSeconds": 0.00678098201751709, + "tick": 24 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0.020215988159179688, + "tick": 27 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.013954997062683105, + "tick": 29 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 0.007272958755493164, + "tick": 30 + }, + { + "renderSeconds": 0.0030410289764404297, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.006075024604797363, + "simulationSeconds": 0.006802082061767578, + "tick": 31 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.007493019104003906, + "tick": 32 + }, + { + "renderSeconds": 0.0033109188079833984, + "simulationSeconds": 0.00660097599029541, + "tick": 33 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.013496994972229004, + "tick": 35 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0.012722969055175781, + "tick": 37 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.012843966484069824, + "tick": 39 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0.007951021194458008, + "tick": 40 + }, + { + "renderSeconds": 0.003159046173095703, + "simulationSeconds": 0.014801025390625, + "tick": 42 + }, + { + "renderSeconds": 0.003053903579711914, + "simulationSeconds": 0.01463305950164795, + "tick": 44 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.007593989372253418, + "tick": 45 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.006525993347167969, + "tick": 46 + }, + { + "renderSeconds": 0.002904057502746582, + "simulationSeconds": 0.0065538883209228516, + "tick": 47 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0.006116032600402832, + "tick": 48 + }, + { + "renderSeconds": 0.002519965171813965, + "simulationSeconds": 0.013342022895812988, + "tick": 50 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006295919418334961, + "tick": 51 + }, + { + "renderSeconds": 0.002926945686340332, + "simulationSeconds": 0.00710904598236084, + "tick": 52 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0030710697174072266, + "simulationSeconds": 0.00680696964263916, + "tick": 53 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.006410956382751465, + "tick": 54 + }, + { + "renderSeconds": 0.003345966339111328, + "simulationSeconds": 0.006846070289611816, + "tick": 55 + }, + { + "renderSeconds": 0.002404928207397461, + "simulationSeconds": 0.013273000717163086, + "tick": 57 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 0.006556034088134766, + "tick": 58 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.006656050682067871, + "tick": 59 + }, + { + "renderSeconds": 0.0033769607543945312, + "simulationSeconds": 0.007997989654541016, + "tick": 60 + }, + { + "renderSeconds": 0.0030999183654785156, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 60 + }, + { + "renderSeconds": 0.003210902214050293, + "simulationSeconds": 0.007205009460449219, + "tick": 61 + }, + { + "renderSeconds": 0.0037459135055541992, + "simulationSeconds": 0.008817911148071289, + "tick": 62 + }, + { + "renderSeconds": 0.003942966461181641, + "simulationSeconds": 0.010241031646728516, + "tick": 63 + }, + { + "renderSeconds": 0.0033429861068725586, + "simulationSeconds": 0.015367984771728516, + "tick": 65 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.013955950736999512, + "tick": 67 + }, + { + "renderSeconds": 0.002679109573364258, + "simulationSeconds": 0.012282967567443848, + "tick": 69 + }, + { + "renderSeconds": 0.004153013229370117, + "simulationSeconds": 0.006258964538574219, + "tick": 70 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.01981806755065918, + "tick": 72 + }, + { + "renderSeconds": 0.002568960189819336, + "simulationSeconds": 0.012212991714477539, + "tick": 74 + }, + { + "renderSeconds": 0.0032290220260620117, + "simulationSeconds": 0.006679058074951172, + "tick": 75 + }, + { + "renderSeconds": 0.0030679702758789062, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0.006791949272155762, + "tick": 76 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.006986021995544434, + "tick": 77 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.007189035415649414, + "tick": 78 + }, + { + "renderSeconds": 0.002743959426879883, + "simulationSeconds": 0.013305068016052246, + "tick": 80 + }, + { + "renderSeconds": 0.004110932350158691, + "simulationSeconds": 0.006769061088562012, + "tick": 81 + }, + { + "renderSeconds": 0.0030410289764404297, + "simulationSeconds": 0.006161928176879883, + "tick": 82 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0030249357223510742, + "simulationSeconds": 0.006291985511779785, + "tick": 83 + }, + { + "renderSeconds": 0.0027159452438354492, + "simulationSeconds": 0.006497025489807129, + "tick": 84 + }, + { + "renderSeconds": 0.0032711029052734375, + "simulationSeconds": 0.007028937339782715, + "tick": 85 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.012683987617492676, + "tick": 87 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.006784915924072266, + "tick": 88 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.006579995155334473, + "tick": 89 + }, + { + "renderSeconds": 0.0029779672622680664, + "simulationSeconds": 0.007066011428833008, + "tick": 90 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0032259225845336914, + "simulationSeconds": 0.006954073905944824, + "tick": 91 + }, + { + "renderSeconds": 0.0034270286560058594, + "simulationSeconds": 0.006665945053100586, + "tick": 92 + }, + { + "renderSeconds": 0.0029449462890625, + "simulationSeconds": 0.006205916404724121, + "tick": 93 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.013005971908569336, + "tick": 95 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.008126974105834961, + "tick": 96 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.006453037261962891, + "tick": 97 + }, + { + "renderSeconds": 0.003347039222717285, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.006103992462158203, + "tick": 98 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.007689952850341797, + "tick": 99 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.00606989860534668, + "tick": 100 + }, + { + "renderSeconds": 0.0025109052658081055, + "simulationSeconds": 0.012556076049804688, + "tick": 102 + }, + { + "renderSeconds": 0.002969980239868164, + "simulationSeconds": 0.006211042404174805, + "tick": 103 + }, + { + "renderSeconds": 0.0032199621200561523, + "simulationSeconds": 0.006487011909484863, + "tick": 104 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.00631403923034668, + "tick": 105 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0.0071239471435546875, + "tick": 106 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 0.007171034812927246, + "tick": 107 + }, + { + "renderSeconds": 0.0030469894409179688, + "simulationSeconds": 0.0072640180587768555, + "tick": 108 + }, + { + "renderSeconds": 0.0033119916915893555, + "simulationSeconds": 0.01573801040649414, + "tick": 110 + }, + { + "renderSeconds": 0.003283977508544922, + "simulationSeconds": 0.006673097610473633, + "tick": 111 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.0074269771575927734, + "tick": 112 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.00649106502532959, + "tick": 113 + }, + { + "renderSeconds": 0.003110051155090332, + "simulationSeconds": 0.006370067596435547, + "tick": 114 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.006618022918701172, + "tick": 115 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.013027071952819824, + "tick": 117 + }, + { + "renderSeconds": 0.0034209489822387695, + "simulationSeconds": 0.009389042854309082, + "tick": 118 + }, + { + "renderSeconds": 0.003672003746032715, + "simulationSeconds": 0.006540060043334961, + "tick": 119 + }, + { + "renderSeconds": 0.002888917922973633, + "simulationSeconds": 0.007520079612731934, + "tick": 120 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003217935562133789, + "simulationSeconds": 0.0064879655838012695, + "tick": 121 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006360054016113281, + "tick": 122 + }, + { + "renderSeconds": 0.0031249523162841797, + "simulationSeconds": 0.007533907890319824, + "tick": 123 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.01332390308380127, + "tick": 125 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 0.006207108497619629, + "tick": 126 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.006078004837036133, + "tick": 127 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0026750564575195312, + "simulationSeconds": 0.006286978721618652, + "tick": 128 + }, + { + "renderSeconds": 0.003140091896057129, + "simulationSeconds": 0.0072519779205322266, + "tick": 129 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.00698399543762207, + "tick": 130 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.012635946273803711, + "tick": 132 + }, + { + "renderSeconds": 0.0027369260787963867, + "simulationSeconds": 0.006541013717651367, + "tick": 133 + }, + { + "renderSeconds": 0.006137967109680176, + "simulationSeconds": 0.006667971611022949, + "tick": 134 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.010313987731933594, + "tick": 135 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002584099769592285, + "simulationSeconds": 0.006294965744018555, + "tick": 136 + }, + { + "renderSeconds": 0.0025529861450195312, + "simulationSeconds": 0.006022095680236816, + "tick": 137 + }, + { + "renderSeconds": 0.002460002899169922, + "simulationSeconds": 0.005945086479187012, + "tick": 138 + }, + { + "renderSeconds": 0.002503037452697754, + "simulationSeconds": 0.01175999641418457, + "tick": 140 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.006428956985473633, + "tick": 141 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.005882978439331055, + "tick": 142 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0024720430374145508, + "simulationSeconds": 0.005896925926208496, + "tick": 143 + }, + { + "renderSeconds": 0.002729058265686035, + "simulationSeconds": 0.005877017974853516, + "tick": 144 + }, + { + "renderSeconds": 0.002641916275024414, + "simulationSeconds": 0.0058830976486206055, + "tick": 145 + }, + { + "renderSeconds": 0.002607107162475586, + "simulationSeconds": 0.01229405403137207, + "tick": 147 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.00628507137298584, + "tick": 148 + }, + { + "renderSeconds": 0.002400040626525879, + "simulationSeconds": 0.010928988456726074, + "tick": 149 + }, + { + "renderSeconds": 0.003157973289489746, + "simulationSeconds": 0.0061800479888916016, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03664825001033023, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 210, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006817460060119629, + "preparationSeconds": 0.5929110050201416, + "reducedMotion": false, + "renderSeconds": 0.40791213512420654, + "repetition": 0, + "scenePreparationSeconds": 0.21812903881072998, + "simulationSeconds": 1.0393946170806885, + "snapshotBuildCount": 138, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333335467614, + "callbackMaxMS": 43.83779165800661, + "postActionRecords": 136, + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.22164654731750488, + "frameCosts": [ + { + "renderSeconds": 0.0008499622344970703, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0009720325469970703, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009170770645141602, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010340213775634766, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0033839941024780273, + "simulationSeconds": 0.005861997604370117, + "tick": 1 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.01290905475616455, + "tick": 3 + }, + { + "renderSeconds": 0.0024390220642089844, + "simulationSeconds": 0.006666064262390137, + "tick": 4 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.007364988327026367, + "tick": 5 + }, + { + "renderSeconds": 0.0033899545669555664, + "simulationSeconds": 0.007118105888366699, + "tick": 6 + }, + { + "renderSeconds": 0.0027600526809692383, + "simulationSeconds": 0.006272077560424805, + "tick": 7 + }, + { + "renderSeconds": 0.0027260780334472656, + "simulationSeconds": 0.009150028228759766, + "tick": 8 + }, + { + "renderSeconds": 0.0029859542846679688, + "simulationSeconds": 0.006318092346191406, + "tick": 9 + }, + { + "renderSeconds": 0.0033600330352783203, + "simulationSeconds": 0.0061910152435302734, + "tick": 10 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.007122039794921875, + "tick": 11 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.012735962867736816, + "tick": 13 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.019029974937438965, + "tick": 16 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.005730986595153809, + "tick": 17 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.015719056129455566, + "tick": 19 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.006176948547363281, + "tick": 20 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.006026029586791992, + "tick": 21 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.006869077682495117, + "tick": 22 + }, + { + "renderSeconds": 0.011121988296508789, + "simulationSeconds": 0.006220102310180664, + "tick": 23 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.013954997062683105, + "tick": 25 + }, + { + "renderSeconds": 0.0052490234375, + "simulationSeconds": 0.006782054901123047, + "tick": 26 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.006580948829650879, + "tick": 27 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.005767941474914551, + "tick": 28 + }, + { + "renderSeconds": 0.0031310319900512695, + "simulationSeconds": 0.0069609880447387695, + "tick": 29 + }, + { + "renderSeconds": 0.0029410123825073242, + "simulationSeconds": 0.006209969520568848, + "tick": 30 + }, + { + "renderSeconds": 0.0031720399856567383, + "simulationSeconds": 0.006296038627624512, + "tick": 31 + }, + { + "renderSeconds": 0.002501964569091797, + "simulationSeconds": 0.012647032737731934, + "tick": 33 + }, + { + "renderSeconds": 0.003029942512512207, + "simulationSeconds": 0.006769895553588867, + "tick": 34 + }, + { + "renderSeconds": 0.005324959754943848, + "simulationSeconds": 0.006235003471374512, + "tick": 35 + }, + { + "renderSeconds": 0.0029380321502685547, + "simulationSeconds": 0.007449984550476074, + "tick": 36 + }, + { + "renderSeconds": 0.002610921859741211, + "simulationSeconds": 0.00677800178527832, + "tick": 37 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.0059490203857421875, + "tick": 38 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.006172060966491699, + "tick": 39 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.005961060523986816, + "tick": 40 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.0064460039138793945, + "tick": 41 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.006944060325622559, + "tick": 42 + }, + { + "renderSeconds": 0.003068089485168457, + "simulationSeconds": 0.007234930992126465, + "tick": 43 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.006006956100463867, + "tick": 44 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.006381988525390625, + "tick": 45 + }, + { + "renderSeconds": 0.00256502628326416, + "simulationSeconds": 0.006168961524963379, + "tick": 46 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.006386995315551758, + "tick": 47 + }, + { + "renderSeconds": 0.0026129484176635742, + "simulationSeconds": 0.006052970886230469, + "tick": 48 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.0064580440521240234, + "tick": 49 + }, + { + "renderSeconds": 0.0026280879974365234, + "simulationSeconds": 0.006219983100891113, + "tick": 50 + }, + { + "renderSeconds": 0.002630949020385742, + "simulationSeconds": 0.005876064300537109, + "tick": 51 + }, + { + "renderSeconds": 0.0036699771881103516, + "simulationSeconds": 0.006147027015686035, + "tick": 52 + }, + { + "renderSeconds": 0.002788066864013672, + "simulationSeconds": 0.006410002708435059, + "tick": 53 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.006004929542541504, + "tick": 54 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.006512999534606934, + "tick": 55 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.006673932075500488, + "tick": 56 + }, + { + "renderSeconds": 0.0030128955841064453, + "simulationSeconds": 0.006446957588195801, + "tick": 57 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.006392002105712891, + "tick": 58 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006240963935852051, + "tick": 59 + }, + { + "renderSeconds": 0.0025850534439086914, + "simulationSeconds": 0.006294965744018555, + "tick": 60 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.0065839290618896484, + "tick": 61 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.006103992462158203, + "tick": 62 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0.006358981132507324, + "tick": 63 + }, + { + "renderSeconds": 0.0028018951416015625, + "simulationSeconds": 0.006281018257141113, + "tick": 64 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.00657200813293457, + "tick": 65 + }, + { + "renderSeconds": 0.0032050609588623047, + "simulationSeconds": 0.0062100887298583984, + "tick": 66 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.00713503360748291, + "tick": 67 + }, + { + "renderSeconds": 0.002478957176208496, + "simulationSeconds": 0.012984991073608398, + "tick": 68 + }, + { + "renderSeconds": 0.0026780366897583008, + "simulationSeconds": 0.006268024444580078, + "tick": 69 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.006181001663208008, + "tick": 70 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.006699919700622559, + "tick": 71 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.006060957908630371, + "tick": 72 + }, + { + "renderSeconds": 0.003286004066467285, + "simulationSeconds": 0.006915092468261719, + "tick": 73 + }, + { + "renderSeconds": 0.00301206111907959, + "simulationSeconds": 0.007295966148376465, + "tick": 74 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.007140994071960449, + "tick": 75 + }, + { + "renderSeconds": 0.0030450820922851562, + "simulationSeconds": 0.006264925003051758, + "tick": 76 + }, + { + "renderSeconds": 0.0027709007263183594, + "simulationSeconds": 0.0067490339279174805, + "tick": 77 + }, + { + "renderSeconds": 0.002662062644958496, + "simulationSeconds": 0.006227016448974609, + "tick": 78 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.006830930709838867, + "tick": 79 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.006301999092102051, + "tick": 80 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.00760197639465332, + "tick": 81 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 0.006057024002075195, + "tick": 82 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.005978107452392578, + "tick": 83 + }, + { + "renderSeconds": 0.0025229454040527344, + "simulationSeconds": 0.006508946418762207, + "tick": 84 + }, + { + "renderSeconds": 0.0030330419540405273, + "simulationSeconds": 0.006466984748840332, + "tick": 85 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.006547093391418457, + "tick": 86 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.006165981292724609, + "tick": 87 + }, + { + "renderSeconds": 0.002812981605529785, + "simulationSeconds": 0.006625056266784668, + "tick": 88 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.0060700178146362305, + "tick": 89 + }, + { + "renderSeconds": 0.0031310319900512695, + "simulationSeconds": 0.007230997085571289, + "tick": 90 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.006385922431945801, + "tick": 91 + }, + { + "renderSeconds": 0.0025609731674194336, + "simulationSeconds": 0.006726980209350586, + "tick": 92 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.0063419342041015625, + "tick": 93 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.007085919380187988, + "tick": 94 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.00615692138671875, + "tick": 95 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.006309986114501953, + "tick": 96 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.006266951560974121, + "tick": 97 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.0060579776763916016, + "tick": 98 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.006249070167541504, + "tick": 99 + }, + { + "renderSeconds": 0.0026640892028808594, + "simulationSeconds": 0.006466031074523926, + "tick": 100 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.006724953651428223, + "tick": 101 + }, + { + "renderSeconds": 0.0026360750198364258, + "simulationSeconds": 0.006451964378356934, + "tick": 102 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.006818056106567383, + "tick": 103 + }, + { + "renderSeconds": 0.0024079084396362305, + "simulationSeconds": 0.006165027618408203, + "tick": 104 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.006383061408996582, + "tick": 105 + }, + { + "renderSeconds": 0.0027350187301635742, + "simulationSeconds": 0.00636899471282959, + "tick": 106 + }, + { + "renderSeconds": 0.0027049779891967773, + "simulationSeconds": 0.006545066833496094, + "tick": 107 + }, + { + "renderSeconds": 0.0029228925704956055, + "simulationSeconds": 0.00701296329498291, + "tick": 108 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.007091999053955078, + "tick": 109 + }, + { + "renderSeconds": 0.0031300783157348633, + "simulationSeconds": 0.006520986557006836, + "tick": 110 + }, + { + "renderSeconds": 0.002824068069458008, + "simulationSeconds": 0.006224989891052246, + "tick": 111 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.0066939592361450195, + "tick": 112 + }, + { + "renderSeconds": 0.002619028091430664, + "simulationSeconds": 0.006386995315551758, + "tick": 113 + }, + { + "renderSeconds": 0.002834916114807129, + "simulationSeconds": 0.006167054176330566, + "tick": 114 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0.006335020065307617, + "tick": 115 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.006270051002502441, + "tick": 116 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006352901458740234, + "tick": 117 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.006239891052246094, + "tick": 118 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.006542086601257324, + "tick": 119 + }, + { + "renderSeconds": 0.003144979476928711, + "simulationSeconds": 0.006385087966918945, + "tick": 120 + }, + { + "renderSeconds": 0.0029990673065185547, + "simulationSeconds": 0.0061359405517578125, + "tick": 121 + }, + { + "renderSeconds": 0.0027399063110351562, + "simulationSeconds": 0.0070040225982666016, + "tick": 122 + }, + { + "renderSeconds": 0.0026960372924804688, + "simulationSeconds": 0.0062830448150634766, + "tick": 123 + }, + { + "renderSeconds": 0.002550959587097168, + "simulationSeconds": 0.006289005279541016, + "tick": 124 + }, + { + "renderSeconds": 0.0024570226669311523, + "simulationSeconds": 0.005893111228942871, + "tick": 125 + }, + { + "renderSeconds": 0.002435922622680664, + "simulationSeconds": 0.005939006805419922, + "tick": 126 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.006237983703613281, + "tick": 127 + }, + { + "renderSeconds": 0.0027670860290527344, + "simulationSeconds": 0.005988001823425293, + "tick": 128 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.0064280033111572266, + "tick": 129 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006268024444580078, + "tick": 130 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.006327033042907715, + "tick": 131 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.006363987922668457, + "tick": 132 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.006167054176330566, + "tick": 133 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.006856083869934082, + "tick": 134 + }, + { + "renderSeconds": 0.0029050111770629883, + "simulationSeconds": 0.006595015525817871, + "tick": 135 + }, + { + "renderSeconds": 0.002424001693725586, + "simulationSeconds": 0.013900041580200195, + "tick": 136 + }, + { + "renderSeconds": 0.0024570226669311523, + "simulationSeconds": 0.006497979164123535, + "tick": 137 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.0060770511627197266, + "tick": 138 + }, + { + "renderSeconds": 0.0028039216995239258, + "simulationSeconds": 0.006142973899841309, + "tick": 139 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.006193041801452637, + "tick": 140 + }, + { + "renderSeconds": 0.002547025680541992, + "simulationSeconds": 0.006139993667602539, + "tick": 141 + }, + { + "renderSeconds": 0.0027350187301635742, + "simulationSeconds": 0.005987048149108887, + "tick": 142 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006279945373535156, + "tick": 143 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.006085991859436035, + "tick": 144 + }, + { + "renderSeconds": 0.0024309158325195312, + "simulationSeconds": 0.006091952323913574, + "tick": 145 + }, + { + "renderSeconds": 0.002586960792541504, + "simulationSeconds": 0.006862044334411621, + "tick": 146 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006329894065856934, + "tick": 147 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.00639796257019043, + "tick": 148 + }, + { + "renderSeconds": 0.003726959228515625, + "simulationSeconds": 0.005926012992858887, + "tick": 149 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006547093391418457, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03620308334939182, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 226, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006500720977783203, + "preparationSeconds": 0.572687029838562, + "reducedMotion": false, + "renderSeconds": 0.4174063205718994, + "repetition": 1, + "scenePreparationSeconds": 0.21433699131011963, + "simulationSeconds": 0.9836806058883667, + "snapshotBuildCount": 147, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 37.98579168505967, + "postActionRecords": 145, + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.23679041862487793, + "frameCosts": [ + { + "renderSeconds": 0.0010010004043579102, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0008149147033691406, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008529424667358398, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008460283279418945, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.003347039222717285, + "simulationSeconds": 0.005514979362487793, + "tick": 1 + }, + { + "renderSeconds": 0.0023620128631591797, + "simulationSeconds": 0.012874007225036621, + "tick": 3 + }, + { + "renderSeconds": 0.0028780698776245117, + "simulationSeconds": 0.006567955017089844, + "tick": 4 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 0.007527947425842285, + "tick": 5 + }, + { + "renderSeconds": 0.0027478933334350586, + "simulationSeconds": 0.006884932518005371, + "tick": 6 + }, + { + "renderSeconds": 0.002618074417114258, + "simulationSeconds": 0.006586909294128418, + "tick": 7 + }, + { + "renderSeconds": 0.002836942672729492, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.007395029067993164, + "tick": 8 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.014101028442382812, + "tick": 10 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.007154941558837891, + "tick": 11 + }, + { + "renderSeconds": 0.003365039825439453, + "simulationSeconds": 0.0077179670333862305, + "tick": 12 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.0073909759521484375, + "tick": 13 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.006308078765869141, + "tick": 14 + }, + { + "renderSeconds": 0.0026100873947143555, + "simulationSeconds": 0.006309032440185547, + "tick": 15 + }, + { + "renderSeconds": 0.0031980276107788086, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.006630063056945801, + "tick": 16 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.012666940689086914, + "tick": 18 + }, + { + "renderSeconds": 0.003777027130126953, + "simulationSeconds": 0.007490038871765137, + "tick": 19 + }, + { + "renderSeconds": 0.003080010414123535, + "simulationSeconds": 0.007122993469238281, + "tick": 20 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.007001042366027832, + "tick": 21 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.00630497932434082, + "tick": 22 + }, + { + "renderSeconds": 0.0030469894409179688, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 22 + }, + { + "renderSeconds": 0.00276792049407959, + "simulationSeconds": 0.006063938140869141, + "tick": 23 + }, + { + "renderSeconds": 0.0025500059127807617, + "simulationSeconds": 0.012843966484069824, + "tick": 25 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.006645917892456055, + "tick": 26 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.006534934043884277, + "tick": 27 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.007053017616271973, + "tick": 28 + }, + { + "renderSeconds": 0.003164052963256836, + "simulationSeconds": 0.006816983222961426, + "tick": 29 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.007082939147949219, + "tick": 30 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0028340816497802734, + "simulationSeconds": 0.006895899772644043, + "tick": 31 + }, + { + "renderSeconds": 0.0025289058685302734, + "simulationSeconds": 0.01283407211303711, + "tick": 33 + }, + { + "renderSeconds": 0.003119945526123047, + "simulationSeconds": 0.006821036338806152, + "tick": 34 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.006363987922668457, + "tick": 35 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.006720066070556641, + "tick": 36 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.0060280561447143555, + "tick": 37 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 9.5367431640625e-07, + "tick": 37 + }, + { + "renderSeconds": 0.0027000904083251953, + "simulationSeconds": 0.006520986557006836, + "tick": 38 + }, + { + "renderSeconds": 0.0025930404663085938, + "simulationSeconds": 0.01232004165649414, + "tick": 40 + }, + { + "renderSeconds": 0.0027039051055908203, + "simulationSeconds": 0.006206035614013672, + "tick": 41 + }, + { + "renderSeconds": 0.0031180381774902344, + "simulationSeconds": 0.0076209306716918945, + "tick": 42 + }, + { + "renderSeconds": 0.003184080123901367, + "simulationSeconds": 0.0065490007400512695, + "tick": 43 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.007660984992980957, + "tick": 44 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.007014036178588867, + "tick": 45 + }, + { + "renderSeconds": 0.0032349824905395508, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 45 + }, + { + "renderSeconds": 0.0030019283294677734, + "simulationSeconds": 0.006868958473205566, + "tick": 46 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.014168977737426758, + "tick": 48 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.00769805908203125, + "tick": 49 + }, + { + "renderSeconds": 0.003108978271484375, + "simulationSeconds": 0.007533073425292969, + "tick": 50 + }, + { + "renderSeconds": 0.0030840635299682617, + "simulationSeconds": 0.007118940353393555, + "tick": 51 + }, + { + "renderSeconds": 0.003133058547973633, + "simulationSeconds": 0.00707697868347168, + "tick": 52 + }, + { + "renderSeconds": 0.003117084503173828, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.003856062889099121, + "simulationSeconds": 0.008619070053100586, + "tick": 53 + }, + { + "renderSeconds": 0.003535032272338867, + "simulationSeconds": 0.01714503765106201, + "tick": 55 + }, + { + "renderSeconds": 0.003406047821044922, + "simulationSeconds": 0.007049918174743652, + "tick": 56 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.008471012115478516, + "tick": 57 + }, + { + "renderSeconds": 0.0028209686279296875, + "simulationSeconds": 0.0072699785232543945, + "tick": 58 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.007420897483825684, + "tick": 59 + }, + { + "renderSeconds": 0.002870917320251465, + "simulationSeconds": 0.007283926010131836, + "tick": 60 + }, + { + "renderSeconds": 0.003486037254333496, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 60 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.006391048431396484, + "tick": 61 + }, + { + "renderSeconds": 0.0026590824127197266, + "simulationSeconds": 0.012456893920898438, + "tick": 63 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.006288051605224609, + "tick": 64 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006150960922241211, + "tick": 65 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0.012398958206176758, + "tick": 67 + }, + { + "renderSeconds": 0.002898097038269043, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0027838945388793945, + "simulationSeconds": 0.006338000297546387, + "tick": 68 + }, + { + "renderSeconds": 0.0026301145553588867, + "simulationSeconds": 0.012510895729064941, + "tick": 70 + }, + { + "renderSeconds": 0.00258791446685791, + "simulationSeconds": 0.006932973861694336, + "tick": 71 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.0069429874420166016, + "tick": 72 + }, + { + "renderSeconds": 0.0029538869857788086, + "simulationSeconds": 0.006359100341796875, + "tick": 73 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.0066699981689453125, + "tick": 74 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.0062819719314575195, + "tick": 75 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.006266951560974121, + "tick": 76 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.012871026992797852, + "tick": 78 + }, + { + "renderSeconds": 0.0029140710830688477, + "simulationSeconds": 0.010162949562072754, + "tick": 79 + }, + { + "renderSeconds": 0.003065943717956543, + "simulationSeconds": 0.006277918815612793, + "tick": 80 + }, + { + "renderSeconds": 0.0028759241104125977, + "simulationSeconds": 0.006801009178161621, + "tick": 81 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.006479978561401367, + "tick": 82 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0026699304580688477, + "simulationSeconds": 0.00628507137298584, + "tick": 83 + }, + { + "renderSeconds": 0.0025949478149414062, + "simulationSeconds": 0.013641953468322754, + "tick": 85 + }, + { + "renderSeconds": 0.0029588937759399414, + "simulationSeconds": 0.007133007049560547, + "tick": 86 + }, + { + "renderSeconds": 0.0027289390563964844, + "simulationSeconds": 0.006407022476196289, + "tick": 87 + }, + { + "renderSeconds": 0.0031380653381347656, + "simulationSeconds": 0.006296992301940918, + "tick": 88 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.00619196891784668, + "tick": 89 + }, + { + "renderSeconds": 0.002891063690185547, + "simulationSeconds": 0.006399035453796387, + "tick": 90 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0.00622403621673584, + "tick": 91 + }, + { + "renderSeconds": 0.0025690793991088867, + "simulationSeconds": 0.01240396499633789, + "tick": 93 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0.006442070007324219, + "tick": 94 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.006338953971862793, + "tick": 95 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.006541013717651367, + "tick": 96 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.006168961524963379, + "tick": 97 + }, + { + "renderSeconds": 0.0030890703201293945, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.006459951400756836, + "tick": 98 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.01276099681854248, + "tick": 100 + }, + { + "renderSeconds": 0.003065943717956543, + "simulationSeconds": 0.006413936614990234, + "tick": 101 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006433963775634766, + "tick": 102 + }, + { + "renderSeconds": 0.0031659603118896484, + "simulationSeconds": 0.00622403621673584, + "tick": 103 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.0065610408782958984, + "tick": 104 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006062030792236328, + "tick": 105 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 105 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.006172060966491699, + "tick": 106 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.012719035148620605, + "tick": 108 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.006430983543395996, + "tick": 109 + }, + { + "renderSeconds": 0.002680063247680664, + "simulationSeconds": 0.006334900856018066, + "tick": 110 + }, + { + "renderSeconds": 0.0027579069137573242, + "simulationSeconds": 0.006193041801452637, + "tick": 111 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.007227063179016113, + "tick": 112 + }, + { + "renderSeconds": 0.0034570693969726562, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006590008735656738, + "tick": 113 + }, + { + "renderSeconds": 0.002574920654296875, + "simulationSeconds": 0.01255500316619873, + "tick": 115 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.007439017295837402, + "tick": 116 + }, + { + "renderSeconds": 0.003363966941833496, + "simulationSeconds": 0.006384015083312988, + "tick": 117 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.006278038024902344, + "tick": 118 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.0068770647048950195, + "tick": 119 + }, + { + "renderSeconds": 0.002976059913635254, + "simulationSeconds": 0.006321907043457031, + "tick": 120 + }, + { + "renderSeconds": 0.0028810501098632812, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.0064239501953125, + "tick": 121 + }, + { + "renderSeconds": 0.0024329423904418945, + "simulationSeconds": 0.01270592212677002, + "tick": 123 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.006316065788269043, + "tick": 124 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006652951240539551, + "tick": 125 + }, + { + "renderSeconds": 0.0025849342346191406, + "simulationSeconds": 0.00630795955657959, + "tick": 126 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.006332039833068848, + "tick": 127 + }, + { + "renderSeconds": 0.0033349990844726562, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0034750699996948242, + "simulationSeconds": 0.007001042366027832, + "tick": 128 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.012599945068359375, + "tick": 130 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0.006546974182128906, + "tick": 131 + }, + { + "renderSeconds": 0.00279390811920166, + "simulationSeconds": 0.006349921226501465, + "tick": 132 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.0068819522857666016, + "tick": 133 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.006106019020080566, + "tick": 134 + }, + { + "renderSeconds": 0.00267791748046875, + "simulationSeconds": 0.006357908248901367, + "tick": 135 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002485990524291992, + "simulationSeconds": 0.007503032684326172, + "tick": 136 + }, + { + "renderSeconds": 0.0025409460067749023, + "simulationSeconds": 0.01214897632598877, + "tick": 138 + }, + { + "renderSeconds": 0.002816915512084961, + "simulationSeconds": 0.0059670209884643555, + "tick": 139 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.0058939456939697266, + "tick": 140 + }, + { + "renderSeconds": 0.0026140213012695312, + "simulationSeconds": 0.006402015686035156, + "tick": 141 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.006145000457763672, + "tick": 142 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.002824068069458008, + "simulationSeconds": 0.006121039390563965, + "tick": 143 + }, + { + "renderSeconds": 0.0024629831314086914, + "simulationSeconds": 0.01203608512878418, + "tick": 145 + }, + { + "renderSeconds": 0.002978086471557617, + "simulationSeconds": 0.00598597526550293, + "tick": 146 + }, + { + "renderSeconds": 0.0027289390563964844, + "simulationSeconds": 0.006356000900268555, + "tick": 147 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.006739974021911621, + "tick": 148 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.007001996040344238, + "tick": 149 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006585955619812012, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04346558332326822, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 238, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006794333457946777, + "preparationSeconds": 0.5686150789260864, + "reducedMotion": true, + "renderSeconds": 0.4299657344818115, + "repetition": 1, + "scenePreparationSeconds": 0.1965399980545044, + "simulationSeconds": 0.9968459606170654, + "snapshotBuildCount": 152, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333332557231, + "postActionRecords": 150, + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.2254173755645752, + "frameCosts": [ + { + "renderSeconds": 0.0009379386901855469, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008450746536254883, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008829832077026367, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0034700632095336914, + "simulationSeconds": 0.005664944648742676, + "tick": 1 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.006711006164550781, + "tick": 2 + }, + { + "renderSeconds": 0.0029278993606567383, + "simulationSeconds": 0.006677031517028809, + "tick": 3 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.006512999534606934, + "tick": 4 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.006273031234741211, + "tick": 5 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006343960762023926, + "tick": 6 + }, + { + "renderSeconds": 0.002574920654296875, + "simulationSeconds": 0.006214022636413574, + "tick": 7 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.008804917335510254, + "tick": 8 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.0065490007400512695, + "tick": 9 + }, + { + "renderSeconds": 0.0028340816497802734, + "simulationSeconds": 0.008148908615112305, + "tick": 10 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.006744980812072754, + "tick": 11 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.006178021430969238, + "tick": 12 + }, + { + "renderSeconds": 0.0030350685119628906, + "simulationSeconds": 0.009562969207763672, + "tick": 13 + }, + { + "renderSeconds": 0.0030020475387573242, + "simulationSeconds": 0.006479978561401367, + "tick": 14 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006134033203125, + "tick": 15 + }, + { + "renderSeconds": 0.0027619600296020508, + "simulationSeconds": 0.012957096099853516, + "tick": 17 + }, + { + "renderSeconds": 0.0028249025344848633, + "simulationSeconds": 0.006659984588623047, + "tick": 18 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.007082939147949219, + "tick": 19 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.006680011749267578, + "tick": 20 + }, + { + "renderSeconds": 0.0027189254760742188, + "simulationSeconds": 0.006268978118896484, + "tick": 21 + }, + { + "renderSeconds": 0.002635955810546875, + "simulationSeconds": 0.006429910659790039, + "tick": 22 + }, + { + "renderSeconds": 0.0029458999633789062, + "simulationSeconds": 0.005926012992858887, + "tick": 23 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.006070971488952637, + "tick": 24 + }, + { + "renderSeconds": 0.0031130313873291016, + "simulationSeconds": 0.006710052490234375, + "tick": 25 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0.008118987083435059, + "tick": 26 + }, + { + "renderSeconds": 0.0033240318298339844, + "simulationSeconds": 0.00751805305480957, + "tick": 27 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.007726907730102539, + "tick": 28 + }, + { + "renderSeconds": 0.0032340288162231445, + "simulationSeconds": 0.015027999877929688, + "tick": 30 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.007309079170227051, + "tick": 31 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.0062389373779296875, + "tick": 32 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 0.00616300106048584, + "tick": 33 + }, + { + "renderSeconds": 0.0031020641326904297, + "simulationSeconds": 0.006376981735229492, + "tick": 34 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.006242036819458008, + "tick": 35 + }, + { + "renderSeconds": 0.0031970739364624023, + "simulationSeconds": 0.006181001663208008, + "tick": 36 + }, + { + "renderSeconds": 0.003004908561706543, + "simulationSeconds": 0.006692051887512207, + "tick": 37 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.008194923400878906, + "tick": 38 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 0.006699919700622559, + "tick": 39 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.008497953414916992, + "tick": 40 + }, + { + "renderSeconds": 0.002980947494506836, + "simulationSeconds": 0.006473064422607422, + "tick": 41 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.005993008613586426, + "tick": 42 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.006615042686462402, + "tick": 43 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006371021270751953, + "tick": 44 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.007363080978393555, + "tick": 45 + }, + { + "renderSeconds": 0.0030940771102905273, + "simulationSeconds": 0.006854057312011719, + "tick": 46 + }, + { + "renderSeconds": 0.002729058265686035, + "simulationSeconds": 0.006726980209350586, + "tick": 47 + }, + { + "renderSeconds": 0.003165006637573242, + "simulationSeconds": 0.0063669681549072266, + "tick": 48 + }, + { + "renderSeconds": 0.0029931068420410156, + "simulationSeconds": 0.007166028022766113, + "tick": 49 + }, + { + "renderSeconds": 0.0029069185256958008, + "simulationSeconds": 0.006796002388000488, + "tick": 50 + }, + { + "renderSeconds": 0.0024529695510864258, + "simulationSeconds": 0.006358981132507324, + "tick": 51 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.006314992904663086, + "tick": 52 + }, + { + "renderSeconds": 0.002630949020385742, + "simulationSeconds": 0.006613016128540039, + "tick": 53 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 0.007055044174194336, + "tick": 54 + }, + { + "renderSeconds": 0.0030770301818847656, + "simulationSeconds": 0.006319999694824219, + "tick": 55 + }, + { + "renderSeconds": 0.003265976905822754, + "simulationSeconds": 0.0069310665130615234, + "tick": 56 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0.006554961204528809, + "tick": 57 + }, + { + "renderSeconds": 0.0031250715255737305, + "simulationSeconds": 0.007524013519287109, + "tick": 58 + }, + { + "renderSeconds": 0.0034099817276000977, + "simulationSeconds": 0.007130980491638184, + "tick": 59 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.0072879791259765625, + "tick": 60 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.00658106803894043, + "tick": 61 + }, + { + "renderSeconds": 0.002917051315307617, + "simulationSeconds": 0.006201982498168945, + "tick": 62 + }, + { + "renderSeconds": 0.0027979612350463867, + "simulationSeconds": 0.007057070732116699, + "tick": 63 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006229996681213379, + "tick": 64 + }, + { + "renderSeconds": 0.0026720762252807617, + "simulationSeconds": 0.006400942802429199, + "tick": 65 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0.006167054176330566, + "tick": 66 + }, + { + "renderSeconds": 0.0028009414672851562, + "simulationSeconds": 0.006620049476623535, + "tick": 67 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.007013916969299316, + "tick": 68 + }, + { + "renderSeconds": 0.0038979053497314453, + "simulationSeconds": 0.006738066673278809, + "tick": 69 + }, + { + "renderSeconds": 0.003246903419494629, + "simulationSeconds": 0.007561087608337402, + "tick": 70 + }, + { + "renderSeconds": 0.0026270151138305664, + "simulationSeconds": 0.007885932922363281, + "tick": 71 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.006302952766418457, + "tick": 72 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.006332039833068848, + "tick": 73 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.007460951805114746, + "tick": 74 + }, + { + "renderSeconds": 0.0031419992446899414, + "simulationSeconds": 0.007099032402038574, + "tick": 75 + }, + { + "renderSeconds": 0.0036770105361938477, + "simulationSeconds": 0.008903980255126953, + "tick": 76 + }, + { + "renderSeconds": 0.004135012626647949, + "simulationSeconds": 0.009588003158569336, + "tick": 77 + }, + { + "renderSeconds": 0.0030128955841064453, + "simulationSeconds": 0.01417398452758789, + "tick": 79 + }, + { + "renderSeconds": 0.003001093864440918, + "simulationSeconds": 0.007146954536437988, + "tick": 80 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.007248997688293457, + "tick": 81 + }, + { + "renderSeconds": 0.003007054328918457, + "simulationSeconds": 0.006819963455200195, + "tick": 82 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 0.007203936576843262, + "tick": 83 + }, + { + "renderSeconds": 0.003014087677001953, + "simulationSeconds": 0.006312966346740723, + "tick": 84 + }, + { + "renderSeconds": 0.003473997116088867, + "simulationSeconds": 0.0063440799713134766, + "tick": 85 + }, + { + "renderSeconds": 0.010882973670959473, + "simulationSeconds": 0.005991935729980469, + "tick": 86 + }, + { + "renderSeconds": 0.002674102783203125, + "simulationSeconds": 0.012125015258789062, + "tick": 88 + }, + { + "renderSeconds": 0.003065943717956543, + "simulationSeconds": 0.00630497932434082, + "tick": 89 + }, + { + "renderSeconds": 0.0027060508728027344, + "simulationSeconds": 0.00622403621673584, + "tick": 90 + }, + { + "renderSeconds": 0.002968907356262207, + "simulationSeconds": 0.006554961204528809, + "tick": 91 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006451964378356934, + "tick": 92 + }, + { + "renderSeconds": 0.0026540756225585938, + "simulationSeconds": 0.006613969802856445, + "tick": 93 + }, + { + "renderSeconds": 0.003020048141479492, + "simulationSeconds": 0.006214022636413574, + "tick": 94 + }, + { + "renderSeconds": 0.002989053726196289, + "simulationSeconds": 0.006524085998535156, + "tick": 95 + }, + { + "renderSeconds": 0.002743959426879883, + "simulationSeconds": 0.006413936614990234, + "tick": 96 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.006441950798034668, + "tick": 97 + }, + { + "renderSeconds": 0.0029679536819458008, + "simulationSeconds": 0.006031036376953125, + "tick": 98 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006346940994262695, + "tick": 99 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006299018859863281, + "tick": 100 + }, + { + "renderSeconds": 0.0028570890426635742, + "simulationSeconds": 0.00663602352142334, + "tick": 101 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0.006502985954284668, + "tick": 102 + }, + { + "renderSeconds": 0.002476930618286133, + "simulationSeconds": 0.006466984748840332, + "tick": 103 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.006186008453369141, + "tick": 104 + }, + { + "renderSeconds": 0.0026720762252807617, + "simulationSeconds": 0.007035970687866211, + "tick": 105 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.006847977638244629, + "tick": 106 + }, + { + "renderSeconds": 0.002725958824157715, + "simulationSeconds": 0.00692903995513916, + "tick": 107 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.00766301155090332, + "tick": 108 + }, + { + "renderSeconds": 0.0032349824905395508, + "simulationSeconds": 0.007210969924926758, + "tick": 109 + }, + { + "renderSeconds": 0.003086090087890625, + "simulationSeconds": 0.007542014122009277, + "tick": 110 + }, + { + "renderSeconds": 0.003144979476928711, + "simulationSeconds": 0.00725102424621582, + "tick": 111 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.006096005439758301, + "tick": 112 + }, + { + "renderSeconds": 0.0024160146713256836, + "simulationSeconds": 0.006474018096923828, + "tick": 113 + }, + { + "renderSeconds": 0.002630949020385742, + "simulationSeconds": 0.006103992462158203, + "tick": 114 + }, + { + "renderSeconds": 0.00315093994140625, + "simulationSeconds": 0.007982969284057617, + "tick": 115 + }, + { + "renderSeconds": 0.003363966941833496, + "simulationSeconds": 0.007655978202819824, + "tick": 116 + }, + { + "renderSeconds": 0.004369974136352539, + "simulationSeconds": 0.007439970970153809, + "tick": 117 + }, + { + "renderSeconds": 0.003004908561706543, + "simulationSeconds": 0.006037116050720215, + "tick": 118 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.00618898868560791, + "tick": 119 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.006448030471801758, + "tick": 120 + }, + { + "renderSeconds": 0.003072977066040039, + "simulationSeconds": 0.006277918815612793, + "tick": 121 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.006500959396362305, + "tick": 122 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.006142973899841309, + "tick": 123 + }, + { + "renderSeconds": 0.002485990524291992, + "simulationSeconds": 0.00745701789855957, + "tick": 124 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006811976432800293, + "tick": 125 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.006495952606201172, + "tick": 126 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.00621795654296875, + "tick": 127 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.006353020668029785, + "tick": 128 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.006206989288330078, + "tick": 129 + }, + { + "renderSeconds": 0.002579927444458008, + "simulationSeconds": 0.006559967994689941, + "tick": 130 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.006268978118896484, + "tick": 131 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.006492018699645996, + "tick": 132 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0.006102085113525391, + "tick": 133 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.006560087203979492, + "tick": 134 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.006399989128112793, + "tick": 135 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006729006767272949, + "tick": 136 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.006183981895446777, + "tick": 137 + }, + { + "renderSeconds": 0.0026390552520751953, + "simulationSeconds": 0.006837964057922363, + "tick": 138 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.006338953971862793, + "tick": 139 + }, + { + "renderSeconds": 0.0031870603561401367, + "simulationSeconds": 0.006000995635986328, + "tick": 140 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0.006395101547241211, + "tick": 141 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.0065000057220458984, + "tick": 142 + }, + { + "renderSeconds": 0.0026720762252807617, + "simulationSeconds": 0.006353020668029785, + "tick": 143 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.006039977073669434, + "tick": 144 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.00628209114074707, + "tick": 145 + }, + { + "renderSeconds": 0.0030080080032348633, + "simulationSeconds": 0.005952954292297363, + "tick": 146 + }, + { + "renderSeconds": 0.003219008445739746, + "simulationSeconds": 0.006510019302368164, + "tick": 147 + }, + { + "renderSeconds": 0.002916097640991211, + "simulationSeconds": 0.006844997406005859, + "tick": 148 + }, + { + "renderSeconds": 0.002805948257446289, + "simulationSeconds": 0.0060040950775146484, + "tick": 149 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.006055951118469238, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04061495832866058, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 232, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.13715171813964844, + "preparationSeconds": 0.5803520679473877, + "reducedMotion": false, + "renderSeconds": 0.4355212450027466, + "repetition": 10, + "scenePreparationSeconds": 0.20172500610351562, + "simulationSeconds": 1.008098840713501, + "snapshotBuildCount": 149, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333335467614, + "postActionRecords": 147, + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.23475944995880127, + "frameCosts": [ + { + "renderSeconds": 0.0009510517120361328, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010579824447631836, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010080337524414062, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0010190010070800781, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003533005714416504, + "simulationSeconds": 0.0068939924240112305, + "tick": 1 + }, + { + "renderSeconds": 0.0026510953903198242, + "simulationSeconds": 0.0062639713287353516, + "tick": 2 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.01302194595336914, + "tick": 4 + }, + { + "renderSeconds": 0.003309965133666992, + "simulationSeconds": 0.0069310665130615234, + "tick": 5 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.006685018539428711, + "tick": 6 + }, + { + "renderSeconds": 0.00327908992767334, + "simulationSeconds": 0.006601929664611816, + "tick": 7 + }, + { + "renderSeconds": 0.002721071243286133, + "simulationSeconds": 9.5367431640625e-07, + "tick": 7 + }, + { + "renderSeconds": 0.0028290748596191406, + "simulationSeconds": 0.006639003753662109, + "tick": 8 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.006373047828674316, + "tick": 9 + }, + { + "renderSeconds": 0.002765059471130371, + "simulationSeconds": 0.012796998023986816, + "tick": 11 + }, + { + "renderSeconds": 0.0027529001235961914, + "simulationSeconds": 0.008416056632995605, + "tick": 12 + }, + { + "renderSeconds": 0.011250019073486328, + "simulationSeconds": 0.007040977478027344, + "tick": 13 + }, + { + "renderSeconds": 0.002638101577758789, + "simulationSeconds": 0.013472914695739746, + "tick": 15 + }, + { + "renderSeconds": 0.0030739307403564453, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 15 + }, + { + "renderSeconds": 0.005375981330871582, + "simulationSeconds": 0.006733059883117676, + "tick": 16 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.006832003593444824, + "tick": 17 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.01312100887298584, + "tick": 19 + }, + { + "renderSeconds": 0.002716064453125, + "simulationSeconds": 0.012634992599487305, + "tick": 21 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.006437063217163086, + "tick": 22 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 2.9802322387695312e-06, + "tick": 22 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.006527066230773926, + "tick": 23 + }, + { + "renderSeconds": 0.0030078887939453125, + "simulationSeconds": 0.007400035858154297, + "tick": 24 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.01323091983795166, + "tick": 26 + }, + { + "renderSeconds": 0.0057830810546875, + "simulationSeconds": 0.0065659284591674805, + "tick": 27 + }, + { + "renderSeconds": 0.003300905227661133, + "simulationSeconds": 0.006177067756652832, + "tick": 28 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.006464958190917969, + "tick": 29 + }, + { + "renderSeconds": 0.0027840137481689453, + "simulationSeconds": 0.007169961929321289, + "tick": 30 + }, + { + "renderSeconds": 0.003030061721801758, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0.006237983703613281, + "tick": 31 + }, + { + "renderSeconds": 0.0025180578231811523, + "simulationSeconds": 0.00666201114654541, + "tick": 32 + }, + { + "renderSeconds": 0.0025600194931030273, + "simulationSeconds": 0.013059020042419434, + "tick": 34 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.00663304328918457, + "tick": 35 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.006700992584228516, + "tick": 36 + }, + { + "renderSeconds": 0.002826094627380371, + "simulationSeconds": 0.0065430402755737305, + "tick": 37 + }, + { + "renderSeconds": 0.002698063850402832, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.0072470903396606445, + "tick": 38 + }, + { + "renderSeconds": 0.0029680728912353516, + "simulationSeconds": 0.006981015205383301, + "tick": 39 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.014387011528015137, + "tick": 41 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.007082939147949219, + "tick": 42 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.006749987602233887, + "tick": 43 + }, + { + "renderSeconds": 0.0032379627227783203, + "simulationSeconds": 0.006631016731262207, + "tick": 44 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0.006411075592041016, + "tick": 45 + }, + { + "renderSeconds": 0.002497076988220215, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.002544999122619629, + "simulationSeconds": 0.006199002265930176, + "tick": 46 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 0.006006002426147461, + "tick": 47 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.012695074081420898, + "tick": 49 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.0061609745025634766, + "tick": 50 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.006021976470947266, + "tick": 51 + }, + { + "renderSeconds": 0.0029419660568237305, + "simulationSeconds": 0.006235003471374512, + "tick": 52 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.002868056297302246, + "simulationSeconds": 0.006224989891052246, + "tick": 53 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.006211996078491211, + "tick": 54 + }, + { + "renderSeconds": 0.002852916717529297, + "simulationSeconds": 0.012772083282470703, + "tick": 56 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.006454944610595703, + "tick": 57 + }, + { + "renderSeconds": 0.0029059648513793945, + "simulationSeconds": 0.00618898868560791, + "tick": 58 + }, + { + "renderSeconds": 0.002545952796936035, + "simulationSeconds": 0.005977988243103027, + "tick": 59 + }, + { + "renderSeconds": 0.0035660266876220703, + "simulationSeconds": 0.0061119794845581055, + "tick": 60 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.006073951721191406, + "tick": 61 + }, + { + "renderSeconds": 0.002685070037841797, + "simulationSeconds": 0.006546974182128906, + "tick": 62 + }, + { + "renderSeconds": 0.0025540590286254883, + "simulationSeconds": 0.01226794719696045, + "tick": 64 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.006878972053527832, + "tick": 65 + }, + { + "renderSeconds": 0.0027669668197631836, + "simulationSeconds": 0.006394028663635254, + "tick": 66 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.006269931793212891, + "tick": 67 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0031709671020507812, + "simulationSeconds": 0.006832003593444824, + "tick": 68 + }, + { + "renderSeconds": 0.0029009580612182617, + "simulationSeconds": 0.006413936614990234, + "tick": 69 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.015292048454284668, + "tick": 71 + }, + { + "renderSeconds": 0.002618074417114258, + "simulationSeconds": 0.006159067153930664, + "tick": 72 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.006844043731689453, + "tick": 73 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.005888104438781738, + "tick": 74 + }, + { + "renderSeconds": 0.0030739307403564453, + "simulationSeconds": 0.007236957550048828, + "tick": 75 + }, + { + "renderSeconds": 0.0031970739364624023, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.00297391414642334, + "simulationSeconds": 0.0070160627365112305, + "tick": 76 + }, + { + "renderSeconds": 0.0027750730514526367, + "simulationSeconds": 0.006374001502990723, + "tick": 77 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.01255500316619873, + "tick": 79 + }, + { + "renderSeconds": 0.0028519630432128906, + "simulationSeconds": 0.0062340497970581055, + "tick": 80 + }, + { + "renderSeconds": 0.002695918083190918, + "simulationSeconds": 0.006312012672424316, + "tick": 81 + }, + { + "renderSeconds": 0.002606034278869629, + "simulationSeconds": 0.006200075149536133, + "tick": 82 + }, + { + "renderSeconds": 0.0029370784759521484, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0029369592666625977, + "simulationSeconds": 0.006487011909484863, + "tick": 83 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.006241917610168457, + "tick": 84 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.012459993362426758, + "tick": 86 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 0.006794929504394531, + "tick": 87 + }, + { + "renderSeconds": 0.0026820898056030273, + "simulationSeconds": 0.006659984588623047, + "tick": 88 + }, + { + "renderSeconds": 0.003181934356689453, + "simulationSeconds": 0.0070040225982666016, + "tick": 89 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006268978118896484, + "tick": 90 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 90 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.0064449310302734375, + "tick": 91 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.0063179731369018555, + "tick": 92 + }, + { + "renderSeconds": 0.0027979612350463867, + "simulationSeconds": 0.012642979621887207, + "tick": 94 + }, + { + "renderSeconds": 0.003072023391723633, + "simulationSeconds": 0.00636899471282959, + "tick": 95 + }, + { + "renderSeconds": 0.002642035484313965, + "simulationSeconds": 0.006997942924499512, + "tick": 96 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.006300091743469238, + "tick": 97 + }, + { + "renderSeconds": 0.003170013427734375, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 97 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.006330966949462891, + "tick": 98 + }, + { + "renderSeconds": 0.0027750730514526367, + "simulationSeconds": 0.006459951400756836, + "tick": 99 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.012927055358886719, + "tick": 101 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.008092045783996582, + "tick": 102 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.006926059722900391, + "tick": 103 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.006371974945068359, + "tick": 104 + }, + { + "renderSeconds": 0.0031229257583618164, + "simulationSeconds": 0.0063790082931518555, + "tick": 105 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.0062760114669799805, + "tick": 106 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.006240963935852051, + "tick": 107 + }, + { + "renderSeconds": 0.0026390552520751953, + "simulationSeconds": 0.013051033020019531, + "tick": 109 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0.006472110748291016, + "tick": 110 + }, + { + "renderSeconds": 0.003255009651184082, + "simulationSeconds": 0.0063250064849853516, + "tick": 111 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.006372928619384766, + "tick": 112 + }, + { + "renderSeconds": 0.0029859542846679688, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.006229996681213379, + "tick": 113 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006948947906494141, + "tick": 114 + }, + { + "renderSeconds": 0.004248976707458496, + "simulationSeconds": 0.01276397705078125, + "tick": 116 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0.00630497932434082, + "tick": 117 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.006484031677246094, + "tick": 118 + }, + { + "renderSeconds": 0.0029429197311401367, + "simulationSeconds": 0.006303906440734863, + "tick": 119 + }, + { + "renderSeconds": 0.002599000930786133, + "simulationSeconds": 0.006358027458190918, + "tick": 120 + }, + { + "renderSeconds": 0.0031709671020507812, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.006590008735656738, + "tick": 121 + }, + { + "renderSeconds": 0.0024700164794921875, + "simulationSeconds": 0.012820005416870117, + "tick": 122 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.01266491413116455, + "tick": 124 + }, + { + "renderSeconds": 0.002617955207824707, + "simulationSeconds": 0.006323099136352539, + "tick": 125 + }, + { + "renderSeconds": 0.002814054489135742, + "simulationSeconds": 0.00630497932434082, + "tick": 126 + }, + { + "renderSeconds": 0.0027060508728027344, + "simulationSeconds": 0.006152987480163574, + "tick": 127 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0025169849395751953, + "simulationSeconds": 0.006211996078491211, + "tick": 128 + }, + { + "renderSeconds": 0.0025119781494140625, + "simulationSeconds": 0.0067969560623168945, + "tick": 129 + }, + { + "renderSeconds": 0.0026880502700805664, + "simulationSeconds": 0.01285696029663086, + "tick": 131 + }, + { + "renderSeconds": 0.0026770830154418945, + "simulationSeconds": 0.00669097900390625, + "tick": 132 + }, + { + "renderSeconds": 0.002744913101196289, + "simulationSeconds": 0.007217049598693848, + "tick": 133 + }, + { + "renderSeconds": 0.002562999725341797, + "simulationSeconds": 0.0065070390701293945, + "tick": 134 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.006302952766418457, + "tick": 135 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002680063247680664, + "simulationSeconds": 0.0070650577545166016, + "tick": 136 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.006031990051269531, + "tick": 137 + }, + { + "renderSeconds": 0.0024739503860473633, + "simulationSeconds": 0.01234900951385498, + "tick": 139 + }, + { + "renderSeconds": 0.002762913703918457, + "simulationSeconds": 0.005998015403747559, + "tick": 140 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.006527066230773926, + "tick": 141 + }, + { + "renderSeconds": 0.002608060836791992, + "simulationSeconds": 0.006103038787841797, + "tick": 142 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 142 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006265997886657715, + "tick": 143 + }, + { + "renderSeconds": 0.0025229454040527344, + "simulationSeconds": 0.0071070194244384766, + "tick": 144 + }, + { + "renderSeconds": 0.002550959587097168, + "simulationSeconds": 0.012286901473999023, + "tick": 146 + }, + { + "renderSeconds": 0.002708911895751953, + "simulationSeconds": 0.005864977836608887, + "tick": 147 + }, + { + "renderSeconds": 0.0029549598693847656, + "simulationSeconds": 0.006020069122314453, + "tick": 148 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.006490945816040039, + "tick": 149 + }, + { + "renderSeconds": 0.0025529861450195312, + "simulationSeconds": 0.006268024444580078, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.01831258332822472, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 236, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006647944450378418, + "preparationSeconds": 0.6214799880981445, + "reducedMotion": false, + "renderSeconds": 0.43404126167297363, + "repetition": 2, + "scenePreparationSeconds": 0.22854602336883545, + "simulationSeconds": 0.9832471609115601, + "snapshotBuildCount": 151, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333332557231, + "postActionRecords": 149, + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.24896597862243652, + "frameCosts": [ + { + "renderSeconds": 0.001035928726196289, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0009579658508300781, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010180473327636719, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0008959770202636719, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0037440061569213867, + "simulationSeconds": 0.007920026779174805, + "tick": 1 + }, + { + "renderSeconds": 0.00250399112701416, + "simulationSeconds": 0.006060957908630371, + "tick": 2 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006831049919128418, + "tick": 3 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.0062329769134521484, + "tick": 4 + }, + { + "renderSeconds": 0.003058910369873047, + "simulationSeconds": 0.014060020446777344, + "tick": 6 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.007295966148376465, + "tick": 7 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0.007330060005187988, + "tick": 8 + }, + { + "renderSeconds": 0.00424504280090332, + "simulationSeconds": 0.007236003875732422, + "tick": 9 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.007382988929748535, + "tick": 10 + }, + { + "renderSeconds": 0.00318300724029541, + "simulationSeconds": 0.007022976875305176, + "tick": 11 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.007382035255432129, + "tick": 12 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.012488961219787598, + "tick": 14 + }, + { + "renderSeconds": 0.002957940101623535, + "simulationSeconds": 0.006058096885681152, + "tick": 15 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.0066869258880615234, + "tick": 16 + }, + { + "renderSeconds": 0.002707958221435547, + "simulationSeconds": 0.0061310529708862305, + "tick": 17 + }, + { + "renderSeconds": 0.002868056297302246, + "simulationSeconds": 0.006094932556152344, + "tick": 18 + }, + { + "renderSeconds": 0.0036319494247436523, + "simulationSeconds": 0.006340980529785156, + "tick": 19 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.012979984283447266, + "tick": 21 + }, + { + "renderSeconds": 0.003032088279724121, + "simulationSeconds": 0.0064449310302734375, + "tick": 22 + }, + { + "renderSeconds": 0.00359189510345459, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.00634002685546875, + "tick": 23 + }, + { + "renderSeconds": 0.002731919288635254, + "simulationSeconds": 0.0060350894927978516, + "tick": 24 + }, + { + "renderSeconds": 0.0028209686279296875, + "simulationSeconds": 0.006512999534606934, + "tick": 25 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.0061800479888916016, + "tick": 26 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.006682991981506348, + "tick": 27 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.012602925300598145, + "tick": 29 + }, + { + "renderSeconds": 0.002830028533935547, + "simulationSeconds": 0.0060939788818359375, + "tick": 30 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.006177067756652832, + "tick": 31 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.006725907325744629, + "tick": 32 + }, + { + "renderSeconds": 0.0027910470962524414, + "simulationSeconds": 0.006356000900268555, + "tick": 33 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0.006422996520996094, + "tick": 34 + }, + { + "renderSeconds": 0.0026129484176635742, + "simulationSeconds": 0.012272953987121582, + "tick": 36 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.006151080131530762, + "tick": 37 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 37 + }, + { + "renderSeconds": 0.0032039880752563477, + "simulationSeconds": 0.006108999252319336, + "tick": 38 + }, + { + "renderSeconds": 0.002496004104614258, + "simulationSeconds": 0.006395936012268066, + "tick": 39 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.006516933441162109, + "tick": 40 + }, + { + "renderSeconds": 0.0028960704803466797, + "simulationSeconds": 0.00642704963684082, + "tick": 41 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.0071849822998046875, + "tick": 42 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.012907981872558594, + "tick": 44 + }, + { + "renderSeconds": 0.0024939775466918945, + "simulationSeconds": 0.006207942962646484, + "tick": 45 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.011862993240356445, + "tick": 46 + }, + { + "renderSeconds": 0.002557039260864258, + "simulationSeconds": 0.006837964057922363, + "tick": 47 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.00589299201965332, + "tick": 48 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.006326079368591309, + "tick": 49 + }, + { + "renderSeconds": 0.0029560327529907227, + "simulationSeconds": 0.014487981796264648, + "tick": 51 + }, + { + "renderSeconds": 0.003571033477783203, + "simulationSeconds": 0.00719296932220459, + "tick": 52 + }, + { + "renderSeconds": 0.003944993019104004, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.004047989845275879, + "simulationSeconds": 0.008684992790222168, + "tick": 53 + }, + { + "renderSeconds": 0.004619956016540527, + "simulationSeconds": 0.009065032005310059, + "tick": 54 + }, + { + "renderSeconds": 0.0029500722885131836, + "simulationSeconds": 0.008623003959655762, + "tick": 55 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.014672994613647461, + "tick": 57 + }, + { + "renderSeconds": 0.0030770301818847656, + "simulationSeconds": 0.014168977737426758, + "tick": 59 + }, + { + "renderSeconds": 0.003416895866394043, + "simulationSeconds": 0.007273077964782715, + "tick": 60 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.007766008377075195, + "tick": 61 + }, + { + "renderSeconds": 0.002913951873779297, + "simulationSeconds": 0.006048083305358887, + "tick": 62 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.0063370466232299805, + "tick": 63 + }, + { + "renderSeconds": 0.002698063850402832, + "simulationSeconds": 0.0067359209060668945, + "tick": 64 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.012820959091186523, + "tick": 66 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006477952003479004, + "tick": 67 + }, + { + "renderSeconds": 0.002728104591369629, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.005994081497192383, + "tick": 68 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.007302999496459961, + "tick": 69 + }, + { + "renderSeconds": 0.003404974937438965, + "simulationSeconds": 0.007143974304199219, + "tick": 70 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.008489012718200684, + "tick": 71 + }, + { + "renderSeconds": 0.0028181076049804688, + "simulationSeconds": 0.007563948631286621, + "tick": 72 + }, + { + "renderSeconds": 0.003176093101501465, + "simulationSeconds": 0.01435995101928711, + "tick": 74 + }, + { + "renderSeconds": 0.0031969547271728516, + "simulationSeconds": 0.007158041000366211, + "tick": 75 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0033349990844726562, + "simulationSeconds": 0.007586956024169922, + "tick": 76 + }, + { + "renderSeconds": 0.0031290054321289062, + "simulationSeconds": 0.006892085075378418, + "tick": 77 + }, + { + "renderSeconds": 0.0032520294189453125, + "simulationSeconds": 0.007721066474914551, + "tick": 78 + }, + { + "renderSeconds": 0.0033489465713500977, + "simulationSeconds": 0.007117033004760742, + "tick": 79 + }, + { + "renderSeconds": 0.002978086471557617, + "simulationSeconds": 0.014428019523620605, + "tick": 81 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006358981132507324, + "tick": 82 + }, + { + "renderSeconds": 0.0032159090042114258, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 82 + }, + { + "renderSeconds": 0.0029391050338745117, + "simulationSeconds": 0.006293892860412598, + "tick": 83 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.006743907928466797, + "tick": 84 + }, + { + "renderSeconds": 0.003437042236328125, + "simulationSeconds": 0.0064029693603515625, + "tick": 85 + }, + { + "renderSeconds": 0.0032939910888671875, + "simulationSeconds": 0.007023930549621582, + "tick": 86 + }, + { + "renderSeconds": 0.0036458969116210938, + "simulationSeconds": 0.0077021121978759766, + "tick": 87 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0.01601696014404297, + "tick": 89 + }, + { + "renderSeconds": 0.003544926643371582, + "simulationSeconds": 0.007839083671569824, + "tick": 90 + }, + { + "renderSeconds": 0.003181934356689453, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 90 + }, + { + "renderSeconds": 0.0030870437622070312, + "simulationSeconds": 0.0073490142822265625, + "tick": 91 + }, + { + "renderSeconds": 0.0031540393829345703, + "simulationSeconds": 0.007368922233581543, + "tick": 92 + }, + { + "renderSeconds": 0.0032329559326171875, + "simulationSeconds": 0.007171034812927246, + "tick": 93 + }, + { + "renderSeconds": 0.002743959426879883, + "simulationSeconds": 0.006411075592041016, + "tick": 94 + }, + { + "renderSeconds": 0.0025429725646972656, + "simulationSeconds": 0.013130903244018555, + "tick": 96 + }, + { + "renderSeconds": 0.003177046775817871, + "simulationSeconds": 0.006564021110534668, + "tick": 97 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0025260448455810547, + "simulationSeconds": 0.006042003631591797, + "tick": 98 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006742000579833984, + "tick": 99 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.006186008453369141, + "tick": 100 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.006722927093505859, + "tick": 101 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.006301999092102051, + "tick": 102 + }, + { + "renderSeconds": 0.0026590824127197266, + "simulationSeconds": 0.018181920051574707, + "tick": 104 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.0067250728607177734, + "tick": 105 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0028759241104125977, + "simulationSeconds": 0.006873965263366699, + "tick": 106 + }, + { + "renderSeconds": 0.0027240514755249023, + "simulationSeconds": 0.006590008735656738, + "tick": 107 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.006514072418212891, + "tick": 108 + }, + { + "renderSeconds": 0.00301206111907959, + "simulationSeconds": 0.0065460205078125, + "tick": 109 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.012746930122375488, + "tick": 111 + }, + { + "renderSeconds": 0.0034170150756835938, + "simulationSeconds": 0.00808095932006836, + "tick": 112 + }, + { + "renderSeconds": 0.0030410289764404297, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.003515005111694336, + "simulationSeconds": 0.00833594799041748, + "tick": 113 + }, + { + "renderSeconds": 0.0029839277267456055, + "simulationSeconds": 0.007309079170227051, + "tick": 114 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.007078051567077637, + "tick": 115 + }, + { + "renderSeconds": 0.002525925636291504, + "simulationSeconds": 0.006258964538574219, + "tick": 116 + }, + { + "renderSeconds": 0.0025670528411865234, + "simulationSeconds": 0.0064239501953125, + "tick": 117 + }, + { + "renderSeconds": 0.002680063247680664, + "simulationSeconds": 0.012701988220214844, + "tick": 119 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.007124066352844238, + "tick": 120 + }, + { + "renderSeconds": 0.0031659603118896484, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.0035299062728881836, + "simulationSeconds": 0.008180022239685059, + "tick": 121 + }, + { + "renderSeconds": 0.0029529333114624023, + "simulationSeconds": 0.007097005844116211, + "tick": 122 + }, + { + "renderSeconds": 0.003242015838623047, + "simulationSeconds": 0.008360981941223145, + "tick": 123 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.007096052169799805, + "tick": 124 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.014399051666259766, + "tick": 126 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.0069609880447387695, + "tick": 127 + }, + { + "renderSeconds": 0.0028839111328125, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.0069969892501831055, + "tick": 128 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0.007248997688293457, + "tick": 129 + }, + { + "renderSeconds": 0.0035560131072998047, + "simulationSeconds": 0.0073490142822265625, + "tick": 130 + }, + { + "renderSeconds": 0.0038410425186157227, + "simulationSeconds": 0.008916974067687988, + "tick": 131 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.009128093719482422, + "tick": 132 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.013991951942443848, + "tick": 134 + }, + { + "renderSeconds": 0.0028378963470458984, + "simulationSeconds": 0.007032036781311035, + "tick": 135 + }, + { + "renderSeconds": 0.0034040212631225586, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.002969980239868164, + "simulationSeconds": 0.007030963897705078, + "tick": 136 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.0060700178146362305, + "tick": 137 + }, + { + "renderSeconds": 0.0026950836181640625, + "simulationSeconds": 0.006080031394958496, + "tick": 138 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.006518959999084473, + "tick": 139 + }, + { + "renderSeconds": 0.0025109052658081055, + "simulationSeconds": 0.012153029441833496, + "tick": 141 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.0071610212326049805, + "tick": 142 + }, + { + "renderSeconds": 0.002653956413269043, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0029320716857910156, + "simulationSeconds": 0.006085038185119629, + "tick": 143 + }, + { + "renderSeconds": 0.0027049779891967773, + "simulationSeconds": 0.006089925765991211, + "tick": 144 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.006240963935852051, + "tick": 145 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0.00639498233795166, + "tick": 146 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.005923032760620117, + "tick": 147 + }, + { + "renderSeconds": 0.0025959014892578125, + "simulationSeconds": 0.012243986129760742, + "tick": 149 + }, + { + "renderSeconds": 0.0029289722442626953, + "simulationSeconds": 0.007040977478027344, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.0500000000174623, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 236, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.00663304328918457, + "preparationSeconds": 0.5787190198898315, + "reducedMotion": true, + "renderSeconds": 0.4452545642852783, + "repetition": 2, + "scenePreparationSeconds": 0.21310794353485107, + "simulationSeconds": 1.0369800329208374, + "snapshotBuildCount": 151, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333332557231, + "postActionRecords": 149, + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics" + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.24734365940093994, + "frameCosts": [ + { + "renderSeconds": 0.002485036849975586, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010880231857299805, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008640289306640625, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009419918060302734, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003345012664794922, + "simulationSeconds": 0.0057599544525146484, + "tick": 1 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.0065898895263671875, + "tick": 2 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.006291985511779785, + "tick": 3 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.0063430070877075195, + "tick": 4 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.0063359737396240234, + "tick": 5 + }, + { + "renderSeconds": 0.0027370452880859375, + "simulationSeconds": 0.012899041175842285, + "tick": 7 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.002562999725341797, + "simulationSeconds": 0.006273984909057617, + "tick": 8 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.006443977355957031, + "tick": 9 + }, + { + "renderSeconds": 0.002847909927368164, + "simulationSeconds": 0.006443023681640625, + "tick": 10 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.014063000679016113, + "tick": 11 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.006106019020080566, + "tick": 12 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.012769937515258789, + "tick": 14 + }, + { + "renderSeconds": 0.0031850337982177734, + "simulationSeconds": 0.006373047828674316, + "tick": 15 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.006495952606201172, + "tick": 16 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.006411910057067871, + "tick": 17 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.006237030029296875, + "tick": 18 + }, + { + "renderSeconds": 0.0027049779891967773, + "simulationSeconds": 0.006246089935302734, + "tick": 19 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.006183028221130371, + "tick": 20 + }, + { + "renderSeconds": 0.003192901611328125, + "simulationSeconds": 0.013869047164916992, + "tick": 22 + }, + { + "renderSeconds": 0.0030350685119628906, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006845951080322266, + "tick": 23 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.006338953971862793, + "tick": 24 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.006263017654418945, + "tick": 25 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.006804943084716797, + "tick": 26 + }, + { + "renderSeconds": 0.0031450986862182617, + "simulationSeconds": 0.0062639713287353516, + "tick": 27 + }, + { + "renderSeconds": 0.002834916114807129, + "simulationSeconds": 0.013006091117858887, + "tick": 29 + }, + { + "renderSeconds": 0.002955913543701172, + "simulationSeconds": 0.0065490007400512695, + "tick": 30 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.002669095993041992, + "simulationSeconds": 0.0062819719314575195, + "tick": 31 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.007099032402038574, + "tick": 32 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.007864952087402344, + "tick": 33 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.0062400102615356445, + "tick": 34 + }, + { + "renderSeconds": 0.0027800798416137695, + "simulationSeconds": 0.006240963935852051, + "tick": 35 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.013427019119262695, + "tick": 37 + }, + { + "renderSeconds": 0.003139019012451172, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0030709505081176758, + "simulationSeconds": 0.007257938385009766, + "tick": 38 + }, + { + "renderSeconds": 0.0031011104583740234, + "simulationSeconds": 0.006363034248352051, + "tick": 39 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.0067369937896728516, + "tick": 40 + }, + { + "renderSeconds": 0.0028688907623291016, + "simulationSeconds": 0.006445050239562988, + "tick": 41 + }, + { + "renderSeconds": 0.002834916114807129, + "simulationSeconds": 0.00658106803894043, + "tick": 42 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.012236952781677246, + "tick": 44 + }, + { + "renderSeconds": 0.002526998519897461, + "simulationSeconds": 0.006183028221130371, + "tick": 45 + }, + { + "renderSeconds": 0.002917051315307617, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.007129073143005371, + "tick": 46 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.006573915481567383, + "tick": 47 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0.0068759918212890625, + "tick": 48 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.00625300407409668, + "tick": 49 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.006209015846252441, + "tick": 50 + }, + { + "renderSeconds": 0.002684950828552246, + "simulationSeconds": 0.013275980949401855, + "tick": 52 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 52 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.008602023124694824, + "tick": 53 + }, + { + "renderSeconds": 0.002982020378112793, + "simulationSeconds": 0.0074530839920043945, + "tick": 54 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.006245017051696777, + "tick": 55 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.006834983825683594, + "tick": 56 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.0063478946685791016, + "tick": 57 + }, + { + "renderSeconds": 0.0026140213012695312, + "simulationSeconds": 0.012908935546875, + "tick": 59 + }, + { + "renderSeconds": 0.0028650760650634766, + "simulationSeconds": 0.006644010543823242, + "tick": 60 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.006957054138183594, + "tick": 61 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.006391048431396484, + "tick": 62 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0.0069609880447387695, + "tick": 63 + }, + { + "renderSeconds": 0.0029380321502685547, + "simulationSeconds": 0.006566047668457031, + "tick": 64 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.006361961364746094, + "tick": 65 + }, + { + "renderSeconds": 0.0030660629272460938, + "simulationSeconds": 0.013242959976196289, + "tick": 67 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.002812981605529785, + "simulationSeconds": 0.006302952766418457, + "tick": 68 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.006926059722900391, + "tick": 69 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0.0065839290618896484, + "tick": 70 + }, + { + "renderSeconds": 0.00309908390045166, + "simulationSeconds": 0.007042050361633301, + "tick": 71 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.00645899772644043, + "tick": 72 + }, + { + "renderSeconds": 0.0031970739364624023, + "simulationSeconds": 0.013728976249694824, + "tick": 74 + }, + { + "renderSeconds": 0.0035790205001831055, + "simulationSeconds": 0.007412075996398926, + "tick": 75 + }, + { + "renderSeconds": 0.0030280351638793945, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002682924270629883, + "simulationSeconds": 0.006523013114929199, + "tick": 76 + }, + { + "renderSeconds": 0.00360107421875, + "simulationSeconds": 0.006736040115356445, + "tick": 77 + }, + { + "renderSeconds": 0.003156900405883789, + "simulationSeconds": 0.006304025650024414, + "tick": 78 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.006205081939697266, + "tick": 79 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.0069969892501831055, + "tick": 80 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.012987017631530762, + "tick": 82 + }, + { + "renderSeconds": 0.0032280683517456055, + "simulationSeconds": 9.5367431640625e-07, + "tick": 82 + }, + { + "renderSeconds": 0.002904057502746582, + "simulationSeconds": 0.006545066833496094, + "tick": 83 + }, + { + "renderSeconds": 0.0032039880752563477, + "simulationSeconds": 0.006722927093505859, + "tick": 84 + }, + { + "renderSeconds": 0.0030580759048461914, + "simulationSeconds": 0.0062628984451293945, + "tick": 85 + }, + { + "renderSeconds": 0.002816915512084961, + "simulationSeconds": 0.007112979888916016, + "tick": 86 + }, + { + "renderSeconds": 0.0031729936599731445, + "simulationSeconds": 0.00636601448059082, + "tick": 87 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.012601017951965332, + "tick": 89 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.006143927574157715, + "tick": 90 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006090998649597168, + "tick": 91 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.00616908073425293, + "tick": 92 + }, + { + "renderSeconds": 0.0026950836181640625, + "simulationSeconds": 0.006209969520568848, + "tick": 93 + }, + { + "renderSeconds": 0.002868056297302246, + "simulationSeconds": 0.006184935569763184, + "tick": 94 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.0063970088958740234, + "tick": 95 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.012954115867614746, + "tick": 97 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 97 + }, + { + "renderSeconds": 0.0030781030654907227, + "simulationSeconds": 0.007483959197998047, + "tick": 98 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.00705409049987793, + "tick": 99 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.0070220232009887695, + "tick": 100 + }, + { + "renderSeconds": 0.0031790733337402344, + "simulationSeconds": 0.006886959075927734, + "tick": 101 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.006118059158325195, + "tick": 102 + }, + { + "renderSeconds": 0.0030579566955566406, + "simulationSeconds": 0.012833952903747559, + "tick": 104 + }, + { + "renderSeconds": 0.0026929378509521484, + "simulationSeconds": 0.00639498233795166, + "tick": 105 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0033680200576782227, + "simulationSeconds": 0.007181048393249512, + "tick": 106 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0.0070639848709106445, + "tick": 107 + }, + { + "renderSeconds": 0.0030280351638793945, + "simulationSeconds": 0.00725102424621582, + "tick": 108 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.00630497932434082, + "tick": 109 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0.006094098091125488, + "tick": 110 + }, + { + "renderSeconds": 0.002716064453125, + "simulationSeconds": 0.012583017349243164, + "tick": 112 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 112 + }, + { + "renderSeconds": 0.002641916275024414, + "simulationSeconds": 0.006358027458190918, + "tick": 113 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.006211996078491211, + "tick": 114 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.006114959716796875, + "tick": 115 + }, + { + "renderSeconds": 0.0030350685119628906, + "simulationSeconds": 0.00639796257019043, + "tick": 116 + }, + { + "renderSeconds": 0.0031069517135620117, + "simulationSeconds": 0.006126999855041504, + "tick": 117 + }, + { + "renderSeconds": 0.0027658939361572266, + "simulationSeconds": 0.0131911039352417, + "tick": 119 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006371974945068359, + "tick": 120 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.0108489990234375, + "simulationSeconds": 0.006659984588623047, + "tick": 121 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.0061969757080078125, + "tick": 122 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.006257057189941406, + "tick": 123 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.006746053695678711, + "tick": 124 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.007052898406982422, + "tick": 125 + }, + { + "renderSeconds": 0.0036460161209106445, + "simulationSeconds": 0.01621699333190918, + "tick": 127 + }, + { + "renderSeconds": 0.0037959814071655273, + "simulationSeconds": 9.5367431640625e-07, + "tick": 127 + }, + { + "renderSeconds": 0.0035790205001831055, + "simulationSeconds": 0.009234070777893066, + "tick": 128 + }, + { + "renderSeconds": 0.0035539865493774414, + "simulationSeconds": 0.009061932563781738, + "tick": 129 + }, + { + "renderSeconds": 0.00295102596282959, + "simulationSeconds": 0.007773041725158691, + "tick": 130 + }, + { + "renderSeconds": 0.0032989978790283203, + "simulationSeconds": 0.0074689388275146484, + "tick": 131 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.0070340633392333984, + "tick": 132 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.013872027397155762, + "tick": 134 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.007346987724304199, + "tick": 135 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.006421923637390137, + "tick": 136 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.006090998649597168, + "tick": 137 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.005945086479187012, + "tick": 138 + }, + { + "renderSeconds": 0.0026880502700805664, + "simulationSeconds": 0.006463050842285156, + "tick": 139 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.006142973899841309, + "tick": 140 + }, + { + "renderSeconds": 0.0028829574584960938, + "simulationSeconds": 0.012696027755737305, + "tick": 142 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0035529136657714844, + "simulationSeconds": 0.006024003028869629, + "tick": 143 + }, + { + "renderSeconds": 0.0025360584259033203, + "simulationSeconds": 0.012545943260192871, + "tick": 144 + }, + { + "renderSeconds": 0.0026009082794189453, + "simulationSeconds": 0.006049036979675293, + "tick": 145 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006168961524963379, + "tick": 146 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.005908966064453125, + "tick": 147 + }, + { + "renderSeconds": 0.0025409460067749023, + "simulationSeconds": 0.012462973594665527, + "tick": 149 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.005997061729431152, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03418583335587755, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 238, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.00732421875, + "preparationSeconds": 0.6078379154205322, + "reducedMotion": true, + "renderSeconds": 0.44326066970825195, + "repetition": 3, + "scenePreparationSeconds": 0.23552894592285156, + "simulationSeconds": 1.0038591623306274, + "snapshotBuildCount": 152, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333332557231, + "postActionRecords": 150, + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics" + } +] diff --git a/docs/review/player-low-recovery/contact-observations.json b/docs/review/player-low-recovery/contact-observations.json new file mode 100644 index 00000000..ee91bc8e --- /dev/null +++ b/docs/review/player-low-recovery/contact-observations.json @@ -0,0 +1,5633 @@ +{ + "status": "MEASUREMENTS_NOT_VISUAL_ACCEPTANCE", + "method": "Projected authored toe plus rendered root; not pixel tracked. Single observations yield null displacement. Holds and missing frames retained. No tolerance inferred.", + "segments": [ + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228952.33333333337, + "tick": 28, + "frame": 8, + "toeX": 228.0, + "toeY": 288.5 + }, + { + "time": 228952.35000000006, + "tick": 29, + "frame": 8, + "toeX": 228.0, + "toeY": 286.5 + }, + { + "time": 228952.36666666673, + "tick": 30, + "frame": 9, + "toeX": 228.0, + "toeY": 288.25 + }, + { + "time": 228952.3833333334, + "tick": 31, + "frame": 9, + "toeX": 228.0, + "toeY": 286.25 + }, + { + "time": 228952.40000000005, + "tick": 32, + "frame": 10, + "toeX": 228.0, + "toeY": 288.0 + }, + { + "time": 228952.41666666672, + "tick": 33, + "frame": 10, + "toeX": 228.0, + "toeY": 286.0 + }, + { + "time": 228952.43333333338, + "tick": 34, + "frame": 11, + "toeX": 228.0, + "toeY": 287.75 + }, + { + "time": 228952.45000000004, + "tick": 35, + "frame": 11, + "toeX": 228.0, + "toeY": 285.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228952.83333333337, + "tick": 58, + "frame": 8, + "toeX": 228.0, + "toeY": 228.5 + }, + { + "time": 228952.85000000006, + "tick": 59, + "frame": 8, + "toeX": 228.0, + "toeY": 226.5 + }, + { + "time": 228952.86666666673, + "tick": 60, + "frame": 9, + "toeX": 228.0, + "toeY": 228.25 + }, + { + "time": 228952.8833333334, + "tick": 61, + "frame": 9, + "toeX": 228.0, + "toeY": 226.25 + }, + { + "time": 228952.90000000005, + "tick": 62, + "frame": 10, + "toeX": 228.0, + "toeY": 228.0 + }, + { + "time": 228952.91666666672, + "tick": 63, + "frame": 10, + "toeX": 228.0, + "toeY": 226.0 + }, + { + "time": 228952.93333333338, + "tick": 64, + "frame": 11, + "toeX": 228.0, + "toeY": 227.75 + }, + { + "time": 228952.95000000004, + "tick": 65, + "frame": 11, + "toeX": 228.0, + "toeY": 225.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228953.33333333337, + "tick": 88, + "frame": 8, + "toeX": 228.0, + "toeY": 168.5 + }, + { + "time": 228953.35000000006, + "tick": 89, + "frame": 8, + "toeX": 228.0, + "toeY": 166.5 + }, + { + "time": 228953.36666666673, + "tick": 90, + "frame": 9, + "toeX": 228.0, + "toeY": 168.25 + }, + { + "time": 228953.3833333334, + "tick": 91, + "frame": 9, + "toeX": 228.0, + "toeY": 166.25 + }, + { + "time": 228953.40000000005, + "tick": 92, + "frame": 10, + "toeX": 228.0, + "toeY": 168.0 + }, + { + "time": 228953.41666666672, + "tick": 93, + "frame": 10, + "toeX": 228.0, + "toeY": 166.0 + }, + { + "time": 228953.43333333338, + "tick": 94, + "frame": 11, + "toeX": 228.0, + "toeY": 167.75 + }, + { + "time": 228953.45000000004, + "tick": 95, + "frame": 11, + "toeX": 228.0, + "toeY": 165.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 3, + "distinctFrames": 2, + "firstFrame": 8, + "lastFrame": 9, + "durationSeconds": 0.03333333335467614, + "rangeLogicalPixels": 2.0, + "observations": [ + { + "time": 228953.83333333337, + "tick": 118, + "frame": 8, + "toeX": 228.0, + "toeY": 108.5 + }, + { + "time": 228953.85000000006, + "tick": 119, + "frame": 8, + "toeX": 228.0, + "toeY": 106.5 + }, + { + "time": 228953.86666666673, + "tick": 120, + "frame": 9, + "toeX": 228.0, + "toeY": 108.25 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 2, + "distinctFrames": 2, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.09913058331585489, + "rangeLogicalPixels": 0.75, + "observations": [ + { + "time": 228952.0759739584, + "tick": 13, + "frame": 0, + "toeX": 220.0, + "toeY": 318.5 + }, + { + "time": 228952.1751045417, + "tick": 19, + "frame": 3, + "toeX": 220.0, + "toeY": 317.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228952.58333333337, + "tick": 43, + "frame": 0, + "toeX": 220.0, + "toeY": 258.5 + }, + { + "time": 228952.60000000006, + "tick": 44, + "frame": 0, + "toeX": 220.0, + "toeY": 256.5 + }, + { + "time": 228952.61666666673, + "tick": 45, + "frame": 1, + "toeX": 220.0, + "toeY": 258.25 + }, + { + "time": 228952.6333333334, + "tick": 46, + "frame": 1, + "toeX": 220.0, + "toeY": 256.25 + }, + { + "time": 228952.65000000005, + "tick": 47, + "frame": 2, + "toeX": 220.0, + "toeY": 258.0 + }, + { + "time": 228952.66666666672, + "tick": 48, + "frame": 2, + "toeX": 220.0, + "toeY": 256.0 + }, + { + "time": 228952.68333333338, + "tick": 49, + "frame": 3, + "toeX": 220.0, + "toeY": 257.75 + }, + { + "time": 228952.70000000004, + "tick": 50, + "frame": 3, + "toeX": 220.0, + "toeY": 255.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228953.08333333337, + "tick": 73, + "frame": 0, + "toeX": 220.0, + "toeY": 198.5 + }, + { + "time": 228953.10000000006, + "tick": 74, + "frame": 0, + "toeX": 220.0, + "toeY": 196.5 + }, + { + "time": 228953.11666666673, + "tick": 75, + "frame": 1, + "toeX": 220.0, + "toeY": 198.25 + }, + { + "time": 228953.1333333334, + "tick": 76, + "frame": 1, + "toeX": 220.0, + "toeY": 196.25 + }, + { + "time": 228953.15000000005, + "tick": 77, + "frame": 2, + "toeX": 220.0, + "toeY": 198.0 + }, + { + "time": 228953.16666666672, + "tick": 78, + "frame": 2, + "toeX": 220.0, + "toeY": 196.0 + }, + { + "time": 228953.18333333338, + "tick": 79, + "frame": 3, + "toeX": 220.0, + "toeY": 197.75 + }, + { + "time": 228953.20000000004, + "tick": 80, + "frame": 3, + "toeX": 220.0, + "toeY": 195.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228953.58333333337, + "tick": 103, + "frame": 0, + "toeX": 220.0, + "toeY": 138.5 + }, + { + "time": 228953.60000000006, + "tick": 104, + "frame": 0, + "toeX": 220.0, + "toeY": 136.5 + }, + { + "time": 228953.61666666673, + "tick": 105, + "frame": 1, + "toeX": 220.0, + "toeY": 138.25 + }, + { + "time": 228953.6333333334, + "tick": 106, + "frame": 1, + "toeX": 220.0, + "toeY": 136.25 + }, + { + "time": 228953.65000000005, + "tick": 107, + "frame": 2, + "toeX": 220.0, + "toeY": 138.0 + }, + { + "time": 228953.66666666672, + "tick": 108, + "frame": 2, + "toeX": 220.0, + "toeY": 136.0 + }, + { + "time": 228953.68333333338, + "tick": 109, + "frame": 3, + "toeX": 220.0, + "toeY": 137.75 + }, + { + "time": 228953.70000000004, + "tick": 110, + "frame": 3, + "toeX": 220.0, + "toeY": 135.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.09386166665353812, + "rangeLogicalPixels": 2.0, + "observations": [ + { + "time": 228959.82280500006, + "tick": 31, + "frame": 8, + "toeX": 228.0, + "toeY": 282.5 + }, + { + "time": 228959.85000000006, + "tick": 33, + "frame": 9, + "toeX": 228.0, + "toeY": 282.25 + }, + { + "time": 228959.8833333334, + "tick": 35, + "frame": 10, + "toeX": 228.0, + "toeY": 282.0 + }, + { + "time": 228959.90000000005, + "tick": 36, + "frame": 11, + "toeX": 228.0, + "toeY": 283.75 + }, + { + "time": 228959.91666666672, + "tick": 37, + "frame": 11, + "toeX": 228.0, + "toeY": 281.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228960.30000000005, + "tick": 60, + "frame": 8, + "toeX": 228.0, + "toeY": 224.5 + }, + { + "time": 228960.3166666667, + "tick": 61, + "frame": 8, + "toeX": 228.0, + "toeY": 222.5 + }, + { + "time": 228960.33333333337, + "tick": 62, + "frame": 9, + "toeX": 228.0, + "toeY": 224.25 + }, + { + "time": 228960.35000000006, + "tick": 63, + "frame": 9, + "toeX": 228.0, + "toeY": 222.25 + }, + { + "time": 228960.36666666673, + "tick": 64, + "frame": 10, + "toeX": 228.0, + "toeY": 224.0 + }, + { + "time": 228960.3833333334, + "tick": 65, + "frame": 10, + "toeX": 228.0, + "toeY": 222.0 + }, + { + "time": 228960.40000000005, + "tick": 66, + "frame": 11, + "toeX": 228.0, + "toeY": 223.75 + }, + { + "time": 228960.41666666672, + "tick": 67, + "frame": 11, + "toeX": 228.0, + "toeY": 221.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228960.80000000005, + "tick": 90, + "frame": 8, + "toeX": 228.0, + "toeY": 164.5 + }, + { + "time": 228960.8166666667, + "tick": 91, + "frame": 8, + "toeX": 228.0, + "toeY": 162.5 + }, + { + "time": 228960.83333333337, + "tick": 92, + "frame": 9, + "toeX": 228.0, + "toeY": 164.25 + }, + { + "time": 228960.85000000006, + "tick": 93, + "frame": 9, + "toeX": 228.0, + "toeY": 162.25 + }, + { + "time": 228960.86666666673, + "tick": 94, + "frame": 10, + "toeX": 228.0, + "toeY": 164.0 + }, + { + "time": 228960.8833333334, + "tick": 95, + "frame": 10, + "toeX": 228.0, + "toeY": 162.0 + }, + { + "time": 228960.90000000005, + "tick": 96, + "frame": 11, + "toeX": 228.0, + "toeY": 163.75 + }, + { + "time": 228960.91666666672, + "tick": 97, + "frame": 11, + "toeX": 228.0, + "toeY": 161.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 1, + "distinctFrames": 1, + "firstFrame": 8, + "lastFrame": 8, + "durationSeconds": 0.0, + "rangeLogicalPixels": null, + "observations": [ + { + "time": 228961.30000000005, + "tick": 120, + "frame": 8, + "toeX": 228.0, + "toeY": 104.5 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 2, + "distinctFrames": 2, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.12188512500142679, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228959.5426494584, + "tick": 15, + "frame": 0, + "toeX": 220.0, + "toeY": 314.5 + }, + { + "time": 228959.6645345834, + "tick": 22, + "frame": 3, + "toeX": 220.0, + "toeY": 311.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 4, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.09589145833160728, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 228960.05410854172, + "tick": 45, + "frame": 0, + "toeX": 220.0, + "toeY": 254.5 + }, + { + "time": 228960.0954825834, + "tick": 48, + "frame": 1, + "toeX": 220.0, + "toeY": 252.25 + }, + { + "time": 228960.11666666673, + "tick": 49, + "frame": 2, + "toeX": 220.0, + "toeY": 254.0 + }, + { + "time": 228960.15000000005, + "tick": 51, + "frame": 3, + "toeX": 220.0, + "toeY": 253.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228960.55000000005, + "tick": 75, + "frame": 0, + "toeX": 220.0, + "toeY": 194.5 + }, + { + "time": 228960.5666666667, + "tick": 76, + "frame": 0, + "toeX": 220.0, + "toeY": 192.5 + }, + { + "time": 228960.58333333337, + "tick": 77, + "frame": 1, + "toeX": 220.0, + "toeY": 194.25 + }, + { + "time": 228960.60000000006, + "tick": 78, + "frame": 1, + "toeX": 220.0, + "toeY": 192.25 + }, + { + "time": 228960.61666666673, + "tick": 79, + "frame": 2, + "toeX": 220.0, + "toeY": 194.0 + }, + { + "time": 228960.6333333334, + "tick": 80, + "frame": 2, + "toeX": 220.0, + "toeY": 192.0 + }, + { + "time": 228960.65000000005, + "tick": 81, + "frame": 3, + "toeX": 220.0, + "toeY": 193.75 + }, + { + "time": 228960.66666666672, + "tick": 82, + "frame": 3, + "toeX": 220.0, + "toeY": 191.75 + } + ] + }, + { + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228961.05000000005, + "tick": 105, + "frame": 0, + "toeX": 220.0, + "toeY": 134.5 + }, + { + "time": 228961.0666666667, + "tick": 106, + "frame": 0, + "toeX": 220.0, + "toeY": 132.5 + }, + { + "time": 228961.08333333337, + "tick": 107, + "frame": 1, + "toeX": 220.0, + "toeY": 134.25 + }, + { + "time": 228961.10000000006, + "tick": 108, + "frame": 1, + "toeX": 220.0, + "toeY": 132.25 + }, + { + "time": 228961.11666666673, + "tick": 109, + "frame": 2, + "toeX": 220.0, + "toeY": 134.0 + }, + { + "time": 228961.1333333334, + "tick": 110, + "frame": 2, + "toeX": 220.0, + "toeY": 132.0 + }, + { + "time": 228961.15000000005, + "tick": 111, + "frame": 3, + "toeX": 220.0, + "toeY": 133.75 + }, + { + "time": 228961.16666666672, + "tick": 112, + "frame": 3, + "toeX": 220.0, + "toeY": 131.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 7.25, + "observations": [ + { + "time": 228971.08333333337, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 328.5 + }, + { + "time": 228971.10000000006, + "tick": 18, + "frame": 8, + "toeX": 228.0, + "toeY": 326.5 + }, + { + "time": 228971.11666666673, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 329.25 + }, + { + "time": 228971.1333333334, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 328.25 + }, + { + "time": 228971.15000000005, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 331.0 + }, + { + "time": 228971.16666666672, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 330.0 + }, + { + "time": 228971.18333333338, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 333.75 + }, + { + "time": 228971.20000000004, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 332.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 7.25, + "observations": [ + { + "time": 228971.58333333337, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 298.5 + }, + { + "time": 228971.60000000006, + "tick": 48, + "frame": 8, + "toeX": 228.0, + "toeY": 296.5 + }, + { + "time": 228971.61666666673, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 299.25 + }, + { + "time": 228971.6333333334, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 298.25 + }, + { + "time": 228971.65000000005, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 301.0 + }, + { + "time": 228971.66666666672, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 300.0 + }, + { + "time": 228971.68333333338, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 303.75 + }, + { + "time": 228971.70000000004, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 302.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 7.25, + "observations": [ + { + "time": 228972.08333333337, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 268.5 + }, + { + "time": 228972.10000000006, + "tick": 78, + "frame": 8, + "toeX": 228.0, + "toeY": 266.5 + }, + { + "time": 228972.11666666673, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 269.25 + }, + { + "time": 228972.1333333334, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 268.25 + }, + { + "time": 228972.15000000005, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 271.0 + }, + { + "time": 228972.16666666672, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 270.0 + }, + { + "time": 228972.18333333338, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 273.75 + }, + { + "time": 228972.20000000004, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 272.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 7.25, + "observations": [ + { + "time": 228972.58333333337, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 238.5 + }, + { + "time": 228972.60000000006, + "tick": 108, + "frame": 8, + "toeX": 228.0, + "toeY": 236.5 + }, + { + "time": 228972.61666666673, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 239.25 + }, + { + "time": 228972.6333333334, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 238.25 + }, + { + "time": 228972.65000000005, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 241.0 + }, + { + "time": 228972.66666666672, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 240.0 + }, + { + "time": 228972.68333333338, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 243.75 + }, + { + "time": 228972.70000000004, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 242.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 7.25, + "observations": [ + { + "time": 228970.83333333337, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 228970.85000000006, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 341.5 + }, + { + "time": 228970.86666666673, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 344.25 + }, + { + "time": 228970.8833333334, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 343.25 + }, + { + "time": 228970.90000000005, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 346.0 + }, + { + "time": 228970.91666666672, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 345.0 + }, + { + "time": 228970.93333333338, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 348.75 + }, + { + "time": 228970.95000000004, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 347.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 7.25, + "observations": [ + { + "time": 228971.33333333337, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 313.5 + }, + { + "time": 228971.35000000006, + "tick": 33, + "frame": 0, + "toeX": 220.0, + "toeY": 311.5 + }, + { + "time": 228971.36666666673, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 314.25 + }, + { + "time": 228971.3833333334, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 313.25 + }, + { + "time": 228971.40000000005, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 316.0 + }, + { + "time": 228971.41666666672, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 315.0 + }, + { + "time": 228971.43333333338, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 318.75 + }, + { + "time": 228971.45000000004, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 317.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 7.25, + "observations": [ + { + "time": 228971.83333333337, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 283.5 + }, + { + "time": 228971.85000000006, + "tick": 63, + "frame": 0, + "toeX": 220.0, + "toeY": 281.5 + }, + { + "time": 228971.86666666673, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 284.25 + }, + { + "time": 228971.8833333334, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 283.25 + }, + { + "time": 228971.90000000005, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 286.0 + }, + { + "time": 228971.91666666672, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 285.0 + }, + { + "time": 228971.93333333338, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 288.75 + }, + { + "time": 228971.95000000004, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 287.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 7.25, + "observations": [ + { + "time": 228972.33333333337, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 253.5 + }, + { + "time": 228972.35000000006, + "tick": 93, + "frame": 0, + "toeX": 220.0, + "toeY": 251.5 + }, + { + "time": 228972.36666666673, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 254.25 + }, + { + "time": 228972.3833333334, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 253.25 + }, + { + "time": 228972.40000000005, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 256.0 + }, + { + "time": 228972.41666666672, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 255.0 + }, + { + "time": 228972.43333333338, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 258.75 + }, + { + "time": 228972.45000000004, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 257.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.1169839583162684, + "rangeLogicalPixels": 4.75, + "observations": [ + { + "time": 228990.26666666672, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 228990.28333333338, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 228990.30000000005, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 228990.3166666667, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 228990.33333333337, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 228990.35000000006, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 228990.38365062504, + "tick": 24, + "frame": 11, + "toeX": 228.0, + "toeY": 307.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228990.76666666672, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 228990.78333333338, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 228990.80000000005, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 228990.8166666667, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 228990.83333333337, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 228990.85000000006, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 228990.86666666673, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 228990.8833333334, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228991.26666666672, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 228991.28333333338, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 228991.30000000005, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 228991.3166666667, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 228991.33333333337, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 228991.35000000006, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 228991.36666666673, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 228991.3833333334, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228991.76666666672, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 228991.78333333338, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 228991.80000000005, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 228991.8166666667, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 228991.83333333337, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 228991.85000000006, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 228991.86666666673, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 228991.8833333334, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.12146320834290236, + "rangeLogicalPixels": 4.75, + "observations": [ + { + "time": 228990.01666666672, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 228990.03333333338, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 228990.05000000005, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 228990.0666666667, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 228990.08333333337, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 228990.10000000006, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 228990.13812987506, + "tick": 9, + "frame": 3, + "toeX": 220.0, + "toeY": 337.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228990.51666666672, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 228990.53333333338, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 228990.55000000005, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 228990.5666666667, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 228990.58333333337, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 228990.60000000006, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 228990.61666666673, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 228990.6333333334, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228991.01666666672, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 228991.03333333338, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 228991.05000000005, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 228991.0666666667, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 228991.08333333337, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 228991.10000000006, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 228991.1333333334, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228991.51666666672, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 228991.53333333338, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 228991.55000000005, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 228991.5666666667, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 228991.58333333337, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 228991.60000000006, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 228991.61666666673, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 228991.6333333334, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 5, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 228974.93333333338, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 336.5 + }, + { + "time": 228974.96913062505, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 338.75 + }, + { + "time": 228975.0129684167, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 341.5 + }, + { + "time": 228975.03333333338, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 344.75 + }, + { + "time": 228975.05000000005, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 344.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 228975.43333333338, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 321.5 + }, + { + "time": 228975.45000000004, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 321.0 + }, + { + "time": 228975.4666666667, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 324.25 + }, + { + "time": 228975.4833333334, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 323.25 + }, + { + "time": 228975.50000000006, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 326.5 + }, + { + "time": 228975.51666666672, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 326.0 + }, + { + "time": 228975.53333333338, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 329.75 + }, + { + "time": 228975.55000000005, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 329.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 228975.93333333338, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 306.5 + }, + { + "time": 228975.95000000004, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 306.0 + }, + { + "time": 228975.9666666667, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 309.25 + }, + { + "time": 228975.9833333334, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 228976.00000000006, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 311.5 + }, + { + "time": 228976.01666666672, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 311.0 + }, + { + "time": 228976.03333333338, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 314.75 + }, + { + "time": 228976.05000000005, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 314.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 228976.43333333338, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 291.5 + }, + { + "time": 228976.45000000004, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 291.0 + }, + { + "time": 228976.4666666667, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 294.25 + }, + { + "time": 228976.4833333334, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 293.25 + }, + { + "time": 228976.50000000006, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 296.5 + }, + { + "time": 228976.51666666672, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 296.0 + }, + { + "time": 228976.53333333338, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 299.75 + }, + { + "time": 228976.55000000005, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 299.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.25, + "observations": [ + { + "time": 228974.68333333338, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 344.0 + }, + { + "time": 228974.70000000004, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 343.5 + }, + { + "time": 228974.7166666667, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 346.75 + }, + { + "time": 228974.7333333334, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 345.75 + }, + { + "time": 228974.76666666672, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 348.5 + }, + { + "time": 228974.80000000005, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 351.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.12116224999772385, + "rangeLogicalPixels": 7.75, + "observations": [ + { + "time": 228975.18333333338, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 329.0 + }, + { + "time": 228975.20000000004, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 328.5 + }, + { + "time": 228975.2166666667, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 331.75 + }, + { + "time": 228975.2333333334, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 330.75 + }, + { + "time": 228975.26863295838, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 333.5 + }, + { + "time": 228975.30449558338, + "tick": 39, + "frame": 3, + "toeX": 220.0, + "toeY": 336.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.12308575000497513, + "rangeLogicalPixels": 7.75, + "observations": [ + { + "time": 228975.68333333338, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 314.0 + }, + { + "time": 228975.70000000004, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 313.5 + }, + { + "time": 228975.7166666667, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 316.75 + }, + { + "time": 228975.7333333334, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 315.75 + }, + { + "time": 228975.76925962506, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 318.5 + }, + { + "time": 228975.80641908338, + "tick": 69, + "frame": 3, + "toeX": 220.0, + "toeY": 321.25 + } + ] + }, + { + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 8.75, + "observations": [ + { + "time": 228976.18333333338, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 299.0 + }, + { + "time": 228976.20000000004, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 298.5 + }, + { + "time": 228976.2166666667, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 301.75 + }, + { + "time": 228976.2333333334, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 300.75 + }, + { + "time": 228976.25000000006, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 304.0 + }, + { + "time": 228976.26666666672, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 303.5 + }, + { + "time": 228976.28333333338, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 307.25 + }, + { + "time": 228976.30000000005, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 306.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 6, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.09999999997671694, + "rangeLogicalPixels": 2.25, + "observations": [ + { + "time": 228955.9833333334, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 228956.01666666672, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 228956.03333333338, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 228956.05000000005, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 228956.0666666667, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 228956.08333333337, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228956.4666666667, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 228956.4833333334, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 228956.50000000006, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 228956.51666666672, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 228956.53333333338, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 228956.55000000005, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 228956.5666666667, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 228956.58333333337, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228956.9666666667, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 228956.9833333334, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 228957.00000000006, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 228957.01666666672, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 228957.03333333338, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 228957.05000000005, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 228957.0666666667, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 228957.08333333337, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228957.4666666667, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 228957.4833333334, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 228957.50000000006, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 228957.51666666672, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 228957.53333333338, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 228957.55000000005, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 228957.5666666667, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 228957.58333333337, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228955.7166666667, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 228955.75000000006, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 228955.76666666672, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 228955.78333333338, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 228955.80000000005, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 228955.8166666667, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 228955.83333333337, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228956.2166666667, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 228956.25000000006, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 228956.26666666672, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 228956.28333333338, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 228956.30000000005, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 228956.3166666667, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 228956.33333333337, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228956.7166666667, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 228956.7333333334, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 228956.75000000006, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 228956.76666666672, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 228956.78333333338, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 228956.80000000005, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 228956.8166666667, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 228956.83333333337, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228957.2166666667, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 228957.2333333334, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 228957.25000000006, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 228957.26666666672, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 228957.28333333338, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 228957.30000000005, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 228957.3166666667, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 228957.33333333337, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228978.7166666667, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 228978.7333333334, + "tick": 18, + "frame": 8, + "toeX": 228.0, + "toeY": 308.5 + }, + { + "time": 228978.75000000006, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 228978.76666666672, + "tick": 20, + "frame": 9, + "toeX": 228.0, + "toeY": 308.25 + }, + { + "time": 228978.78333333338, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 228978.80000000005, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 228978.8166666667, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 228978.83333333337, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228979.2166666667, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 228979.2333333334, + "tick": 48, + "frame": 8, + "toeX": 228.0, + "toeY": 248.5 + }, + { + "time": 228979.25000000006, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 228979.26666666672, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 248.25 + }, + { + "time": 228979.28333333338, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 228979.30000000005, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 228979.3166666667, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 228979.33333333337, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228979.7166666667, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 228979.7333333334, + "tick": 78, + "frame": 8, + "toeX": 228.0, + "toeY": 188.5 + }, + { + "time": 228979.75000000006, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 228979.76666666672, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 188.25 + }, + { + "time": 228979.78333333338, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 228979.80000000005, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 228979.8166666667, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 228979.83333333337, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228980.2166666667, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 228980.2333333334, + "tick": 108, + "frame": 8, + "toeX": 228.0, + "toeY": 128.5 + }, + { + "time": 228980.25000000006, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 228980.26666666672, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 128.25 + }, + { + "time": 228980.28333333338, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 228980.30000000005, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 228980.3166666667, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 228980.33333333337, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228978.4666666667, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 228978.4833333334, + "tick": 3, + "frame": 0, + "toeX": 220.0, + "toeY": 338.5 + }, + { + "time": 228978.50000000006, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 228978.51666666672, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 338.25 + }, + { + "time": 228978.53333333338, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 228978.55000000005, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 228978.5666666667, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 228978.58333333337, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228978.9666666667, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 228978.9833333334, + "tick": 33, + "frame": 0, + "toeX": 220.0, + "toeY": 278.5 + }, + { + "time": 228979.00000000006, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 228979.01666666672, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 278.25 + }, + { + "time": 228979.03333333338, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 228979.05000000005, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 228979.0666666667, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 228979.08333333337, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228979.4666666667, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 228979.4833333334, + "tick": 63, + "frame": 0, + "toeX": 220.0, + "toeY": 218.5 + }, + { + "time": 228979.50000000006, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 228979.51666666672, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 218.25 + }, + { + "time": 228979.55000000005, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 228979.5666666667, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 228979.58333333337, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-1-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228979.9666666667, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 228979.9833333334, + "tick": 93, + "frame": 0, + "toeX": 220.0, + "toeY": 158.5 + }, + { + "time": 228980.00000000006, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 228980.01666666672, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 158.25 + }, + { + "time": 228980.03333333338, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 228980.05000000005, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 228980.0666666667, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 228980.08333333337, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.10000000000582077, + "rangeLogicalPixels": 2.5, + "observations": [ + { + "time": 228967.25000000006, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 228967.26666666672, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 228967.28333333338, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 228967.30000000005, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 228967.3166666667, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 228967.33333333337, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 228967.35000000006, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228967.7333333334, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 228967.75000000006, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 228967.76666666672, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 228967.78333333338, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 228967.80000000005, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 228967.8166666667, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 228967.83333333337, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 228967.85000000006, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228968.2333333334, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 228968.25000000006, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 228968.28333333338, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 228968.30000000005, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 228968.3166666667, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 228968.33333333337, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 228968.35000000006, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228968.7333333334, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 228968.75000000006, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 228968.76666666672, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 228968.78333333338, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 228968.80000000005, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 228968.8166666667, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 228968.83333333337, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 228968.85000000006, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228966.9833333334, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 228967.00000000006, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 228967.01666666672, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 228967.03333333338, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 228967.05000000005, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 228967.0666666667, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 228967.08333333337, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 228967.10000000006, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228967.4833333334, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 228967.50000000006, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 228967.51666666672, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 228967.53333333338, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 228967.55000000005, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 228967.5666666667, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 228967.58333333337, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 228967.60000000006, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228967.9833333334, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 228968.00000000006, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 228968.01666666672, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 228968.03333333338, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 228968.05000000005, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 228968.0666666667, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 228968.08333333337, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 228968.10000000006, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-10-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 2.75, + "observations": [ + { + "time": 228968.4833333334, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 228968.50000000006, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 228968.51666666672, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 228968.53333333338, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 228968.55000000005, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 228968.5666666667, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 228968.58333333337, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 228968.60000000006, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 7, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228963.45000000004, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 228963.4666666667, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 228963.4833333334, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 228963.51666666672, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 228963.53333333338, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 228963.55000000005, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 228963.5666666667, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228963.95000000004, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 228963.9666666667, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 228963.9833333334, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 228964.00000000006, + "tick": 50, + "frame": 9, + "toeX": 228.0, + "toeY": 248.25 + }, + { + "time": 228964.01666666672, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 228964.03333333338, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 228964.05000000005, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 228964.0666666667, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228964.45000000004, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 228964.4666666667, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 228964.4833333334, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 228964.50000000006, + "tick": 80, + "frame": 9, + "toeX": 228.0, + "toeY": 188.25 + }, + { + "time": 228964.51666666672, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 228964.53333333338, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 228964.55000000005, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 228964.5666666667, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228964.95000000004, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 228964.9666666667, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 228964.9833333334, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 228965.00000000006, + "tick": 110, + "frame": 9, + "toeX": 228.0, + "toeY": 128.25 + }, + { + "time": 228965.01666666672, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 228965.03333333338, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 228965.05000000005, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 228965.0666666667, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228963.20000000004, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 228963.2166666667, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 228963.2333333334, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 228963.25000000006, + "tick": 5, + "frame": 1, + "toeX": 220.0, + "toeY": 338.25 + }, + { + "time": 228963.26666666672, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 228963.28333333338, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 228963.30000000005, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 228963.3166666667, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228963.70000000004, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 228963.7166666667, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 228963.7333333334, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 228963.75000000006, + "tick": 35, + "frame": 1, + "toeX": 220.0, + "toeY": 278.25 + }, + { + "time": 228963.76666666672, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 228963.78333333338, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 228963.80000000005, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 228963.8166666667, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228964.20000000004, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 228964.2166666667, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 228964.2333333334, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 228964.25000000006, + "tick": 65, + "frame": 1, + "toeX": 220.0, + "toeY": 218.25 + }, + { + "time": 228964.26666666672, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 228964.28333333338, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 228964.30000000005, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 228964.3166666667, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228964.70000000004, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 228964.7166666667, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 228964.7333333334, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 228964.75000000006, + "tick": 95, + "frame": 1, + "toeX": 220.0, + "toeY": 158.25 + }, + { + "time": 228964.76666666672, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 228964.78333333338, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 228964.80000000005, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 228964.8166666667, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228982.53333333338, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 228982.55000000005, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 228982.5666666667, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 228982.58333333337, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 228982.60000000006, + "tick": 21, + "frame": 10, + "toeX": 228.0, + "toeY": 310.0 + }, + { + "time": 228982.61666666673, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 228982.6333333334, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 228982.65000000005, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228983.03333333338, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 228983.05000000005, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 228983.0666666667, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 228983.08333333337, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 228983.10000000006, + "tick": 51, + "frame": 10, + "toeX": 228.0, + "toeY": 250.0 + }, + { + "time": 228983.11666666673, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 228983.1333333334, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 228983.15000000005, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228983.53333333338, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 228983.55000000005, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 228983.5666666667, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 228983.58333333337, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 228983.60000000006, + "tick": 81, + "frame": 10, + "toeX": 228.0, + "toeY": 190.0 + }, + { + "time": 228983.61666666673, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 228983.6333333334, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 228983.65000000005, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228984.03333333338, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 228984.05000000005, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 228984.0666666667, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 228984.08333333337, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 228984.10000000006, + "tick": 111, + "frame": 10, + "toeX": 228.0, + "toeY": 130.0 + }, + { + "time": 228984.11666666673, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 228984.1333333334, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 228984.15000000005, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228982.28333333338, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 228982.30000000005, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 228982.3166666667, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 228982.33333333337, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 228982.35000000006, + "tick": 6, + "frame": 2, + "toeX": 220.0, + "toeY": 340.0 + }, + { + "time": 228982.36666666673, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 228982.3833333334, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 228982.40000000005, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228982.78333333338, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 228982.80000000005, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 228982.8166666667, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 228982.83333333337, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 228982.85000000006, + "tick": 36, + "frame": 2, + "toeX": 220.0, + "toeY": 280.0 + }, + { + "time": 228982.86666666673, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 228982.8833333334, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 228982.90000000005, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228983.28333333338, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 228983.30000000005, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 228983.3166666667, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 228983.33333333337, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 228983.35000000006, + "tick": 66, + "frame": 2, + "toeX": 220.0, + "toeY": 220.0 + }, + { + "time": 228983.36666666673, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 228983.3833333334, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 228983.40000000005, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-2-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228983.78333333338, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 228983.80000000005, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 228983.8166666667, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 228983.83333333337, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 228983.85000000006, + "tick": 96, + "frame": 2, + "toeX": 220.0, + "toeY": 160.0 + }, + { + "time": 228983.86666666673, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 228983.8833333334, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 228983.90000000005, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228986.40000000005, + "tick": 16, + "frame": 8, + "toeX": 228.0, + "toeY": 312.5 + }, + { + "time": 228986.41666666672, + "tick": 17, + "frame": 8, + "toeX": 228.0, + "toeY": 310.5 + }, + { + "time": 228986.43333333338, + "tick": 18, + "frame": 9, + "toeX": 228.0, + "toeY": 312.25 + }, + { + "time": 228986.45000000004, + "tick": 19, + "frame": 9, + "toeX": 228.0, + "toeY": 310.25 + }, + { + "time": 228986.4666666667, + "tick": 20, + "frame": 10, + "toeX": 228.0, + "toeY": 312.0 + }, + { + "time": 228986.4833333334, + "tick": 22, + "frame": 10, + "toeX": 228.0, + "toeY": 308.0 + }, + { + "time": 228986.50000000006, + "tick": 22, + "frame": 11, + "toeX": 228.0, + "toeY": 311.75 + }, + { + "time": 228986.51666666672, + "tick": 23, + "frame": 11, + "toeX": 228.0, + "toeY": 309.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228986.90000000005, + "tick": 46, + "frame": 8, + "toeX": 228.0, + "toeY": 252.5 + }, + { + "time": 228986.91666666672, + "tick": 47, + "frame": 8, + "toeX": 228.0, + "toeY": 250.5 + }, + { + "time": 228986.93333333338, + "tick": 48, + "frame": 9, + "toeX": 228.0, + "toeY": 252.25 + }, + { + "time": 228986.95000000004, + "tick": 49, + "frame": 9, + "toeX": 228.0, + "toeY": 250.25 + }, + { + "time": 228986.9666666667, + "tick": 50, + "frame": 10, + "toeX": 228.0, + "toeY": 252.0 + }, + { + "time": 228986.9833333334, + "tick": 52, + "frame": 10, + "toeX": 228.0, + "toeY": 248.0 + }, + { + "time": 228987.00000000006, + "tick": 52, + "frame": 11, + "toeX": 228.0, + "toeY": 251.75 + }, + { + "time": 228987.01666666672, + "tick": 53, + "frame": 11, + "toeX": 228.0, + "toeY": 249.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228987.40000000005, + "tick": 76, + "frame": 8, + "toeX": 228.0, + "toeY": 192.5 + }, + { + "time": 228987.41666666672, + "tick": 77, + "frame": 8, + "toeX": 228.0, + "toeY": 190.5 + }, + { + "time": 228987.43333333338, + "tick": 78, + "frame": 9, + "toeX": 228.0, + "toeY": 192.25 + }, + { + "time": 228987.45000000004, + "tick": 79, + "frame": 9, + "toeX": 228.0, + "toeY": 190.25 + }, + { + "time": 228987.4666666667, + "tick": 80, + "frame": 10, + "toeX": 228.0, + "toeY": 192.0 + }, + { + "time": 228987.4833333334, + "tick": 82, + "frame": 10, + "toeX": 228.0, + "toeY": 188.0 + }, + { + "time": 228987.50000000006, + "tick": 82, + "frame": 11, + "toeX": 228.0, + "toeY": 191.75 + }, + { + "time": 228987.51666666672, + "tick": 83, + "frame": 11, + "toeX": 228.0, + "toeY": 189.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "left", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 8, + "lastFrame": 11, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228987.90000000005, + "tick": 106, + "frame": 8, + "toeX": 228.0, + "toeY": 132.5 + }, + { + "time": 228987.91666666672, + "tick": 107, + "frame": 8, + "toeX": 228.0, + "toeY": 130.5 + }, + { + "time": 228987.93333333338, + "tick": 108, + "frame": 9, + "toeX": 228.0, + "toeY": 132.25 + }, + { + "time": 228987.95000000004, + "tick": 109, + "frame": 9, + "toeX": 228.0, + "toeY": 130.25 + }, + { + "time": 228987.9666666667, + "tick": 110, + "frame": 10, + "toeX": 228.0, + "toeY": 132.0 + }, + { + "time": 228987.9833333334, + "tick": 112, + "frame": 10, + "toeX": 228.0, + "toeY": 128.0 + }, + { + "time": 228988.00000000006, + "tick": 112, + "frame": 11, + "toeX": 228.0, + "toeY": 131.75 + }, + { + "time": 228988.01666666672, + "tick": 113, + "frame": 11, + "toeX": 228.0, + "toeY": 129.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228986.15000000005, + "tick": 1, + "frame": 0, + "toeX": 220.0, + "toeY": 342.5 + }, + { + "time": 228986.16666666672, + "tick": 2, + "frame": 0, + "toeX": 220.0, + "toeY": 340.5 + }, + { + "time": 228986.18333333338, + "tick": 3, + "frame": 1, + "toeX": 220.0, + "toeY": 342.25 + }, + { + "time": 228986.20000000004, + "tick": 4, + "frame": 1, + "toeX": 220.0, + "toeY": 340.25 + }, + { + "time": 228986.2166666667, + "tick": 5, + "frame": 2, + "toeX": 220.0, + "toeY": 342.0 + }, + { + "time": 228986.2333333334, + "tick": 7, + "frame": 2, + "toeX": 220.0, + "toeY": 338.0 + }, + { + "time": 228986.25000000006, + "tick": 7, + "frame": 3, + "toeX": 220.0, + "toeY": 341.75 + }, + { + "time": 228986.26666666672, + "tick": 8, + "frame": 3, + "toeX": 220.0, + "toeY": 339.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228986.65000000005, + "tick": 31, + "frame": 0, + "toeX": 220.0, + "toeY": 282.5 + }, + { + "time": 228986.66666666672, + "tick": 32, + "frame": 0, + "toeX": 220.0, + "toeY": 280.5 + }, + { + "time": 228986.68333333338, + "tick": 33, + "frame": 1, + "toeX": 220.0, + "toeY": 282.25 + }, + { + "time": 228986.70000000004, + "tick": 34, + "frame": 1, + "toeX": 220.0, + "toeY": 280.25 + }, + { + "time": 228986.7166666667, + "tick": 35, + "frame": 2, + "toeX": 220.0, + "toeY": 282.0 + }, + { + "time": 228986.7333333334, + "tick": 37, + "frame": 2, + "toeX": 220.0, + "toeY": 278.0 + }, + { + "time": 228986.75000000006, + "tick": 37, + "frame": 3, + "toeX": 220.0, + "toeY": 281.75 + }, + { + "time": 228986.76666666672, + "tick": 38, + "frame": 3, + "toeX": 220.0, + "toeY": 279.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228987.15000000005, + "tick": 61, + "frame": 0, + "toeX": 220.0, + "toeY": 222.5 + }, + { + "time": 228987.16666666672, + "tick": 62, + "frame": 0, + "toeX": 220.0, + "toeY": 220.5 + }, + { + "time": 228987.18333333338, + "tick": 63, + "frame": 1, + "toeX": 220.0, + "toeY": 222.25 + }, + { + "time": 228987.20000000004, + "tick": 64, + "frame": 1, + "toeX": 220.0, + "toeY": 220.25 + }, + { + "time": 228987.2166666667, + "tick": 65, + "frame": 2, + "toeX": 220.0, + "toeY": 222.0 + }, + { + "time": 228987.2333333334, + "tick": 67, + "frame": 2, + "toeX": 220.0, + "toeY": 218.0 + }, + { + "time": 228987.25000000006, + "tick": 67, + "frame": 3, + "toeX": 220.0, + "toeY": 221.75 + }, + { + "time": 228987.26666666672, + "tick": 68, + "frame": 3, + "toeX": 220.0, + "toeY": 219.75 + } + ] + }, + { + "run": "BP008-stage-4-rep-3-axis-32767-reduced-true-metrics", + "side": "right", + "samples": 8, + "distinctFrames": 4, + "firstFrame": 0, + "lastFrame": 3, + "durationSeconds": 0.11666666666860692, + "rangeLogicalPixels": 4.5, + "observations": [ + { + "time": 228987.65000000005, + "tick": 91, + "frame": 0, + "toeX": 220.0, + "toeY": 162.5 + }, + { + "time": 228987.66666666672, + "tick": 92, + "frame": 0, + "toeX": 220.0, + "toeY": 160.5 + }, + { + "time": 228987.68333333338, + "tick": 93, + "frame": 1, + "toeX": 220.0, + "toeY": 162.25 + }, + { + "time": 228987.70000000004, + "tick": 94, + "frame": 1, + "toeX": 220.0, + "toeY": 160.25 + }, + { + "time": 228987.7166666667, + "tick": 95, + "frame": 2, + "toeX": 220.0, + "toeY": 162.0 + }, + { + "time": 228987.7333333334, + "tick": 97, + "frame": 2, + "toeX": 220.0, + "toeY": 158.0 + }, + { + "time": 228987.75000000006, + "tick": 97, + "frame": 3, + "toeX": 220.0, + "toeY": 161.75 + }, + { + "time": 228987.76666666672, + "tick": 98, + "frame": 3, + "toeX": 220.0, + "toeY": 159.75 + } + ] + } + ] +} diff --git a/docs/review/player-low-recovery/joint-verification.json b/docs/review/player-low-recovery/joint-verification.json new file mode 100644 index 00000000..dd88f1bd --- /dev/null +++ b/docs/review/player-low-recovery/joint-verification.json @@ -0,0 +1,322 @@ +[ + { + "time": 0.0, + "side": "right", + "jointCenterPixel": [ + 174, + 281 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.158134950011185 + }, + { + "time": 0.0, + "side": "left", + "jointCenterPixel": [ + 210, + 276 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1890612903108675 + }, + { + "time": 0.03125, + "side": "right", + "jointCenterPixel": [ + 174, + 288 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1750276884371242 + }, + { + "time": 0.03125, + "side": "left", + "jointCenterPixel": [ + 210, + 271 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1776191714905266 + }, + { + "time": 0.0625, + "side": "right", + "jointCenterPixel": [ + 174, + 293 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1680603915629124 + }, + { + "time": 0.0625, + "side": "left", + "jointCenterPixel": [ + 210, + 266 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.182014798114455 + }, + { + "time": 0.09375, + "side": "right", + "jointCenterPixel": [ + 174, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.286449046015699 + }, + { + "time": 0.09375, + "side": "left", + "jointCenterPixel": [ + 210, + 265 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1904238563647738 + }, + { + "time": 0.125, + "side": "right", + "jointCenterPixel": [ + 174, + 261 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.903600053441119 + }, + { + "time": 0.125, + "side": "left", + "jointCenterPixel": [ + 210, + 268 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.182995012038294 + }, + { + "time": 0.15625, + "side": "right", + "jointCenterPixel": [ + 174, + 262 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.621878872677261 + }, + { + "time": 0.15625, + "side": "left", + "jointCenterPixel": [ + 210, + 270 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.188596913437568 + }, + { + "time": 0.1875, + "side": "right", + "jointCenterPixel": [ + 174, + 273 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1865558819816986 + }, + { + "time": 0.1875, + "side": "left", + "jointCenterPixel": [ + 210, + 274 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1900128298486834 + }, + { + "time": 0.21875, + "side": "right", + "jointCenterPixel": [ + 174, + 281 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1642164027726523 + }, + { + "time": 0.21875, + "side": "left", + "jointCenterPixel": [ + 210, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1876130498302366 + }, + { + "time": 0.25, + "side": "right", + "jointCenterPixel": [ + 174, + 276 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1768246278111327 + }, + { + "time": 0.25, + "side": "left", + "jointCenterPixel": [ + 210, + 281 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.171221736382954 + }, + { + "time": 0.28125, + "side": "right", + "jointCenterPixel": [ + 174, + 271 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.164478972622085 + }, + { + "time": 0.28125, + "side": "left", + "jointCenterPixel": [ + 210, + 288 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1872486935017026 + }, + { + "time": 0.3125, + "side": "right", + "jointCenterPixel": [ + 174, + 266 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1689470964393323 + }, + { + "time": 0.3125, + "side": "left", + "jointCenterPixel": [ + 210, + 293 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1786127511556277 + }, + { + "time": 0.34375, + "side": "right", + "jointCenterPixel": [ + 174, + 265 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1771524417981176 + }, + { + "time": 0.34375, + "side": "left", + "jointCenterPixel": [ + 210, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.2823039499813564 + }, + { + "time": 0.375, + "side": "right", + "jointCenterPixel": [ + 174, + 268 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.169761671481446 + }, + { + "time": 0.375, + "side": "left", + "jointCenterPixel": [ + 210, + 261 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.8564216602720203 + }, + { + "time": 0.40625, + "side": "right", + "jointCenterPixel": [ + 174, + 270 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.175493784774879 + }, + { + "time": 0.40625, + "side": "left", + "jointCenterPixel": [ + 210, + 262 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.5943619856136753 + }, + { + "time": 0.4375, + "side": "right", + "jointCenterPixel": [ + 174, + 274 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1767618480498925 + }, + { + "time": 0.4375, + "side": "left", + "jointCenterPixel": [ + 210, + 273 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1903033895250577 + }, + { + "time": 0.46875, + "side": "right", + "jointCenterPixel": [ + 174, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.174522741985019 + }, + { + "time": 0.46875, + "side": "left", + "jointCenterPixel": [ + 210, + 281 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.174735195134474 + } +] diff --git a/docs/review/player-low-recovery/motion-revision.json b/docs/review/player-low-recovery/motion-revision.json new file mode 100644 index 00000000..8e1d0614 --- /dev/null +++ b/docs/review/player-low-recovery/motion-revision.json @@ -0,0 +1,207 @@ +{ + "status": "PROPOSED_NEW_MOTION_REQUIRES_REVIEW", + "clearanceScale": 0.25, + "unchanged": [ + "contact poses", + "foot pitch", + "foot horizontal path", + "hip motion", + "stance width", + "arm and coat controls", + "segment lengths 13.5" + ], + "rows": [ + { + "frame": 1, + "side": "right", + "oldKneeZ": 16.2819198066071, + "newKneeZ": 16.2819198066071 + }, + { + "frame": 1, + "side": "left", + "oldKneeZ": 22.93973790753678, + "newKneeZ": 17.802685540112446 + }, + { + "frame": 2, + "side": "right", + "oldKneeZ": 14.566918339246186, + "newKneeZ": 14.566918339246186 + }, + { + "frame": 2, + "side": "left", + "oldKneeZ": 31.903839434716254, + "newKneeZ": 19.918654501369918 + }, + { + "frame": 3, + "side": "right", + "oldKneeZ": 12.463171179516785, + "newKneeZ": 12.463171179516785 + }, + { + "frame": 3, + "side": "left", + "oldKneeZ": 33.16519086244253, + "newKneeZ": 21.037560763670065 + }, + { + "frame": 4, + "side": "right", + "oldKneeZ": 12.183577267342823, + "newKneeZ": 12.183577267342823 + }, + { + "frame": 4, + "side": "left", + "oldKneeZ": 30.92383099276625, + "newKneeZ": 21.043477882921724 + }, + { + "frame": 5, + "side": "right", + "oldKneeZ": 12.771861888360078, + "newKneeZ": 12.8101505774283 + }, + { + "frame": 5, + "side": "left", + "oldKneeZ": 27.56004471709999, + "newKneeZ": 20.172208185079754 + }, + { + "frame": 6, + "side": "right", + "oldKneeZ": 13.427487508800866, + "newKneeZ": 13.480584447477032 + }, + { + "frame": 6, + "side": "left", + "oldKneeZ": 23.75938415362971, + "newKneeZ": 18.920804915856923 + }, + { + "frame": 7, + "side": "right", + "oldKneeZ": 14.166559730600497, + "newKneeZ": 13.880171192083093 + }, + { + "frame": 7, + "side": "left", + "oldKneeZ": 20.11123727720735, + "newKneeZ": 17.447324614939916 + }, + { + "frame": 8, + "side": "right", + "oldKneeZ": 16.259491757623586, + "newKneeZ": 15.132942545523743 + }, + { + "frame": 8, + "side": "left", + "oldKneeZ": 17.367092160204255, + "newKneeZ": 16.629547219448817 + }, + { + "frame": 9, + "side": "right", + "oldKneeZ": 22.93973790753678, + "newKneeZ": 17.802685540112446 + }, + { + "frame": 9, + "side": "left", + "oldKneeZ": 16.2819198066071, + "newKneeZ": 16.2819198066071 + }, + { + "frame": 10, + "side": "right", + "oldKneeZ": 31.903839434716254, + "newKneeZ": 19.918654501369918 + }, + { + "frame": 10, + "side": "left", + "oldKneeZ": 14.566918339246186, + "newKneeZ": 14.566918339246186 + }, + { + "frame": 11, + "side": "right", + "oldKneeZ": 33.16519086244253, + "newKneeZ": 21.037560763670065 + }, + { + "frame": 11, + "side": "left", + "oldKneeZ": 12.463171179516785, + "newKneeZ": 12.463171179516785 + }, + { + "frame": 12, + "side": "right", + "oldKneeZ": 30.92383099276625, + "newKneeZ": 21.043477882921724 + }, + { + "frame": 12, + "side": "left", + "oldKneeZ": 12.183577267342823, + "newKneeZ": 12.183577267342823 + }, + { + "frame": 13, + "side": "right", + "oldKneeZ": 27.56004471709999, + "newKneeZ": 20.172208185079754 + }, + { + "frame": 13, + "side": "left", + "oldKneeZ": 12.771861888360078, + "newKneeZ": 12.8101505774283 + }, + { + "frame": 14, + "side": "right", + "oldKneeZ": 23.75938415362971, + "newKneeZ": 18.920804915856923 + }, + { + "frame": 14, + "side": "left", + "oldKneeZ": 13.427487508800866, + "newKneeZ": 13.480584447477032 + }, + { + "frame": 15, + "side": "right", + "oldKneeZ": 20.11123727720735, + "newKneeZ": 17.447324614939916 + }, + { + "frame": 15, + "side": "left", + "oldKneeZ": 14.166559730600497, + "newKneeZ": 13.880171192083093 + }, + { + "frame": 16, + "side": "right", + "oldKneeZ": 17.367092160204255, + "newKneeZ": 16.629547219448817 + }, + { + "frame": 16, + "side": "left", + "oldKneeZ": 16.259491757623586, + "newKneeZ": 15.132942545523743 + } + ] +} diff --git a/docs/review/player-low-recovery/phase-comparison.json b/docs/review/player-low-recovery/phase-comparison.json new file mode 100644 index 00000000..810e720b --- /dev/null +++ b/docs/review/player-low-recovery/phase-comparison.json @@ -0,0 +1,69 @@ +{ + "status": "OFFLINE_COUNTERFACTUAL_NOT_RUNTIME_VALIDATION", + "cycleDistance": 120, + "derivation": "source support toe moves 7.5 units per 1/32-second frame = 240 units/sec; 0.5-second cycle = 120 units", + "method": "Replay the same recorded root positions and substitute a distance-indexed texture identity only. Fixed-point scale 256, ground Y projection 0.5. No pixel tracking or interpolation. Initial phase zero at first moving observation.", + "limits": [ + "Straight south route only", + "Does not prove attractive slow motion", + "No restart/reversal/collision or frame scheduling validation", + "No inferred slip tolerance", + "16 held frames cannot continuously pin a moving support point" + ], + "comparisons": [ + { + "inputAxis": 16383, + "control": { + "supportSegments": 8, + "minRange": 7.25, + "maxRange": 7.25, + "medianRange": 7.25, + "distinctFrames": 16 + }, + "distancePhaseCounterfactual": { + "supportSegments": 4, + "minRange": 3.5, + "maxRange": 3.5, + "medianRange": 3.5, + "distinctFrames": 16 + }, + "recordSHA256": "e986d89da115868f77868da1205e9f2dbf7a7eb0e387ef054a0f38fe2670a62d" + }, + { + "inputAxis": 32767, + "control": { + "supportSegments": 8, + "minRange": 4.5, + "maxRange": 4.75, + "medianRange": 4.5, + "distinctFrames": 16 + }, + "distancePhaseCounterfactual": { + "supportSegments": 8, + "minRange": 2.25, + "maxRange": 2.75, + "medianRange": 2.75, + "distinctFrames": 16 + }, + "recordSHA256": "ee6ae507f7824fc7f67c773e3be5aea2b3b750f3026031b0e211fa4b8f0dd776" + }, + { + "inputAxis": 8191, + "control": { + "supportSegments": 8, + "minRange": 7.75, + "maxRange": 8.75, + "medianRange": 8.5, + "distinctFrames": 16 + }, + "distancePhaseCounterfactual": { + "supportSegments": 2, + "minRange": 3.5, + "maxRange": 3.5, + "medianRange": 3.5, + "distinctFrames": 16 + }, + "recordSHA256": "f615dd481fd381ec9221663b326a9c8997dae6dc0a87b5dafe09b0e550d88476" + } + ] +} diff --git a/docs/review/player-low-recovery/polish-verification.json b/docs/review/player-low-recovery/polish-verification.json new file mode 100644 index 00000000..ce6f8c3e --- /dev/null +++ b/docs/review/player-low-recovery/polish-verification.json @@ -0,0 +1,105 @@ +{ + "status": "SOURCE_POLISH_CANDIDATE_NOT_ADMITTED", + "unchangedPoseSamples": false, + "frameCount": 16, + "uniqueFrames": 16, + "canvas": [ + 384, + 416 + ], + "normalCycleSeconds": 0.5, + "quarterCycleSeconds": 2, + "armControlsUnchanged": { + "elbowPixels": 4, + "handPixels": 10 + }, + "gloveChange": "rigid translation below wrist; sleeve deformation above wrist", + "transitions": [ + { + "from": 1, + "to": 2, + "meanAbsoluteRGBDifference": 5.725306323450854 + }, + { + "from": 2, + "to": 3, + "meanAbsoluteRGBDifference": 3.2711171207264957 + }, + { + "from": 3, + "to": 4, + "meanAbsoluteRGBDifference": 5.755131126469017 + }, + { + "from": 4, + "to": 5, + "meanAbsoluteRGBDifference": 3.7125108506944446 + }, + { + "from": 5, + "to": 6, + "meanAbsoluteRGBDifference": 4.571003188434829 + }, + { + "from": 6, + "to": 7, + "meanAbsoluteRGBDifference": 2.273180839342949 + }, + { + "from": 7, + "to": 8, + "meanAbsoluteRGBDifference": 4.756197415865385 + }, + { + "from": 8, + "to": 9, + "meanAbsoluteRGBDifference": 4.131374782986111 + }, + { + "from": 9, + "to": 10, + "meanAbsoluteRGBDifference": 5.705704126602564 + }, + { + "from": 10, + "to": 11, + "meanAbsoluteRGBDifference": 3.3209551949786325 + }, + { + "from": 11, + "to": 12, + "meanAbsoluteRGBDifference": 5.803975944845085 + }, + { + "from": 12, + "to": 13, + "meanAbsoluteRGBDifference": 3.7778570713141026 + }, + { + "from": 13, + "to": 14, + "meanAbsoluteRGBDifference": 4.691658737313034 + }, + { + "from": 14, + "to": 15, + "meanAbsoluteRGBDifference": 2.247245592948718 + }, + { + "from": 15, + "to": 16, + "meanAbsoluteRGBDifference": 4.728841145833333 + }, + { + "from": 16, + "to": 1, + "meanAbsoluteRGBDifference": 4.210670405982906 + } + ], + "limits": [ + "No live-travel evidence", + "One facing only", + "Hidden material and knee-cap finish proposed", + "Difference statistics are not visual acceptance" + ] +} diff --git a/docs/review/player-low-recovery/source-record.json b/docs/review/player-low-recovery/source-record.json new file mode 100644 index 00000000..d017b40f --- /dev/null +++ b/docs/review/player-low-recovery/source-record.json @@ -0,0 +1,45 @@ +{ + "status": "TEST_ONLY_SOURCE_CANDIDATE_NOT_ADMITTED", + "sourceRevision": "SS-player-low-recovery / 2026-10-15", + "specRevision": "d602775", + "sourceCanvas": [ + 384, + 416 + ], + "rootPixels": [ + 192, + 336 + ], + "logicalSize": [ + 64, + 69.33333333333333 + ], + "cycleSeconds": 0.5, + "frameDurationSeconds": 0.03125, + "projection": "ground x unchanged, ground y times 0.5; upright player keeps uniform scale; no diagonal view claim", + "sourceFiles": { + "player-source-s-00.png": "5e02b733d2d98fda30182f72474229da98dfdcaa0ec6e224516d1cb2b12818ab", + "player-source-s-01.png": "b66fa74858d7b985408fffacbbb6e1e726a4c151cb3f6d276685c2eca5939d76", + "player-source-s-02.png": "fa572799b1f5e6100f6bf44144cb53f7e60d623fea4775cf15180bf9fe60e481", + "player-source-s-03.png": "8b3cff719376bdb53753f7edd9f8e7e14e057f084e559b7a8010341c65a7e135", + "player-source-s-04.png": "bd9f280d21c012ad213008717ed38b722d4c4508c865d1a54ccceb1c430bbab5", + "player-source-s-05.png": "5357867d303bec4c557d579140aad8950ce7af55dbf921f72b47b8440a3a9911", + "player-source-s-06.png": "ecca42bcf42c6579ded197561ff28b11527e711f86f3d2b1d292e3b10f749218", + "player-source-s-07.png": "22851d1a9f9ed39ae1346e4d55fc671d77c7ae1a7ba57df296391124c280b039", + "player-source-s-08.png": "4a67667d049a7f200be8afba9216c7de595e4e36041bfa456985e39f46da9586", + "player-source-s-09.png": "b176a98b54e4fff271771ba8d3dc111f41e53143edb56ad6f314833543eff72d", + "player-source-s-10.png": "a007408ad31e9f16192467bcd3365093330af3cb988d38eeb020f9ab2f8579dc", + "player-source-s-11.png": "75d9f2f7e6420493b82b57fd1b5c8da320bf1c8f7303c2df1df2571f2312c753", + "player-source-s-12.png": "e33bcce13131aaf90a2602f5f300e4130e8400b2cec15e6172d9c70ca824f273", + "player-source-s-13.png": "80e1077ad763526f0273c566c2171c3d1f473d9cd50116b493f6b2c59df9502f", + "player-source-s-14.png": "6cd87469eda680c0248af0da7e5e9c665b3b60b2a9b39e8fb2dc98bafac4af0e", + "player-source-s-15.png": "af62b1aa0521cc85edec1cbeb9986f4c503f6b2743c3a84570f0fa040d2f880f", + "player-source-s-poses.json": "f1e7f9d6763dcaabac9a89bab9d40fce5adbeb51eb5833dec10072691fc6042c" + }, + "reviewStatus": "PROPOSED_MOTION_TEST_FIXTURE_PENDING_RENDERER_VALIDATION", + "specSupplement": { + "path": "specs/001-single-level-vertical-slice/benchmark-production.md", + "status": "local working-tree clarification, not a production pin migration", + "sha256": "6aea951e182ebd29da77629296d04783fcd6f7010132abf2953ed0d1aa6ff777" + } +} diff --git a/docs/review/player-low-recovery/trajectory-check.json b/docs/review/player-low-recovery/trajectory-check.json new file mode 100644 index 00000000..2e8bded2 --- /dev/null +++ b/docs/review/player-low-recovery/trajectory-check.json @@ -0,0 +1,108 @@ +{ + "before": { + "left": { + "maxKneeStep": 9.216888947453912, + "seamKneeStep": 7.821561597271615, + "kneeAboveHipFrames": [ + 2, + 3, + 4, + 5 + ], + "steps": [ + 9.216888947453912, + 1.8052542269522478, + 3.410518870810033, + 3.5198490267071056, + 3.8104550125079824, + 3.9553801145160534, + 3.0663667755870967, + 1.186988744898791, + 1.7464201687681897, + 3.095955935799711, + 5.28889697854752, + 4.528300432605286, + 2.1459463405736714, + 4.746943113083678, + 5.467312041525098, + 7.821561597271615 + ] + }, + "right": { + "maxKneeStep": 9.216888947453912, + "seamKneeStep": 1.186988744898791, + "kneeAboveHipFrames": [ + 10, + 11, + 12, + 13 + ], + "steps": [ + 1.7464201687681897, + 3.095955935799711, + 5.28889697854752, + 4.528300432605286, + 2.1459463405736714, + 4.746943113083678, + 5.467312041525098, + 7.821561597271615, + 9.216888947453912, + 1.8052542269522478, + 3.410518870810033, + 3.5198490267071056, + 3.8104550125079824, + 3.9553801145160534, + 3.0663667755870967, + 1.186988744898791 + ] + } + }, + "candidate": { + "left": { + "maxKneeStep": 5.28889697854752, + "seamKneeStep": 4.20110294998129, + "kneeAboveHipFrames": [], + "steps": [ + 2.7667104297634566, + 1.1876933805710896, + 0.4610286054419633, + 1.0288455110590211, + 1.79702484698832, + 2.012121686000691, + 0.8181889716890077, + 0.40305022622147796, + 1.7464201687681897, + 3.095955935799711, + 5.28889697854752, + 4.7158045935317086, + 1.6384028864443, + 4.395846551793861, + 4.86182521152599, + 4.20110294998129 + ] + }, + "right": { + "maxKneeStep": 5.28889697854752, + "seamKneeStep": 0.40305022622147796, + "kneeAboveHipFrames": [], + "steps": [ + 1.7464201687681897, + 3.095955935799711, + 5.28889697854752, + 4.7158045935317086, + 1.6384028864443, + 4.395846551793861, + 4.86182521152599, + 4.20110294998129, + 2.7667104297634566, + 1.1876933805710896, + 0.4610286054419633, + 1.0288455110590211, + 1.79702484698832, + 2.012121686000691, + 0.8181889716890077, + 0.40305022622147796 + ] + } + } +} diff --git a/docs/review/player-motion-inspection/README.md b/docs/review/player-motion-inspection/README.md new file mode 100644 index 00000000..f3856b15 --- /dev/null +++ b/docs/review/player-motion-inspection/README.md @@ -0,0 +1,32 @@ +# Narrow stance + arm swing: source inspection + +Reviewed 2026-10-15. Source: SS-player-motion-refined, archived at runtime 718b392; test-only renderer integration 88e79e8. Current specs: d602775. User prefers this revision. This review preserves that direction; proportions, motion amplitudes and hidden surfaces remain proposed. + +## Separate speed passes + +**Normal, 0.5-second cycle:** selected the normal-speed browser mode and inspected successive playback samples at the large and 64px sampling views. The narrower silhouette and opposing hand positions remain readable. The hands are subtle; boots and moving leg highlights draw more attention than the arms. The small view loses calf and lace detail. This is sampled browser playback, not continuous video analysis or measured browser frame pacing. It does not establish real-renderer contact. + +**Quarter, 2-second cycle:** separately selected quarter-speed mode and inspected playback, all 16 exported poses, enlarged lower-body keys and isolated boot surfaces. The slower inspection exposes the cup-like knee pads, repeated soft calf folds, flat shafts against bright toe caps and limited arm deformation. These defects are easier to inspect slowly; slow playback is not a substitute for the normal-speed pass. + +## Findings + +| Item | Observed evidence | Disposition | +|---|---|---| +| Knee-pad orientation | Pads stay at the knee region rather than migrating to a heel/back surface. Their upper edge opens into a dark crescent in frames 1/12/16, while other poses look like rounded caps. The bright thigh patch above is distinct from the knee pad. | Needs refinement: preserve a consistent pad form and front-facing placement through knee flexion; do not hide the problem by moving the joint. | +| Heel/tongue ownership | The isolated front/rear renders show laces on the forward tongue and plain rear heel material. The raised foot often hides the tongue in this facing. | Correct in inspected front/rear keys. Side and other-facing ownership remains unproven; do not claim complete 360-degree validation. | +| Calf/boot detail | Calf folds repeat as broad soft bands. The boot shaft is flat brown while the toe is sharply bright and mottled. Cuff-to-boot transitions read abruptly, especially frames 4/12. | Highest material-polish priority. Preserve retained leather/cloth influence while making detail scale and light treatment coherent. | +| Coat overlap | No obvious exposed cut gap or torn coat contour in the 16 south frames. Tail edges remain attached. The tails retain a flat overlaid appearance beside the lifting thigh. | Keep the silhouette; improve depth/overlap. Hidden coat/leg intersections are not proven by these front views. | +| Arm motion | Hands alternate vertically in opposition; shoulder attachments remain stable in the sampled poses. This is visibly more useful than the earlier symmetric outward spread. The torso stays rigid and forearm deformation remains mostly projected length change. | Keep the restrained amplitude as a candidate; polish elbow/glove articulation without widening the stance or adding exaggerated swing. | +| 16→1 seam | Inspected 15/16/1/2 together and stepped 16→1 with previous-frame onion skin. No whole-character lateral reset or exceptional texture jump was evident. Leg/hip vertical motion remains visible across this interval. | Provisionally continuous as a source sequence, not final gait acceptance. Continuous-source derivative and displayed contact are separate gates. | + +## Seam diagnostic + +The 16→1 whole-canvas mean absolute RGB difference is 4.57549 on the composited review background. Internal transitions range from 2.81175 to 6.37205. This says only that the seam is not the largest pixel change in the cycle. Background area affects this metric; it is not a perceptual score, smoothness threshold or acceptance test. Exact per-transition data is in transition-diagnostics.json. + +## Next repair order + +1. Refine pad form and calf/cuff/boot material continuity on this retained narrow-stance source. +2. Polish elbow/glove articulation and coat depth without discarding the user-preferred motion direction. +3. Repeat the two-speed and seam inspection, then perform the unobstructed renderer measurement with image extraction outside the measured interval. + +No numeric dimensions/amplitudes or unknown surfaces are approved by this review. Full four-facing work, complete real-renderer travel/contact, shared benchmark scene, encounters and device acceptance remain open. No new gameplay behavior or spec acceptance threshold is introduced. diff --git a/docs/review/player-motion-inspection/loop-seam.png b/docs/review/player-motion-inspection/loop-seam.png new file mode 100644 index 00000000..34eae66f Binary files /dev/null and b/docs/review/player-motion-inspection/loop-seam.png differ diff --git a/docs/review/player-motion-inspection/lower-body-detail.png b/docs/review/player-motion-inspection/lower-body-detail.png new file mode 100644 index 00000000..d7ccd268 Binary files /dev/null and b/docs/review/player-motion-inspection/lower-body-detail.png differ diff --git a/docs/review/player-motion-inspection/source-hashes.json b/docs/review/player-motion-inspection/source-hashes.json new file mode 100644 index 00000000..e6e8410f --- /dev/null +++ b/docs/review/player-motion-inspection/source-hashes.json @@ -0,0 +1,18 @@ +{ + "00.png": "aa69a7b65117cffbf05910756b223ed9a61e90feef62883c71a27f3efe74efa6", + "01.png": "0fe42906fcfd60d91454b64cd3fc851e0ea3033a2bd0299b65411f3d2727e06d", + "02.png": "18eb0c77e1cb4cc61c0e3e255e467852d4c5470e19ada859364215ae1140db01", + "03.png": "6425d11ef5e05e50571f5b24870d7deb15d3a02dec91c9fee46643d8c3ae7b62", + "04.png": "65063ba779eb0f39fae2ab67121aaa0a743999ab33279f579782a2772175c19f", + "05.png": "057f8b6170cca65631984687377246dd29df92443b541f160a0d35bf07ff1ab1", + "06.png": "cd0bef603a3494a392574739392c225477cf13abc1c1354e84ea1296d3da262f", + "07.png": "36eea1493088c6345433e5ae2a643cf368137af543a94a717fc1f3025f63eeb2", + "08.png": "d32b59a011e926a045b0674b3d393b4d1599a98efbf3ed4e02eeafec8c7b31d5", + "09.png": "1cb5b660b9719888f3a5ef3e6f3ee4df8fb09a3f0601319f681d1178e87939cc", + "10.png": "42c2c787d548c7011cb29864dc225daf0fd32147013199b40fb563fbc34f04be", + "11.png": "c1bd1ae2a3fba255a31fd10b9be0fa22b91e6105c4d2b585f7163c8d03b39e21", + "12.png": "7a4c6cb9d43fdfa8125e80583a7b1e73e6e7328269db9c43b11a9ac080e373f3", + "13.png": "27eea525a5b9d9b3afae51a4414831ad8a9521c8587af3e8a234a761f08476b5", + "14.png": "aa929e8f60bab59d398d590c08d9882d08f9a4ae53eae4db8482d73643f2dfc7", + "15.png": "4afd2c2b090116cff77a0c92cdf954da63edff7cae7db92ce388aeb035e19d90" +} \ No newline at end of file diff --git a/docs/review/player-motion-inspection/transition-diagnostics.json b/docs/review/player-motion-inspection/transition-diagnostics.json new file mode 100644 index 00000000..776c28ef --- /dev/null +++ b/docs/review/player-motion-inspection/transition-diagnostics.json @@ -0,0 +1,101 @@ +{ + "status": "difference diagnostics only; not perceptual acceptance", + "transitions": [ + { + "from": 1, + "to": 2, + "wholeCanvasMeanAbsoluteRGBDifference": 6.132628872863248, + "changedPixels": 30318 + }, + { + "from": 2, + "to": 3, + "wholeCanvasMeanAbsoluteRGBDifference": 3.517822265625, + "changedPixels": 27959 + }, + { + "from": 3, + "to": 4, + "wholeCanvasMeanAbsoluteRGBDifference": 6.214249048477564, + "changedPixels": 29862 + }, + { + "from": 4, + "to": 5, + "wholeCanvasMeanAbsoluteRGBDifference": 4.351614666800214, + "changedPixels": 28555 + }, + { + "from": 5, + "to": 6, + "wholeCanvasMeanAbsoluteRGBDifference": 5.287197015224359, + "changedPixels": 29375 + }, + { + "from": 6, + "to": 7, + "wholeCanvasMeanAbsoluteRGBDifference": 2.867183326655983, + "changedPixels": 26909 + }, + { + "from": 7, + "to": 8, + "wholeCanvasMeanAbsoluteRGBDifference": 5.2088237012553416, + "changedPixels": 30041 + }, + { + "from": 8, + "to": 9, + "wholeCanvasMeanAbsoluteRGBDifference": 4.488805004674146, + "changedPixels": 30036 + }, + { + "from": 9, + "to": 10, + "wholeCanvasMeanAbsoluteRGBDifference": 6.106971153846154, + "changedPixels": 30343 + }, + { + "from": 10, + "to": 11, + "wholeCanvasMeanAbsoluteRGBDifference": 3.6928231002938032, + "changedPixels": 27975 + }, + { + "from": 11, + "to": 12, + "wholeCanvasMeanAbsoluteRGBDifference": 6.372053619123932, + "changedPixels": 29876 + }, + { + "from": 12, + "to": 13, + "wholeCanvasMeanAbsoluteRGBDifference": 4.41748046875, + "changedPixels": 28567 + }, + { + "from": 13, + "to": 14, + "wholeCanvasMeanAbsoluteRGBDifference": 5.334973457532051, + "changedPixels": 29378 + }, + { + "from": 14, + "to": 15, + "wholeCanvasMeanAbsoluteRGBDifference": 2.8117508847489314, + "changedPixels": 26841 + }, + { + "from": 15, + "to": 16, + "wholeCanvasMeanAbsoluteRGBDifference": 5.226287059294871, + "changedPixels": 30005 + }, + { + "from": 16, + "to": 1, + "wholeCanvasMeanAbsoluteRGBDifference": 4.575489533253205, + "changedPixels": 30001 + } + ] +} \ No newline at end of file diff --git a/docs/review/player-motion-refined/README.md b/docs/review/player-motion-refined/README.md new file mode 100644 index 00000000..212cd8f5 --- /dev/null +++ b/docs/review/player-motion-refined/README.md @@ -0,0 +1,15 @@ +# Narrower stance and arm swing + +Source candidate responding to user feedback. Built from SS-boot-proportion/candidate; not admitted runtime art. + +Foot separation reduced from 10 to 8 source units (20%). Hips, forward/vertical foot trajectories, foot pitch, 16 samples and 0.5-second cycle retained. Knees re-solved with both segment lengths held at 13.5 units; all 32 poses verified within 1e-9. Contact positions shift sideways with the feet. + +Arms now alternate forward/back through projected elbow (4px) and hand (10px) movement, opposite the same-side leg. Shoulder attachment stays fixed relative to the torso. The initial larger planar rotation was rejected because it spread both arms together. These are authored source adjustments; arms remain layered artwork, not a finished 3D arm rig. + +The updated reviewer compares the prior rearward-ankle candidate against this revision. World-travel contact, side-facing motion, complete occlusion and real-renderer/device acceptance remain outstanding. + +Authority: specs d602775, controlled-character-source.md/BP-002/BP-008 already require pose-range review and separate projected from anatomical measurements. No new gameplay policy or spec pin is required for this proposed source adjustment. + +Validation: 16 distinct exported RGBA frames; all 32 source leg lengths pass 1e-9 checks; all 32 knee center pixels have opaque surface coverage in front of the joint; all 32 assembled elbow center pixels are opaque. These point checks do not prove full contour continuity or depth ordering. Runtime code, active art and metadata are unchanged; the previous clean core result remains 773 tests in 109 suites. + +Reproduce from archived source: use the exact source/samples.json and boot/samples.json (authoritative revised poses), run boot/material.py, then assemble.py, then check_joints.py with Python, NumPy and Pillow. Inherited block.py is a helper, not a generator for this revised pose sequence. diff --git a/docs/review/player-motion-refined/assembly-record.json b/docs/review/player-motion-refined/assembly-record.json new file mode 100644 index 00000000..7ca35ce9 --- /dev/null +++ b/docs/review/player-motion-refined/assembly-record.json @@ -0,0 +1,215 @@ +{ + "status": "WHOLE_CHARACTER_SOURCE_CANDIDATE_NOT_ADMITTED", + "cycleSeconds": 0.5, + "previewFrameMilliseconds": 125, + "controls": { + "projectedElbowSwingPixels": 4, + "projectedHandSwingPixels": 10, + "armPhase": "opposite-side cosine", + "coatHemPixels": 4, + "bodyBob": "derived from authored pelvis height" + }, + "controlAuthority": "Authored candidate values, not research-derived acceptance criteria", + "depthPolicy": "shared per-pixel source depth for both boots/calves/thighs; coat and torso retain front-layer policy", + "limits": [ + "Thigh plus authored anterior knee-cover surface; rear cloth is provisional", + "Torso/coat are still layered rather than part of the lower-body depth buffer", + "Boot proxy materials remain below benchmark", + "One facing only", + "No real-renderer world-travel test" + ], + "frames": [ + { + "frame": 0, + "time": 0.0, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 49, + "finiteDepthPixels": 7084, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "eba604a100cde88c7e8460b03dc94098cc4aaacdc0251f7b684dfb6754433409" + }, + { + "frame": 1, + "time": 0.03125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 212, + "finiteDepthPixels": 6227, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "4e16a33d9c2fa05866b6e00c8ff1a7946b9762d1ab4e732edf387ebedc5c476e" + }, + { + "frame": 2, + "time": 0.0625, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 486, + "finiteDepthPixels": 6174, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "de8c1e7a658eee7f12a2fd15262993f970d5e6fbf51ba0fc451ce9e9f6a0d446" + }, + { + "frame": 3, + "time": 0.09375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 20, + "finiteDepthPixels": 6102, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "d30d0bdaf41341f044a90b443419dfc13c305efcfcc05ee6b0ab9a4f5b7c5ead" + }, + { + "frame": 4, + "time": 0.125, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 17, + "finiteDepthPixels": 6351, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "005747395acec4fb65428c9c6e048c32c86a97db2923b390e5e21b403725b45d" + }, + { + "frame": 5, + "time": 0.15625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 31, + "finiteDepthPixels": 7013, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "79d9760d29e7ce8875933dc75560199532d8e77824d58fff7fa5e61e1d063088" + }, + { + "frame": 6, + "time": 0.1875, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 62, + "finiteDepthPixels": 7452, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "18f8ee30fcdf6092d4ed3b8541b0fe6304a3fef9ab40389db252c40ead58cc6b" + }, + { + "frame": 7, + "time": 0.21875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 119, + "finiteDepthPixels": 7550, + "limbBackToFront": [ + "right", + "left" + ], + "rgbaSHA256": "d7a07ddee8820d9372eadad475ec9448cf0dfb19b470c5d5baf2c67d5a661a39" + }, + { + "frame": 8, + "time": 0.25, + "bodyBobPixels": -0.0, + "pixelsDifferentFromAverageLayerSort": 54, + "finiteDepthPixels": 7084, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "4043b2ef2adfb994cea369d67f14f96e2da65d0a09a66913e0af475a20ad8dcc" + }, + { + "frame": 9, + "time": 0.28125, + "bodyBobPixels": 7.184633866920191, + "pixelsDifferentFromAverageLayerSort": 215, + "finiteDepthPixels": 6227, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "2cd3e267addda735952602ddc5bcef869ab3c512b89a4c8433824e6ce78f8f94" + }, + { + "frame": 10, + "time": 0.3125, + "bodyBobPixels": 8.870387036881391, + "pixelsDifferentFromAverageLayerSort": 492, + "finiteDepthPixels": 6174, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "d5366063f1ff4a9ed20c86a088c153622b6853fb91b1cc3e9b3cf5aaef245938" + }, + { + "frame": 11, + "time": 0.34375, + "bodyBobPixels": 0.39553355155904224, + "pixelsDifferentFromAverageLayerSort": 21, + "finiteDepthPixels": 6102, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "fb74f47946b99a0bdb9303bfdc5387a302a6f5209d26b301e941ce6f69d080a4" + }, + { + "frame": 12, + "time": 0.375, + "bodyBobPixels": -1.9485571585149868, + "pixelsDifferentFromAverageLayerSort": 17, + "finiteDepthPixels": 6351, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "1e7d53888f847202f38ae77571e6497bb5996400a6f05822c11ff6abcfe29b77" + }, + { + "frame": 13, + "time": 0.40625, + "bodyBobPixels": -6.652790277661053, + "pixelsDifferentFromAverageLayerSort": 31, + "finiteDepthPixels": 7013, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "d294cfde4916c3d9830fe91d2052a6e04a54dc8166796b48757958c8ee190e06" + }, + { + "frame": 14, + "time": 0.4375, + "bodyBobPixels": -7.272114317029974, + "pixelsDifferentFromAverageLayerSort": 65, + "finiteDepthPixels": 7452, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "4969b84df54a788fe4f60ec1c40b4f5599ef238fffefe8f363c808317d05d241" + }, + { + "frame": 15, + "time": 0.46875, + "bodyBobPixels": -2.888466910840908, + "pixelsDifferentFromAverageLayerSort": 125, + "finiteDepthPixels": 7550, + "limbBackToFront": [ + "left", + "right" + ], + "rgbaSHA256": "53045b6a945958118164d1238dc6e993e74f25fd619e72b0f6f31c12f9795183" + } + ] +} diff --git a/docs/review/player-motion-refined/hashes.json b/docs/review/player-motion-refined/hashes.json new file mode 100644 index 00000000..db46b42e --- /dev/null +++ b/docs/review/player-motion-refined/hashes.json @@ -0,0 +1,51 @@ +{ + "thigh.py": "21e3bc693b6efc0cef9975337a5c892e2d52defac83a51315eec2d486f540e4a", + "joint-verification.json": "0ac28a583a8f1949ddd544e837d6d418a08c0a051b31232de7875ab2dd63b3c8", + "assembly-record.json": "23a63fdc326faa3c34b31ba985f248ba5ff8e483c2dd65d35546acf9c661c155", + "sixteen-character-poses.png": "166b5b6aa1ca98d40693e91f41c0f4f64104bfb4c0eaaaaefbef5d281f3c16b4", + "assemble.py": "933f73cdea1279b3b9c60501371c7bc3ddf3836f3c07b638f0f1604eebcfe1c6", + "revision.json": "3c797ed7559cd9144b647708841b45027c00fd24c2139b8476b5130b61054df6", + "motion-verification.json": "6b871cc703dbedfbcea1f72b29fb79570cf7d3e281edab7ba6ce2669d89649b3", + "check_joints.py": "48c56b165a9c7fe993945c0b62a6b5288e913dad464b2f16e7d1dc1461391a4b", + "boot/material.py": "9c405f6f8bbcd8355b24d721f8c0bbc4e8ef5a1d38dc98582bae14e0451ae0b5", + "boot/assembled-key.png": "6e329717242a5d20e0109afed6a3bac76f729516afb9dbbd597b7c6d856495ff", + "boot/samples.json": "2bb65726c53e767f066cda2bba53d68c4f39eb7cca02c88e4b6070c8a48babb6", + "boot/four-facing-source.png": "487017f138f4a055eb36ae7d6c14837364b08091c9b4a8805e54124ca1c7c33b", + "boot/material-surfaces.png": "5dcc34e592b54cbc7f5d2970dff9211018098b4e371b5e532b3688d58753fe39", + "boot/registration.json": "48d2d1a9e6691020b17b0ae669e020392278136d7646f22525ab608e3e0c9670", + "boot/retained-body-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "boot/material-record.json": "f83b65e3eb8ffae2b38eb0573edf52b9d49114944f6b8badeafee4866458f761", + "boot/source.png": "27834bf8c9c0a55d101aaa5946d4f4895b5723af8fd1eb3918a00465f7a9a651", + "source/samples.json": "2bb65726c53e767f066cda2bba53d68c4f39eb7cca02c88e4b6070c8a48babb6", + "source/body-rig.json": "c1d53f25495c4e17bd3f1f4df1b0e0e87bd047872420625642a88b8cdc26530b", + "source/body-source/left_boot_hidden.png": "703a1b66afb35559cafd60231df1ba6439550fd4ef0da7e33e491b10004d56da", + "source/body-source/left_shin_boot.png": "58eb39c047ebb4f20aaae08ec63a6052624d54f5ea82bb2b7ca60f4847843593", + "source/body-source/right_thigh.png": "92bb25e717a8704dd6147e3d42d61a039a16e0a3fd8953b6b4838b8171599085", + "source/body-source/left_thigh.png": "d56129dd205b54dcf6a8a55a65f2eba79bd6ed062fb03db85cea4a8a2aefc4bb", + "source/body-source/left_knee_hidden.png": "38b44ec172aa5ad5b5c401948d1a1140d9dd90b67577eeae7bd40ebcde382a29", + "source/body-source/left_elbow_hidden.png": "c9485b2817b2c307daf55bbb9773d72ffa67abb6316716caf420d0d9852d93ac", + "source/body-source/left_shoulder_hidden.png": "635f66fb1d4198ea9b3d8ac719e1df8aacedd1cdc2b9e44c4c3c219b653fc1e5", + "source/body-source/right_upper_arm.png": "c033da2620b7cf8fab8d06c34a344005bfed86f8967004a5be0a33306c0c8690", + "source/body-source/left_coat_tail.png": "932a93161bd638df053f33b58d82a57e722eaa60cbadc95a71274f8a42d948f4", + "source/body-source/right_forearm_hand.png": "64eeb0b1ce4c40176b84b4c9153e42f2bc2d341b4aa480fc879f9e1ebb6cffbe", + "source/body-source/right_boot_hidden.png": "e5f9d6d93d2baac11c0d3b72ecfb32ce36e921b084317a05687c25a4a3a63a52", + "source/body-source/right_shin_boot.png": "4105dea24e6add878d02a7b4afa77de277c48780ac7ea37c058d1802c49243c5", + "source/body-source/left_forearm_hand.png": "168ac896495617d0d076c40c0d297affd8bbf6e2c645b18b28d3362d37bd51a4", + "source/body-source/hood.png": "061546675424a684d3470974a611d886bdde8192b41d09c5eaf6604cd4bfd183", + "source/body-source/left_boot.png": "162f9554e7b38a3d33dd58683c4021a4da91a79ff0aaf1c4c2639b1de6b0f232", + "source/body-source/right_boot.png": "60ecc1a390005e0ce07a622fac7e88da8d074b603e363549fd33eb35656e3559", + "source/body-source/right_elbow_hidden.png": "5cb6ff740907774a1ff3977a3c0ffa246589d6f69a38412f8fc69c912477f9a4", + "source/body-source/right_coat_tail.png": "585f21888a103ec52d494d1de1c992cba654936215f097a7ae7ddc95e870339b", + "source/body-source/right_knee_hidden.png": "a9306ef1ad00e03a297d201a46bf9838f06ce45320b08920f3277e11a2505288", + "source/body-source/torso_coat_equipment.png": "6fc702c5b5c4f1ad123d3862da795d539190dad9d609d49923f2bf3c9d952baf", + "source/body-source/right_hip_hidden.png": "5d541656fd4817ba5536f4fab469fecb42cde3ae2487a8e18ec6262da0afade1", + "source/body-source/left_upper_arm.png": "47fd20562122a6358a1b0528fc12818a53c4868499d684cf6e7fdfe7b6680d24", + "source/body-source/right_shoulder_hidden.png": "bc570fe28204d21d1924c8f416a5a2b5f058db9d3ac14ae452d59a27c170da7a", + "source/body-source/left_hip_hidden.png": "78648454e0f8abba6b1c4deb7880ed589a1baf35732e015733c851632812b49a", + "boot/source/boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "boot/source/parameters.json": "33b8b002d01e71ca6b2f1d9371aec3b81bc73fc9b16f8194dd8cf72b42cbe449", + "boot/source/orientation.py": "03f31bc77c824d8cd4ad2a40f806e2181e6f952b40567974314185d55b566879", + "boot/source/smooth.py": "2563ff9a6e234c4bcec250e69b8e79f2261a9efaa04937f27312c440b76d0c5c", + "boot/source/boot_geometry.py": "6c03edfff2618a22714231aad2cab9e166d0fbba8f3785cc1ac086dcb218073b", + "boot/source/block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201" +} \ No newline at end of file diff --git a/docs/review/player-motion-refined/joint-verification.json b/docs/review/player-motion-refined/joint-verification.json new file mode 100644 index 00000000..32657ce3 --- /dev/null +++ b/docs/review/player-motion-refined/joint-verification.json @@ -0,0 +1,322 @@ +[ + { + "time": 0.0, + "side": "right", + "jointCenterPixel": [ + 174, + 281 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.158134950011185 + }, + { + "time": 0.0, + "side": "left", + "jointCenterPixel": [ + 210, + 256 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.182808855136578 + }, + { + "time": 0.03125, + "side": "right", + "jointCenterPixel": [ + 174, + 288 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1750276884371242 + }, + { + "time": 0.03125, + "side": "left", + "jointCenterPixel": [ + 210, + 203 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1853961390892955 + }, + { + "time": 0.0625, + "side": "right", + "jointCenterPixel": [ + 174, + 293 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1680603915629124 + }, + { + "time": 0.0625, + "side": "left", + "jointCenterPixel": [ + 210, + 193 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.182167701451185 + }, + { + "time": 0.09375, + "side": "right", + "jointCenterPixel": [ + 174, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.185793505933983 + }, + { + "time": 0.09375, + "side": "left", + "jointCenterPixel": [ + 210, + 212 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.178699261781965 + }, + { + "time": 0.125, + "side": "right", + "jointCenterPixel": [ + 174, + 262 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.629789328266554 + }, + { + "time": 0.125, + "side": "left", + "jointCenterPixel": [ + 210, + 233 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.18905571276181 + }, + { + "time": 0.15625, + "side": "right", + "jointCenterPixel": [ + 174, + 264 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.4169892644308364 + }, + { + "time": 0.15625, + "side": "left", + "jointCenterPixel": [ + 210, + 252 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.174130206292631 + }, + { + "time": 0.1875, + "side": "right", + "jointCenterPixel": [ + 174, + 275 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1838167927621672 + }, + { + "time": 0.1875, + "side": "left", + "jointCenterPixel": [ + 210, + 266 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1879727114435354 + }, + { + "time": 0.21875, + "side": "right", + "jointCenterPixel": [ + 174, + 279 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1689675743417176 + }, + { + "time": 0.21875, + "side": "left", + "jointCenterPixel": [ + 210, + 276 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1871562622651233 + }, + { + "time": 0.25, + "side": "right", + "jointCenterPixel": [ + 174, + 256 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1706069256088583 + }, + { + "time": 0.25, + "side": "left", + "jointCenterPixel": [ + 210, + 281 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.171221736382954 + }, + { + "time": 0.28125, + "side": "right", + "jointCenterPixel": [ + 174, + 203 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.17317744779578 + }, + { + "time": 0.28125, + "side": "left", + "jointCenterPixel": [ + 210, + 288 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1872486935017026 + }, + { + "time": 0.3125, + "side": "right", + "jointCenterPixel": [ + 174, + 193 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1716515738223663 + }, + { + "time": 0.3125, + "side": "left", + "jointCenterPixel": [ + 210, + 293 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1786127511556277 + }, + { + "time": 0.34375, + "side": "right", + "jointCenterPixel": [ + 174, + 212 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1665185606355735 + }, + { + "time": 0.34375, + "side": "left", + "jointCenterPixel": [ + 210, + 278 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1938900248453272 + }, + { + "time": 0.375, + "side": "right", + "jointCenterPixel": [ + 174, + 233 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1759709786115167 + }, + { + "time": 0.375, + "side": "left", + "jointCenterPixel": [ + 210, + 262 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.593732722988271 + }, + { + "time": 0.40625, + "side": "right", + "jointCenterPixel": [ + 174, + 252 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1610555675455743 + }, + { + "time": 0.40625, + "side": "left", + "jointCenterPixel": [ + 210, + 264 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.3968013844959737 + }, + { + "time": 0.4375, + "side": "right", + "jointCenterPixel": [ + 174, + 266 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1748172349340535 + }, + { + "time": 0.4375, + "side": "left", + "jointCenterPixel": [ + 210, + 275 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1919854900253526 + }, + { + "time": 0.46875, + "side": "right", + "jointCenterPixel": [ + 174, + 276 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.1740533521467427 + }, + { + "time": 0.46875, + "side": "left", + "jointCenterPixel": [ + 210, + 279 + ], + "alpha": 255, + "frontSurfaceDepthAboveJointCenter": 2.176983668421407 + } +] diff --git a/docs/review/player-motion-refined/motion-verification.json b/docs/review/player-motion-refined/motion-verification.json new file mode 100644 index 00000000..c0c00856 --- /dev/null +++ b/docs/review/player-motion-refined/motion-verification.json @@ -0,0 +1,373 @@ +{ + "checks": "32 assembled elbow center pixels opaque; unchanged forward/vertical feet, hip, contact flags and foot angle; narrow checks do not prove contour or occlusion quality", + "frames": [ + { + "frame": 0, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 149 + ], + "assembledAlpha": 255, + "handSwingPixels": 10.0 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 141 + ], + "assembledAlpha": 255, + "handSwingPixels": -10.0 + } + ] + }, + { + "frame": 1, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 156 + ], + "assembledAlpha": 255, + "handSwingPixels": 9.238795325112868 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 148 + ], + "assembledAlpha": 255, + "handSwingPixels": -9.238795325112868 + } + ] + }, + { + "frame": 2, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 157 + ], + "assembledAlpha": 255, + "handSwingPixels": 7.0710678118654755 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 151 + ], + "assembledAlpha": 255, + "handSwingPixels": -7.0710678118654755 + } + ] + }, + { + "frame": 3, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 147 + ], + "assembledAlpha": 255, + "handSwingPixels": 3.8268343236508984 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 144 + ], + "assembledAlpha": 255, + "handSwingPixels": -3.8268343236508984 + } + ] + }, + { + "frame": 4, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 143 + ], + "assembledAlpha": 255, + "handSwingPixels": 6.123233995736766e-16 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 143 + ], + "assembledAlpha": 255, + "handSwingPixels": -6.123233995736766e-16 + } + ] + }, + { + "frame": 5, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 137 + ], + "assembledAlpha": 255, + "handSwingPixels": -3.826834323650897 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 140 + ], + "assembledAlpha": 255, + "handSwingPixels": 3.826834323650897 + } + ] + }, + { + "frame": 6, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 135 + ], + "assembledAlpha": 255, + "handSwingPixels": -7.071067811865475 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 141 + ], + "assembledAlpha": 255, + "handSwingPixels": 7.071067811865475 + } + ] + }, + { + "frame": 7, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 138 + ], + "assembledAlpha": 255, + "handSwingPixels": -9.238795325112868 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 146 + ], + "assembledAlpha": 255, + "handSwingPixels": 9.238795325112868 + } + ] + }, + { + "frame": 8, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 141 + ], + "assembledAlpha": 255, + "handSwingPixels": -10.0 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 149 + ], + "assembledAlpha": 255, + "handSwingPixels": 10.0 + } + ] + }, + { + "frame": 9, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 148 + ], + "assembledAlpha": 255, + "handSwingPixels": -9.238795325112868 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 156 + ], + "assembledAlpha": 255, + "handSwingPixels": 9.238795325112868 + } + ] + }, + { + "frame": 10, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 151 + ], + "assembledAlpha": 255, + "handSwingPixels": -7.071067811865477 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 157 + ], + "assembledAlpha": 255, + "handSwingPixels": 7.071067811865477 + } + ] + }, + { + "frame": 11, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 144 + ], + "assembledAlpha": 255, + "handSwingPixels": -3.8268343236509033 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 147 + ], + "assembledAlpha": 255, + "handSwingPixels": 3.8268343236509033 + } + ] + }, + { + "frame": 12, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 143 + ], + "assembledAlpha": 255, + "handSwingPixels": -1.8369701987210296e-15 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 143 + ], + "assembledAlpha": 255, + "handSwingPixels": 1.8369701987210296e-15 + } + ] + }, + { + "frame": 13, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 140 + ], + "assembledAlpha": 255, + "handSwingPixels": 3.8268343236509 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 137 + ], + "assembledAlpha": 255, + "handSwingPixels": -3.8268343236509 + } + ] + }, + { + "frame": 14, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 141 + ], + "assembledAlpha": 255, + "handSwingPixels": 7.071067811865474 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 135 + ], + "assembledAlpha": 255, + "handSwingPixels": -7.071067811865474 + } + ] + }, + { + "frame": 15, + "arms": [ + { + "side": "left", + "elbowPixel": [ + 252, + 146 + ], + "assembledAlpha": 255, + "handSwingPixels": 9.238795325112864 + }, + { + "side": "right", + "elbowPixel": [ + 131, + 138 + ], + "assembledAlpha": 255, + "handSwingPixels": -9.238795325112864 + } + ] + } + ] +} \ No newline at end of file diff --git a/docs/review/player-motion-refined/revision.json b/docs/review/player-motion-refined/revision.json new file mode 100644 index 00000000..67329c01 --- /dev/null +++ b/docs/review/player-motion-refined/revision.json @@ -0,0 +1,10 @@ +{ + "source": "SS-boot-proportion/candidate", + "stanceWidthBefore": 10, + "stanceWidthAfter": 8, + "hipUnchanged": true, + "segmentLength": 13.5, + "status": "source candidate; user-requested narrower stance and increased arm swing", + "projectedElbowSwingPixels": 4, + "projectedHandSwingPixels": 10 +} \ No newline at end of file diff --git a/docs/review/player-motion-refined/sixteen-character-poses.png b/docs/review/player-motion-refined/sixteen-character-poses.png new file mode 100644 index 00000000..2ba6c9eb Binary files /dev/null and b/docs/review/player-motion-refined/sixteen-character-poses.png differ diff --git a/docs/review/player-motion-refined/slow-character-cycle.gif b/docs/review/player-motion-refined/slow-character-cycle.gif new file mode 100644 index 00000000..e8e718aa Binary files /dev/null and b/docs/review/player-motion-refined/slow-character-cycle.gif differ diff --git a/docs/review/player-motion-refined/source.zip b/docs/review/player-motion-refined/source.zip new file mode 100644 index 00000000..34622f67 Binary files /dev/null and b/docs/review/player-motion-refined/source.zip differ diff --git a/docs/review/player-preparation-fix/README.md b/docs/review/player-preparation-fix/README.md new file mode 100644 index 00000000..bd32c281 --- /dev/null +++ b/docs/review/player-preparation-fix/README.md @@ -0,0 +1,53 @@ +# Player preparation repair — BP-007 / BP-008 + +2026-10-15. Candidate-only registration and preparation are implemented. Production artwork, controller speed, source poses, frame count and half-second cycle remain unchanged. Shared-scene and device acceptance are not claimed. + +## Measured comparison + +The same unobstructed south route, source textures and timing were run twice through each incremental stage in a presented SpriteKit scene. Measurements are simulator observations, not device performance. Controls report failed coverage explicitly; the four final-mode regression tests still require 16/16 frames and repeated wraps. + +| Stage | Observed unique frames, runs 1 / 2 | Gameplay texture readbacks, runs 1 / 2 | Outline miss/build time during playback | +|---|---|---|---| +| Original registration, no preload | 7 / 8 | 14 / 15 | 1,336 / 1,543 ms | +| Correct registration only | 10 / 9 | 10 / 9 | 930 / 923 ms | +| Correct registration + preload artwork | 10 / 8 | 10 / 8 | 953 / 886 ms | +| Correct registration + prepare outlines + preload both | **16 / 16** | **0 / 0** | **0 / 0 ms** | + +Prepared-path preparation took 354–362 ms in the comparison repeats (359–364 ms across the independent final-mode runs). This work is explicitly measured before presenting the scene; it is not described as free. Preparation timing covers mask preparation and preload, not all file loading or scene setup. + +The controlled results support the combined preparation repair. They do not establish how much of the old cost was texture conversion versus the mask algorithm: those are measured together in outline miss/build time. Two repetitions are evidence, not a statistical performance guarantee. Source/preload caches may remain warm across sequential cases; these are fresh scene/cache instances, not process-cold launches. + +## Implementation + +- WorldRenderer accepts a DEBUG candidate registration before its contrast work. The fixture's 64×69⅓ canvas, anchor and upright scale are therefore consistent when the outline cache is accessed. Shipping defaults remain unchanged. +- OutlineTextures accepts a retained source CGImage on preparation calls, preserving its existing mask algorithm, padding, faction colors, bounded cache and fallback. The metrics count hits, misses, texture readback calls and construction time. +- The candidate fixture prepares masks for all 16 source images, then awaits SKTexture.preload for artwork and masks before presentation. Post-action outline synchronization remains active and uses cached entries. +- The bounded cache retains 299,904 bytes of prepared masks for the 16-player-frame family. This is generated mask payload, not total app/GPU memory. The existing 128-entry / 4 MiB mask bounds remain. +- A new regression proves source-prepared and fallback masks are pixel-identical and that subsequent playback lookup reuses the same texture without readback. + +## Validation + +- Final Xcode simulator suite: **112 executions / 110 named tests passed, zero failures, zero skips**. Includes existing animation, camera, outline, presentation and gameplay-facing app checks; four strict prepared player modes; repeated staged controls; and source-mask parity/cache reuse. +- Full/half/quarter input and Reduced Motion each observed **all 16 textures, three index wraps**, correct registration/travel, and zero playback outline misses/readbacks. No recorded moving tick lost the candidate sprite. +- Core suite: **773 tests / 109 suites passed**, exit 0, 558.322 seconds (`swift test --disable-sandbox`). +- `git diff --check`: passed. +- An additional terminal Release build attempt could not resolve the local package because sandbox permissions blocked SwiftPM diagnostic output in the user Library cache. No Release build success is claimed; the successful app suite is the Xcode simulator test configuration. +- One initial compilation attempt exposed a misplaced instrumentation variable in the test helper; it was corrected before the successful run. + +Result bundle: Test-SSRuntime-2026.10.15_14-04-19--0700.xcresult, retained as work/player-preparation.xcresult. Core tests were started only after simulator timing captures completed. The source knee-detail frames remain byte-identical to the reviewed candidate. + +## Remaining gates + +**Startup:** all prepared runs still show their largest callback gap between tick 0 and tick 13/14, approximately 225–246 ms. Median callback spacing is approximately 16.67 ms in the four final modes; p95 ranges 26–38 ms. This is not a 60-fps performance acceptance. Scene/ground/fallback setup and scheduling require separate attribution. The prepared masks remove the demonstrated outline work but do not prove every other stall is fixed. + +**Contact/cadence:** contact/analysis.json now has repeated multi-sample support observations. Maximum annotated ground-equivalent support displacement is 5 units at full input, 12.5 at half, 16.5 at quarter and 4.5 with full-input Reduced Motion. These are observed intervals, not pixel tracking or approved slip tolerances. The existing fixed-duration cycle runs at all input magnitudes; partial-input phase policy remains a specification/design decision. Do not alter limb geometry or gameplay speed to make these values disappear. + +**Visual evidence:** post-action identities describe selected SpriteKit textures before scanout. They are not uninterrupted video. Normal/quarter-speed real-renderer visual review, complete seam/contact acceptance, stop/start and interaction matrix, other authored facings, shared-scene acceptance and physical device testing remain open. Passing the current suite does not close those gates. + +## Evidence files + +- comparison.json — twelve measured runs, including callback distributions and separate preparation/render/simulation/outline timings. +- BP008-stage-*-metrics.json and *-post-action-records.json — original exported measurement attachments. +- test-summary.json — authoritative Xcode summary. +- contact/ — exact final-mode records, source poses and reproducible annotation analysis. +- core-tests.log and release-build.log — command evidence. diff --git a/docs/review/player-preparation-fix/comparison.json b/docs/review/player-preparation-fix/comparison.json new file mode 100644 index 00000000..b90a8ead --- /dev/null +++ b/docs/review/player-preparation-fix/comparison.json @@ -0,0 +1,266 @@ +[ + { + "axis": 32767, + "coveragePassed": false, + "frames": 7, + "outlineBuildSeconds": 1.3361541032791138, + "outlineBytes": 253176, + "outlineHits": 2, + "outlineMisses": 14, + "outlineReadbacks": 14, + "postActionSeconds": 0.6907850503921509, + "preparationSeconds": 3.898143768310547e-05, + "reducedMotion": false, + "renderSeconds": 0.8944282531738281, + "repetition": 1, + "simulationSeconds": 0.9259006977081299, + "stage": 0, + "callbackMedianMS": 75.19495833548717, + "callbackP95MS": 313.6782916553784, + "callbackMaxMS": 313.6782916553784, + "postActionRecords": 21, + "run": "BP008-stage-0-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": false, + "frames": 8, + "outlineBuildSeconds": 1.542796015739441, + "outlineBytes": 271920, + "outlineHits": 1, + "outlineMisses": 15, + "outlineReadbacks": 15, + "postActionSeconds": 0.8235359191894531, + "preparationSeconds": 2.193450927734375e-05, + "reducedMotion": false, + "renderSeconds": 0.9681661128997803, + "repetition": 2, + "simulationSeconds": 0.9540419578552246, + "stage": 0, + "callbackMedianMS": 266.2703749956563, + "callbackP95MS": 340.4855416738428, + "callbackMaxMS": 340.4855416738428, + "postActionRecords": 15, + "run": "BP008-stage-0-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": false, + "frames": 10, + "outlineBuildSeconds": 0.9298869371414185, + "outlineBytes": 187440, + "outlineHits": 10, + "outlineMisses": 10, + "outlineReadbacks": 10, + "postActionSeconds": 0.8380031585693359, + "preparationSeconds": 3.504753112792969e-05, + "reducedMotion": false, + "renderSeconds": 0.35705602169036865, + "repetition": 1, + "simulationSeconds": 0.9413400888442993, + "stage": 1, + "callbackMedianMS": 69.23479167744517, + "callbackP95MS": 211.9550833303947, + "callbackMaxMS": 884.4045833393466, + "postActionRecords": 25, + "run": "BP008-stage-1-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": false, + "frames": 9, + "outlineBuildSeconds": 0.923302173614502, + "outlineBytes": 168696, + "outlineHits": 13, + "outlineMisses": 9, + "outlineReadbacks": 9, + "postActionSeconds": 0.820467472076416, + "preparationSeconds": 3.600120544433594e-05, + "reducedMotion": false, + "renderSeconds": 0.3999190330505371, + "repetition": 2, + "simulationSeconds": 0.925613284111023, + "stage": 1, + "callbackMedianMS": 38.36779168341309, + "callbackP95MS": 216.6107916564215, + "callbackMaxMS": 253.2000833307393, + "postActionRecords": 28, + "run": "BP008-stage-1-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": false, + "frames": 10, + "outlineBuildSeconds": 0.9528260231018066, + "outlineBytes": 187440, + "outlineHits": 12, + "outlineMisses": 10, + "outlineReadbacks": 10, + "postActionSeconds": 0.8510860204696655, + "preparationSeconds": 0.0035070180892944336, + "reducedMotion": false, + "renderSeconds": 0.37476015090942383, + "repetition": 1, + "simulationSeconds": 0.9778058528900146, + "stage": 2, + "callbackMedianMS": 94.73512499243952, + "callbackP95MS": 203.48716666921973, + "callbackMaxMS": 231.83908333885483, + "postActionRecords": 24, + "run": "BP008-stage-2-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": false, + "frames": 8, + "outlineBuildSeconds": 0.8857764005661011, + "outlineBytes": 149952, + "outlineHits": 12, + "outlineMisses": 8, + "outlineReadbacks": 8, + "postActionSeconds": 0.7654331922531128, + "preparationSeconds": 0.010190963745117188, + "reducedMotion": false, + "renderSeconds": 0.4346548318862915, + "repetition": 2, + "simulationSeconds": 1.0281070470809937, + "stage": 2, + "callbackMedianMS": 60.29904168099165, + "callbackP95MS": 269.75183334434405, + "callbackMaxMS": 270.3540416841861, + "postActionRecords": 26, + "run": "BP008-stage-2-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 16383, + "coveragePassed": true, + "frames": 16, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 192, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004036664962768555, + "preparationSeconds": 0.35958003997802734, + "reducedMotion": false, + "renderSeconds": 0.5385900735855103, + "repetition": 0, + "simulationSeconds": 0.9300752878189087, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 26.476041646674275, + "callbackMaxMS": 225.2403750026133, + "postActionRecords": 127, + "run": "BP008-stage-3-rep-0-axis-16383-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frames": 16, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 194, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.00412142276763916, + "preparationSeconds": 0.3603489398956299, + "reducedMotion": false, + "renderSeconds": 0.5394324064254761, + "repetition": 0, + "simulationSeconds": 0.9434244632720947, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333332557231, + "callbackMaxMS": 224.8717499896884, + "postActionRecords": 126, + "run": "BP008-stage-3-rep-0-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frames": 16, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 188, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004067420959472656, + "preparationSeconds": 0.3634979724884033, + "reducedMotion": true, + "renderSeconds": 0.5384249687194824, + "repetition": 0, + "simulationSeconds": 0.9517002105712891, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333332557231, + "callbackMaxMS": 234.1711666667834, + "postActionRecords": 124, + "run": "BP008-stage-3-rep-0-axis-32767-reduced-true-metrics" + }, + { + "axis": 8191, + "coveragePassed": true, + "frames": 16, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 192, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.003853440284729004, + "preparationSeconds": 0.3588719367980957, + "reducedMotion": false, + "renderSeconds": 0.5187082290649414, + "repetition": 0, + "simulationSeconds": 0.9582035541534424, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 38.21749999769963, + "callbackMaxMS": 225.5685416457709, + "postActionRecords": 118, + "run": "BP008-stage-3-rep-0-axis-8191-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frames": 16, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 172, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004250288009643555, + "preparationSeconds": 0.3535349369049072, + "reducedMotion": false, + "renderSeconds": 0.5277717113494873, + "repetition": 1, + "simulationSeconds": 0.9491444826126099, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 38.40341666364111, + "callbackMaxMS": 246.03329168166965, + "postActionRecords": 115, + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frames": 16, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 190, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.0041658878326416016, + "preparationSeconds": 0.36209702491760254, + "reducedMotion": false, + "renderSeconds": 0.5357843637466431, + "repetition": 2, + "simulationSeconds": 0.9387609958648682, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 242.7949583507143, + "postActionRecords": 126, + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics" + } +] diff --git a/docs/review/player-preparation-fix/test-summary.json b/docs/review/player-preparation-fix/test-summary.json new file mode 100644 index 00000000..8f504fc1 --- /dev/null +++ b/docs/review/player-preparation-fix/test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 112, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792098572.67, + "passedTests" : 110, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792098259.65, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "40% of duration", + "text" : "2 longest test runs with outlier durations exceeding 21.42s (three standard deviations)" + } + ], + "totalTestCount" : 110 +} diff --git a/docs/review/player-registration/README.md b/docs/review/player-registration/README.md new file mode 100644 index 00000000..3e6a1b94 --- /dev/null +++ b/docs/review/player-registration/README.md @@ -0,0 +1,13 @@ +# Revised player registration preflight — BP-002/BP-007/BP-008 + +Status: integration finding and numerical prediction, NOT a real-renderer capture or art admission. + +Authority inspected: runtime 718b392, specs d602775. WorldRenderer.playClip assigns the normal 64×64 player sprite box and passes actor positions through unchanged. SpriteLibrary.anchorPoint divides contract anchors by logical box size. The static benchmark-art path also removes actions each render, so it cannot be reused as a moving playback proof. DisplayedPlaybackTests provides the correct post-action observation boundary but currently measures admitted art. + +The revised source is 384×416 with ground root (192,336). At a proposed 6 source pixels per logical unit, preserve aspect with draw size 64×69⅓ and SpriteKit anchor (0.5, 0.1923076923). Fitting into 64×64 compresses vertical dimensions by 7.6923%. This scale is a controlled comparison parameter, not an accepted production size. + +The source projects its forward ground coordinate at 0.5 and height at sqrt(0.75). For nominal 240-unit/s travel, sampled support poses cancel motion under that same projected mapping. Applying their local foot offsets to an unprojected actor root instead predicts 11.25 logical units of residual across the sampled 0.09375-second support span. This is NOT measured runtime slip. Exact zero in the consistent mathematical mapping is also NOT a displayed contact result: collisions, fixed-point positions, texture holds, action phase, real camera motion and render timing remain absent. + +Required next capture: use the exact 16 revised source frames; preserve aspect/root; retain live SpriteKit actions; record actual selected texture after actions alongside authoritative and rendered position. Apply the chosen world-to-view mapping consistently to actor roots, ground and geometry. Do not squash the finished elevated character or change controller speed. Use explicit test-only candidate loading, not production metadata admission. The static composition fixture remains separate. Cardinal/diagonal, partial input, collision, reversal and interruption evidence remains open under BP-008. + +This exposes an implementation prerequisite already required by the pinned specs; no new visual projection or gameplay rule is adopted. check.py and samples.json reproduce registration.json. No runtime code or production assets changed in this review. diff --git a/docs/review/player-registration/check.py b/docs/review/player-registration/check.py new file mode 100644 index 00000000..6984a52b --- /dev/null +++ b/docs/review/player-registration/check.py @@ -0,0 +1,16 @@ +from pathlib import Path +import json,math +R=Path(__file__).resolve().parent +poses=json.loads((R/'samples.json').read_text()) +rows=[] +for side in ['right','left']: + support=[(p['time'],next(q for q in p['legs'] if q['side']==side)) for p in poses] + support=[(t,q) for t,q in support if q['contact']] + t0,q0=support[0] + for t,q in support: + local_y=.5*(q['toe'][1]-q0['toe'][1])-math.sqrt(.75)*(q['toe'][2]-q0['toe'][2]) + travel=240*(t-t0) + rows.append({'side':side,'time':t,'nominalWorldTravel':travel,'projectedLocalToeDelta':local_y,'unprojectedRootResidual':travel+local_y,'consistentProjectedRootResidual':.5*travel+local_y}) +report={'status':'REGISTRATION_PREDICTION_NOT_DISPLAYED_PLAYBACK','sourceCanvas':[384,416],'sourceRootPixels':[192,336],'sourcePixelsPerModelUnit':6,'proposedDrawSize':[64,416/6],'spriteKitAnchor':[.5,1-336/416],'square64VerticalCompression':(64/416)/(64/384),'sourceProjection':'screen x=6*x; screen down=6*(0.5*y-sqrt(0.75)*z)','comparison':'Full-input nominal travel only; no collision, Q8 quantization, displayed frame holds or action phase included','samples':rows,'maxUnprojectedResidual':max(abs(x['unprojectedRootResidual']) for x in rows),'maxConsistentProjectedResidual':max(abs(x['consistentProjectedRootResidual']) for x in rows)} +(R/'registration.json').write_text(json.dumps(report,indent=2)+'\n') +print(json.dumps({k:report[k] for k in ['proposedDrawSize','spriteKitAnchor','square64VerticalCompression','maxUnprojectedResidual','maxConsistentProjectedResidual']},indent=2)) diff --git a/docs/review/player-registration/registration.json b/docs/review/player-registration/registration.json new file mode 100644 index 00000000..ddf5999c --- /dev/null +++ b/docs/review/player-registration/registration.json @@ -0,0 +1,91 @@ +{ + "status": "REGISTRATION_PREDICTION_NOT_DISPLAYED_PLAYBACK", + "sourceCanvas": [ + 384, + 416 + ], + "sourceRootPixels": [ + 192, + 336 + ], + "sourcePixelsPerModelUnit": 6, + "proposedDrawSize": [ + 64, + 69.33333333333333 + ], + "spriteKitAnchor": [ + 0.5, + 0.1923076923076923 + ], + "square64VerticalCompression": 0.9230769230769231, + "sourceProjection": "screen x=6*x; screen down=6*(0.5*y-sqrt(0.75)*z)", + "comparison": "Full-input nominal travel only; no collision, Q8 quantization, displayed frame holds or action phase included", + "samples": [ + { + "side": "right", + "time": 0.0, + "nominalWorldTravel": 0.0, + "projectedLocalToeDelta": 0.0, + "unprojectedRootResidual": 0.0, + "consistentProjectedRootResidual": 0.0 + }, + { + "side": "right", + "time": 0.03125, + "nominalWorldTravel": 7.5, + "projectedLocalToeDelta": -3.75, + "unprojectedRootResidual": 3.75, + "consistentProjectedRootResidual": 0.0 + }, + { + "side": "right", + "time": 0.0625, + "nominalWorldTravel": 15.0, + "projectedLocalToeDelta": -7.5, + "unprojectedRootResidual": 7.5, + "consistentProjectedRootResidual": 0.0 + }, + { + "side": "right", + "time": 0.09375, + "nominalWorldTravel": 22.5, + "projectedLocalToeDelta": -11.25, + "unprojectedRootResidual": 11.25, + "consistentProjectedRootResidual": 0.0 + }, + { + "side": "left", + "time": 0.25, + "nominalWorldTravel": 0.0, + "projectedLocalToeDelta": 0.0, + "unprojectedRootResidual": 0.0, + "consistentProjectedRootResidual": 0.0 + }, + { + "side": "left", + "time": 0.28125, + "nominalWorldTravel": 7.5, + "projectedLocalToeDelta": -3.75, + "unprojectedRootResidual": 3.75, + "consistentProjectedRootResidual": 0.0 + }, + { + "side": "left", + "time": 0.3125, + "nominalWorldTravel": 15.0, + "projectedLocalToeDelta": -7.5, + "unprojectedRootResidual": 7.5, + "consistentProjectedRootResidual": 0.0 + }, + { + "side": "left", + "time": 0.34375, + "nominalWorldTravel": 22.5, + "projectedLocalToeDelta": -11.25, + "unprojectedRootResidual": 11.25, + "consistentProjectedRootResidual": 0.0 + } + ], + "maxUnprojectedResidual": 11.25, + "maxConsistentProjectedResidual": 0.0 +} diff --git a/docs/review/player-registration/samples.json b/docs/review/player-registration/samples.json new file mode 100644 index 00000000..79d7c15c --- /dev/null +++ b/docs/review/player-registration/samples.json @@ -0,0 +1,1138 @@ +[ + { + "time": 0.0, + "legs": [ + { + "side": "right", + "phase": 0.0, + "contact": true, + "angle": 0.0, + "hip": [ + -2.1, + 0, + 25.6 + ], + "knee": [ + -3.05, + 9.722185017242719, + 16.2819198066071 + ], + "ankle": [ + -4.0, + 7.5, + 3.0 + ], + "heel": [ + -4.0, + 5.0, + 0.0 + ], + "toe": [ + -4.0, + 15.0, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 3.05, + 13.201155464557, + 22.93973790753678 + ], + "ankle": [ + 4.0, + 0.3403332420232523, + 18.946399484565088 + ], + "heel": [ + 4.0, + -3.3423278551831803, + 17.64716615558899 + ], + "toe": [ + 4.0, + 5.250690328386904, + 12.532477651209286 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.03125, + "legs": [ + { + "side": "right", + "phase": 0.03125, + "contact": true, + "angle": 10.43701171875, + "hip": [ + -2.1, + 0, + 24.21731656763491 + ], + "knee": [ + -3.05, + 9.392407254453556, + 14.566918339246186 + ], + "ankle": [ + -4.0, + 0.6675535055610231, + 4.309022499434011 + ], + "heel": [ + -4.0, + -2.334546545071932, + 1.8115447145499082 + ], + "toe": [ + -4.0, + 7.5, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.28125, + "contact": false, + "angle": 25.654792785644535, + "hip": [ + 2.1, + 0, + 24.21731656763491 + ], + "knee": [ + 3.05, + 11.057344446739261, + 31.903839434716254 + ], + "ankle": [ + 4.0, + 4.174064737759603, + 20.329386512528142 + ], + "heel": [ + 4.0, + 0.6216735173416836, + 18.70749976645193 + ], + "toe": [ + 4.0, + 9.635862559488197, + 14.37801990018096 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.0625, + "legs": [ + { + "side": "right", + "phase": 0.0625, + "contact": true, + "angle": 30.76171875, + "hip": [ + -2.1, + 0, + 23.892893218813455 + ], + "knee": [ + -3.05, + 7.1210219845479985, + 12.463171179516785 + ], + "ankle": [ + -4.0, + -4.910357086363652, + 6.413921833355803 + ], + "heel": [ + -4.0, + -8.593018183570084, + 5.114688504379704 + ], + "toe": [ + -4.0, + 0.0, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.3125, + "contact": false, + "angle": 20.39337158203125, + "hip": [ + 2.1, + 0, + 23.892893218813455 + ], + "knee": [ + 3.05, + 9.765858713290438, + 33.16519086244253 + ], + "ankle": [ + 4.0, + 6.993858484790961, + 19.987045517470843 + ], + "heel": [ + 4.0, + 3.605161874054547, + 18.046237623735983 + ], + "toe": [ + 4.0, + 12.978384961297573, + 14.561601493983794 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.09375, + "legs": [ + { + "side": "right", + "phase": 0.09375, + "contact": true, + "angle": 44.49462890625, + "hip": [ + -2.1, + 0, + 25.523879532511287 + ], + "knee": [ + -3.05, + 1.8395204467309032, + 12.183577267342823 + ], + "ankle": [ + -4.0, + -10.74734394022944, + 7.3962664455693545 + ], + "heel": [ + -4.0, + -14.633161515468025, + 7.008423987905262 + ], + "toe": [ + -4.0, + -7.5, + 0.0 + ], + "contactWorld": [ + -4.0, + 15.0, + 0 + ] + }, + { + "side": "left", + "phase": 0.34375, + "contact": false, + "angle": 15.234947204589844, + "hip": [ + 2.1, + 0, + 25.523879532511287 + ], + "knee": [ + 3.05, + 12.336451038564142, + 30.92383099276625 + ], + "ankle": [ + 4.0, + 8.896410243605064, + 17.904091389801167 + ], + "heel": [ + 4.0, + 5.695936050882409, + 15.666466545973169 + ], + "toe": [ + 4.0, + 15.344499994023804, + 13.038689189515479 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.125, + "legs": [ + { + "side": "right", + "phase": 0.125, + "contact": false, + "angle": 44.49462890625, + "hip": [ + -2.1, + 0, + 25.975 + ], + "knee": [ + -3.05, + -2.6504044983664867, + 12.771861888360078 + ], + "ankle": [ + -4.0, + -15.224907614437024, + 7.952176070390993 + ], + "heel": [ + -4.0, + -19.11072518967561, + 7.564333612726901 + ], + "toe": [ + -4.0, + -11.977563674207584, + 0.5559096248216386 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.375, + "contact": false, + "angle": 10.43701171875, + "hip": [ + 2.1, + 0, + 25.975 + ], + "knee": [ + 3.05, + 13.372925380962588, + 27.56004471709999 + ], + "ankle": [ + 4.0, + 10.17684541349199, + 14.478279819291549 + ], + "heel": [ + 4.0, + 7.174745362859033, + 11.980802034407446 + ], + "toe": [ + 4.0, + 17.009291907930965, + 10.169257319857538 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.15625, + "legs": [ + { + "side": "right", + "phase": 0.15625, + "contact": false, + "angle": 42.580604553222656, + "hip": [ + -2.1, + 0, + 26.880330085889913 + ], + "knee": [ + -3.05, + -0.6070639143122367, + 13.427487508800866 + ], + "ankle": [ + -4.0, + -13.618975300847653, + 9.957954100840947 + ], + "heel": [ + -4.0, + -17.489670998175235, + 9.440542447812394 + ], + "toe": [ + -4.0, + -10.126409226106636, + 2.674274933444284 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.40625, + "contact": false, + "angle": 6.257057189941406, + "hip": [ + 2.1, + 0, + 26.880330085889913 + ], + "knee": [ + 3.05, + 13.099892995284673, + 23.75938415362971 + ], + "ankle": [ + 4.0, + 11.167309763179647, + 10.43224559912423 + ], + "heel": [ + 4.0, + 8.35523452021924, + 7.722590117715355 + ], + "toe": [ + 4.0, + 18.295663734401302, + 6.6326969863323795 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.1875, + "legs": [ + { + "side": "right", + "phase": 0.1875, + "contact": false, + "angle": 39.48211669921875, + "hip": [ + -2.1, + 0, + 26.99951905283833 + ], + "knee": [ + -3.05, + 4.081991552390702, + 14.166559730600497 + ], + "ankle": [ + -4.0, + -9.332183937511147, + 12.980222541553275 + ], + "heel": [ + -4.0, + -13.169253681545225, + 12.254346671022887 + ], + "toe": [ + -4.0, + -5.451022880445972, + 5.895973191825334 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.4375, + "contact": false, + "angle": 2.95257568359375, + "hip": [ + 2.1, + 0, + 26.99951905283833 + ], + "knee": [ + 3.05, + 11.571476750160718, + 20.11123727720735 + ], + "ankle": [ + 4.0, + 11.906522633381758, + 6.648873285094499 + ], + "heel": [ + 4.0, + 9.255313267294374, + 3.7816291557656867 + ], + "toe": [ + 4.0, + 19.242038384150042, + 3.266535532854132 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.21875, + "legs": [ + { + "side": "right", + "phase": 0.21875, + "contact": false, + "angle": 35.45665740966797, + "hip": [ + -2.1, + 0, + 26.15588571617311 + ], + "knee": [ + -3.05, + 9.132846577994423, + 16.259491757623586 + ], + "ankle": [ + -4.0, + -4.333685817181288, + 16.257200538926643 + ], + "heel": [ + -4.0, + -8.110333047586515, + 15.263754165400352 + ], + "toe": [ + -4.0, + 0.035212655096725776, + 9.462884816285634 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.46875, + "contact": false, + "angle": 0.7810592651367188, + "hip": [ + 2.1, + 0, + 26.15588571617311 + ], + "knee": [ + 3.05, + 10.203166558993354, + 17.367092160204255 + ], + "ankle": [ + 4.0, + 11.560305798910447, + 3.9691194373078122 + ], + "heel": [ + 4.0, + 9.019643185637126, + 1.0034772664592837 + ], + "toe": [ + 4.0, + 19.018714035295414, + 0.8671609302634504 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.25, + "legs": [ + { + "side": "right", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + -2.1, + 0, + 25.6 + ], + "knee": [ + -3.05, + 13.201155464557, + 22.93973790753678 + ], + "ankle": [ + -4.0, + 0.3403332420232523, + 18.946399484565088 + ], + "heel": [ + -4.0, + -3.3423278551831803, + 17.64716615558899 + ], + "toe": [ + -4.0, + 5.250690328386904, + 12.532477651209286 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.0, + "contact": true, + "angle": 0.0, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 3.05, + 9.722185017242719, + 16.2819198066071 + ], + "ankle": [ + 4.0, + 7.5, + 3.0 + ], + "heel": [ + 4.0, + 5.0, + 0.0 + ], + "toe": [ + 4.0, + 15.0, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.28125, + "legs": [ + { + "side": "right", + "phase": 0.28125, + "contact": false, + "angle": 25.654792785644535, + "hip": [ + -2.1, + 0, + 24.21731656763491 + ], + "knee": [ + -3.05, + 11.057344446739261, + 31.903839434716254 + ], + "ankle": [ + -4.0, + 4.174064737759603, + 20.329386512528142 + ], + "heel": [ + -4.0, + 0.6216735173416836, + 18.70749976645193 + ], + "toe": [ + -4.0, + 9.635862559488197, + 14.37801990018096 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.03125, + "contact": true, + "angle": 10.43701171875, + "hip": [ + 2.1, + 0, + 24.21731656763491 + ], + "knee": [ + 3.05, + 9.392407254453556, + 14.566918339246186 + ], + "ankle": [ + 4.0, + 0.6675535055610231, + 4.309022499434011 + ], + "heel": [ + 4.0, + -2.334546545071932, + 1.8115447145499082 + ], + "toe": [ + 4.0, + 7.5, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.3125, + "legs": [ + { + "side": "right", + "phase": 0.3125, + "contact": false, + "angle": 20.39337158203125, + "hip": [ + -2.1, + 0, + 23.892893218813455 + ], + "knee": [ + -3.05, + 9.765858713290438, + 33.16519086244253 + ], + "ankle": [ + -4.0, + 6.993858484790961, + 19.987045517470843 + ], + "heel": [ + -4.0, + 3.605161874054547, + 18.046237623735983 + ], + "toe": [ + -4.0, + 12.978384961297573, + 14.561601493983794 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.0625, + "contact": true, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 23.892893218813455 + ], + "knee": [ + 3.05, + 7.1210219845479985, + 12.463171179516785 + ], + "ankle": [ + 4.0, + -4.910357086363652, + 6.413921833355803 + ], + "heel": [ + 4.0, + -8.593018183570084, + 5.114688504379704 + ], + "toe": [ + 4.0, + 0.0, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.34375, + "legs": [ + { + "side": "right", + "phase": 0.34375, + "contact": false, + "angle": 15.234947204589844, + "hip": [ + -2.1, + 0, + 25.523879532511287 + ], + "knee": [ + -3.05, + 12.336451038564142, + 30.92383099276625 + ], + "ankle": [ + -4.0, + 8.896410243605064, + 17.904091389801167 + ], + "heel": [ + -4.0, + 5.695936050882409, + 15.666466545973169 + ], + "toe": [ + -4.0, + 15.344499994023804, + 13.038689189515479 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.09375, + "contact": true, + "angle": 44.49462890625, + "hip": [ + 2.1, + 0, + 25.523879532511287 + ], + "knee": [ + 3.05, + 1.8395204467309032, + 12.183577267342823 + ], + "ankle": [ + 4.0, + -10.74734394022944, + 7.3962664455693545 + ], + "heel": [ + 4.0, + -14.633161515468025, + 7.008423987905262 + ], + "toe": [ + 4.0, + -7.5, + 0.0 + ], + "contactWorld": [ + 4.0, + 75.0, + 0 + ] + } + ] + }, + { + "time": 0.375, + "legs": [ + { + "side": "right", + "phase": 0.375, + "contact": false, + "angle": 10.43701171875, + "hip": [ + -2.1, + 0, + 25.975 + ], + "knee": [ + -3.05, + 13.372925380962588, + 27.56004471709999 + ], + "ankle": [ + -4.0, + 10.17684541349199, + 14.478279819291549 + ], + "heel": [ + -4.0, + 7.174745362859033, + 11.980802034407446 + ], + "toe": [ + -4.0, + 17.009291907930965, + 10.169257319857538 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.125, + "contact": false, + "angle": 44.49462890625, + "hip": [ + 2.1, + 0, + 25.975 + ], + "knee": [ + 3.05, + -2.6504044983664867, + 12.771861888360078 + ], + "ankle": [ + 4.0, + -15.224907614437024, + 7.952176070390993 + ], + "heel": [ + 4.0, + -19.11072518967561, + 7.564333612726901 + ], + "toe": [ + 4.0, + -11.977563674207584, + 0.5559096248216386 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.40625, + "legs": [ + { + "side": "right", + "phase": 0.40625, + "contact": false, + "angle": 6.257057189941406, + "hip": [ + -2.1, + 0, + 26.880330085889913 + ], + "knee": [ + -3.05, + 13.099892995284673, + 23.75938415362971 + ], + "ankle": [ + -4.0, + 11.167309763179647, + 10.43224559912423 + ], + "heel": [ + -4.0, + 8.35523452021924, + 7.722590117715355 + ], + "toe": [ + -4.0, + 18.295663734401302, + 6.6326969863323795 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.15625, + "contact": false, + "angle": 42.580604553222656, + "hip": [ + 2.1, + 0, + 26.880330085889913 + ], + "knee": [ + 3.05, + -0.6070639143122367, + 13.427487508800866 + ], + "ankle": [ + 4.0, + -13.618975300847653, + 9.957954100840947 + ], + "heel": [ + 4.0, + -17.489670998175235, + 9.440542447812394 + ], + "toe": [ + 4.0, + -10.126409226106636, + 2.674274933444284 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.4375, + "legs": [ + { + "side": "right", + "phase": 0.4375, + "contact": false, + "angle": 2.95257568359375, + "hip": [ + -2.1, + 0, + 26.99951905283833 + ], + "knee": [ + -3.05, + 11.571476750160718, + 20.11123727720735 + ], + "ankle": [ + -4.0, + 11.906522633381758, + 6.648873285094499 + ], + "heel": [ + -4.0, + 9.255313267294374, + 3.7816291557656867 + ], + "toe": [ + -4.0, + 19.242038384150042, + 3.266535532854132 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.1875, + "contact": false, + "angle": 39.48211669921875, + "hip": [ + 2.1, + 0, + 26.99951905283833 + ], + "knee": [ + 3.05, + 4.081991552390702, + 14.166559730600497 + ], + "ankle": [ + 4.0, + -9.332183937511147, + 12.980222541553275 + ], + "heel": [ + 4.0, + -13.169253681545225, + 12.254346671022887 + ], + "toe": [ + 4.0, + -5.451022880445972, + 5.895973191825334 + ], + "contactWorld": null + } + ] + }, + { + "time": 0.46875, + "legs": [ + { + "side": "right", + "phase": 0.46875, + "contact": false, + "angle": 0.7810592651367188, + "hip": [ + -2.1, + 0, + 26.15588571617311 + ], + "knee": [ + -3.05, + 10.203166558993354, + 17.367092160204255 + ], + "ankle": [ + -4.0, + 11.560305798910447, + 3.9691194373078122 + ], + "heel": [ + -4.0, + 9.019643185637126, + 1.0034772664592837 + ], + "toe": [ + -4.0, + 19.018714035295414, + 0.8671609302634504 + ], + "contactWorld": null + }, + { + "side": "left", + "phase": 0.21875, + "contact": false, + "angle": 35.45665740966797, + "hip": [ + 2.1, + 0, + 26.15588571617311 + ], + "knee": [ + 3.05, + 9.132846577994423, + 16.259491757623586 + ], + "ankle": [ + 4.0, + -4.333685817181288, + 16.257200538926643 + ], + "heel": [ + 4.0, + -8.110333047586515, + 15.263754165400352 + ], + "toe": [ + 4.0, + 0.035212655096725776, + 9.462884816285634 + ], + "contactWorld": null + } + ] + } +] diff --git a/docs/review/player-startup-review/README.md b/docs/review/player-startup-review/README.md new file mode 100644 index 00000000..30771a01 --- /dev/null +++ b/docs/review/player-startup-review/README.md @@ -0,0 +1,29 @@ +# Player startup and renderer review — 2026-10-15 + +## Result +Candidate renderer preparation now builds initial scene nodes, prepares outlines and preloads textures before timed playback. Two initial display callbacks keep simulation at tick zero before its clock starts. This fixes the reproduced startup catch-up in the benchmark fixture; it is not yet a shipping startup integration or device-performance certification. + +Final Xcode run: 110 named tests / 112 executions passed, zero failures. All strict full-, half-, quarter-input and Reduced Motion captures observed all 16 frames. Outline readbacks during playback: zero. Five ClipTimingTests also passed. The unchanged core suite previously passed 773 tests across 109 suites; that full suite was not rerun this turn. + +## Measurements +Stage 3 controls had first callback gaps of 271.62 and 293.47 ms. Prepared stage 4 had first live gaps of 16.67–22.42 ms across six captures. Preparation took 622–728 ms, including scene construction of 215–277 ms; initial display readiness additionally took 36–50 ms. Preparation remains visible startup cost rather than disappearing work. Later callback maxima remained 43–61 ms, so smooth 60 fps is not established. + +Prior unrecorded run passed coverage but had a 1.44-second initial gap; this prompted the final readiness change. The recorded run had a Reduced Motion coverage failure (14/16); subsequent unrecorded runs passed. This evidence is retained; recording overhead has not been isolated as the sole cause. + +## Separate visual reviews +- normal-speed.html: actual simulator/SpriteKit recording, normal speed. +- quarter-speed.html: same recorded frames at quarter speed, no interpolation. +- Both offer detail crop and full viewport. Review foot contact, knee-pad orientation, heel/tongue ownership, calf and boot detail, coat overlap, arm motion, and the repeated 16→1 transitions inside the clip. The movie's outer loop boundary is not a gait seam. + +The footage predates the final readiness adjustment but uses the same animation assets, registration, outline and movement. The latest startup result is supported by test telemetry, not a new recording. Only the south-facing candidate walk is represented; candidate idle art is absent and the isolated player disappears at the end. Current outline remains for comparison. This is not the shared benchmark scene. + +## Scope and next gate +Changes remain local. Runtime production assets are not admitted. Keep narrower stance, arm swing and restored knee-pad detail. Await normal-speed and separate quarter-speed contact/seam review before shared-scene work. Hidden surfaces, dimensions and amplitudes remain proposed. Physical-device testing and broader directional/idle coverage remain open. + +## Evidence +- ready-test-summary.json: final Xcode summary. +- ready-evidence/comparison.json: final measured comparison and per-frame costs. +- visible-test-summary.json and visible-evidence/: recorded-run results, including failure. +- final-test-summary.json and final-evidence/: preceding unrecorded result with startup outlier. +- timing-tests.log: five timing tests. +- visible-renderer.mov: continuous original recording; review MP4s are timestamp-preserving crops/extracts. diff --git a/docs/review/player-startup-review/comparison.json b/docs/review/player-startup-review/comparison.json new file mode 100644 index 00000000..6207611d --- /dev/null +++ b/docs/review/player-startup-review/comparison.json @@ -0,0 +1,3485 @@ +[ + { + "axis": 32767, + "coveragePassed": true, + "frameCosts": [ + { + "renderSeconds": 0.2361009120941162, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0038489103317260742, + "simulationSeconds": 0.1188439130783081, + "tick": 15 + }, + { + "renderSeconds": 0.0043239593505859375, + "simulationSeconds": 0.05700397491455078, + "tick": 23 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.03389096260070801, + "tick": 28 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.02926504611968994, + "tick": 32 + }, + { + "renderSeconds": 0.006031990051269531, + "simulationSeconds": 0.02273094654083252, + "tick": 35 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0.015100955963134766, + "tick": 37 + }, + { + "renderSeconds": 0.0028879642486572266, + "simulationSeconds": 0.014886021614074707, + "tick": 39 + }, + { + "renderSeconds": 0.004521965980529785, + "simulationSeconds": 0.023859024047851562, + "tick": 42 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0.014310956001281738, + "tick": 44 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0.015491962432861328, + "tick": 46 + }, + { + "renderSeconds": 0.0030919313430786133, + "simulationSeconds": 0.019039034843444824, + "tick": 48 + }, + { + "renderSeconds": 0.003242015838623047, + "simulationSeconds": 0.022567033767700195, + "tick": 51 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.022081971168518066, + "tick": 54 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.019572019577026367, + "tick": 57 + }, + { + "renderSeconds": 0.0030210018157958984, + "simulationSeconds": 0.019543051719665527, + "tick": 60 + }, + { + "renderSeconds": 0.0024919509887695312, + "simulationSeconds": 0.02068305015563965, + "tick": 62 + }, + { + "renderSeconds": 0.003153085708618164, + "simulationSeconds": 0.01405799388885498, + "tick": 64 + }, + { + "renderSeconds": 0.003430008888244629, + "simulationSeconds": 0.0073850154876708984, + "tick": 65 + }, + { + "renderSeconds": 0.003738999366760254, + "simulationSeconds": 0.01851809024810791, + "tick": 67 + }, + { + "renderSeconds": 0.0034990310668945312, + "simulationSeconds": 0.022430896759033203, + "tick": 70 + }, + { + "renderSeconds": 0.003245115280151367, + "simulationSeconds": 0.021721959114074707, + "tick": 73 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.020437002182006836, + "tick": 76 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.01318502426147461, + "tick": 78 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.007259011268615723, + "tick": 79 + }, + { + "renderSeconds": 0.0028609037399291992, + "simulationSeconds": 0.006564021110534668, + "tick": 80 + }, + { + "renderSeconds": 0.004248976707458496, + "simulationSeconds": 0.006370067596435547, + "tick": 81 + }, + { + "renderSeconds": 0.003369927406311035, + "simulationSeconds": 0.01500391960144043, + "tick": 83 + }, + { + "renderSeconds": 0.0032989978790283203, + "simulationSeconds": 0.015239953994750977, + "tick": 85 + }, + { + "renderSeconds": 0.0031849145889282227, + "simulationSeconds": 0.017100930213928223, + "tick": 87 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.01994800567626953, + "tick": 90 + }, + { + "renderSeconds": 0.003182053565979004, + "simulationSeconds": 0.013164997100830078, + "tick": 92 + }, + { + "renderSeconds": 0.0035049915313720703, + "simulationSeconds": 0.009074926376342773, + "tick": 93 + }, + { + "renderSeconds": 0.0031899213790893555, + "simulationSeconds": 0.016148924827575684, + "tick": 95 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.01435697078704834, + "tick": 97 + }, + { + "renderSeconds": 0.0031158924102783203, + "simulationSeconds": 0.021517038345336914, + "tick": 100 + }, + { + "renderSeconds": 0.002762913703918457, + "simulationSeconds": 0.013318061828613281, + "tick": 102 + }, + { + "renderSeconds": 0.0027109384536743164, + "simulationSeconds": 0.013900995254516602, + "tick": 104 + }, + { + "renderSeconds": 0.0030249357223510742, + "simulationSeconds": 0.013859033584594727, + "tick": 106 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0.014054059982299805, + "tick": 108 + }, + { + "renderSeconds": 0.003249049186706543, + "simulationSeconds": 0.015079975128173828, + "tick": 110 + }, + { + "renderSeconds": 0.003170013427734375, + "simulationSeconds": 0.01589500904083252, + "tick": 112 + }, + { + "renderSeconds": 0.0030890703201293945, + "simulationSeconds": 0.014883041381835938, + "tick": 114 + }, + { + "renderSeconds": 0.0031510591506958008, + "simulationSeconds": 0.014992952346801758, + "tick": 116 + }, + { + "renderSeconds": 0.0029839277267456055, + "simulationSeconds": 0.014694929122924805, + "tick": 118 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0.016185998916625977, + "tick": 120 + }, + { + "renderSeconds": 0.003731966018676758, + "simulationSeconds": 0.014311075210571289, + "tick": 122 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 0.016079068183898926, + "tick": 124 + }, + { + "renderSeconds": 0.00330197811126709, + "simulationSeconds": 0.022716999053955078, + "tick": 127 + }, + { + "renderSeconds": 0.002599000930786133, + "simulationSeconds": 0.0134660005569458, + "tick": 129 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.015292048454284668, + "tick": 131 + }, + { + "renderSeconds": 0.003141045570373535, + "simulationSeconds": 0.014995098114013672, + "tick": 133 + }, + { + "renderSeconds": 0.00315701961517334, + "simulationSeconds": 0.01465904712677002, + "tick": 135 + }, + { + "renderSeconds": 0.0037169456481933594, + "simulationSeconds": 0.014572978019714355, + "tick": 137 + }, + { + "renderSeconds": 0.003600001335144043, + "simulationSeconds": 0.016844987869262695, + "tick": 139 + }, + { + "renderSeconds": 0.0033539533615112305, + "simulationSeconds": 0.02249002456665039, + "tick": 142 + }, + { + "renderSeconds": 0.0030219554901123047, + "simulationSeconds": 0.014834046363830566, + "tick": 144 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.018996000289916992, + "tick": 147 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.012699007987976074, + "tick": 149 + }, + { + "renderSeconds": 0.004505038261413574, + "simulationSeconds": 0.007483959197998047, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 90, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.002930164337158203, + "preparationSeconds": 0.40066301822662354, + "reducedMotion": false, + "renderSeconds": 0.42679643630981445, + "repetition": 1, + "scenePreparationSeconds": 0, + "simulationSeconds": 1.114659070968628, + "stage": 3, + "callbackMedianMS": 38.68670831434429, + "callbackP95MS": 86.78241667803377, + "callbackMaxMS": 271.61620833794586, + "postActionRecords": 60, + "run": "BP008-stage-3-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frameCosts": [ + { + "renderSeconds": 0.263469934463501, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0045239925384521484, + "simulationSeconds": 0.11147499084472656, + "tick": 15 + }, + { + "renderSeconds": 0.0042400360107421875, + "simulationSeconds": 0.05816197395324707, + "tick": 23 + }, + { + "renderSeconds": 0.0035490989685058594, + "simulationSeconds": 0.03619492053985596, + "tick": 28 + }, + { + "renderSeconds": 0.003268003463745117, + "simulationSeconds": 0.030880093574523926, + "tick": 32 + }, + { + "renderSeconds": 0.0034019947052001953, + "simulationSeconds": 0.02258896827697754, + "tick": 35 + }, + { + "renderSeconds": 0.0033260583877563477, + "simulationSeconds": 0.022152066230773926, + "tick": 38 + }, + { + "renderSeconds": 0.0037889480590820312, + "simulationSeconds": 0.028404951095581055, + "tick": 41 + }, + { + "renderSeconds": 0.004034996032714844, + "simulationSeconds": 0.027685999870300293, + "tick": 44 + }, + { + "renderSeconds": 0.003310084342956543, + "simulationSeconds": 0.02292799949645996, + "tick": 47 + }, + { + "renderSeconds": 0.00412905216217041, + "simulationSeconds": 0.022367000579833984, + "tick": 50 + }, + { + "renderSeconds": 0.002980947494506836, + "simulationSeconds": 0.022091984748840332, + "tick": 53 + }, + { + "renderSeconds": 0.0032809972763061523, + "simulationSeconds": 0.01583099365234375, + "tick": 55 + }, + { + "renderSeconds": 0.0038410425186157227, + "simulationSeconds": 0.028061985969543457, + "tick": 58 + }, + { + "renderSeconds": 0.003371000289916992, + "simulationSeconds": 0.021638035774230957, + "tick": 61 + }, + { + "renderSeconds": 0.0035250186920166016, + "simulationSeconds": 0.022211909294128418, + "tick": 64 + }, + { + "renderSeconds": 0.0031349658966064453, + "simulationSeconds": 0.02283000946044922, + "tick": 67 + }, + { + "renderSeconds": 0.003104090690612793, + "simulationSeconds": 0.014605045318603516, + "tick": 69 + }, + { + "renderSeconds": 0.0035529136657714844, + "simulationSeconds": 0.02861499786376953, + "tick": 72 + }, + { + "renderSeconds": 0.003527045249938965, + "simulationSeconds": 0.02377796173095703, + "tick": 75 + }, + { + "renderSeconds": 0.0035300254821777344, + "simulationSeconds": 0.023341059684753418, + "tick": 78 + }, + { + "renderSeconds": 0.003769993782043457, + "simulationSeconds": 0.024266958236694336, + "tick": 81 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.01933002471923828, + "tick": 84 + }, + { + "renderSeconds": 0.0037649869918823242, + "simulationSeconds": 0.00639796257019043, + "tick": 85 + }, + { + "renderSeconds": 0.0028609037399291992, + "simulationSeconds": 0.012800931930541992, + "tick": 87 + }, + { + "renderSeconds": 0.008571028709411621, + "simulationSeconds": 0.0063419342041015625, + "tick": 88 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.013743996620178223, + "tick": 90 + }, + { + "renderSeconds": 0.0037980079650878906, + "simulationSeconds": 0.007675051689147949, + "tick": 91 + }, + { + "renderSeconds": 0.003679037094116211, + "simulationSeconds": 0.01921999454498291, + "tick": 93 + }, + { + "renderSeconds": 0.004212021827697754, + "simulationSeconds": 0.019430994987487793, + "tick": 95 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.029837965965270996, + "tick": 99 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.02035999298095703, + "tick": 102 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 0.013267993927001953, + "tick": 104 + }, + { + "renderSeconds": 0.003376007080078125, + "simulationSeconds": 0.006859898567199707, + "tick": 105 + }, + { + "renderSeconds": 0.0032830238342285156, + "simulationSeconds": 0.006866931915283203, + "tick": 106 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.0067059993743896484, + "tick": 107 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.006827950477600098, + "tick": 108 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 0.014989018440246582, + "tick": 110 + }, + { + "renderSeconds": 0.0031610727310180664, + "simulationSeconds": 0.007284998893737793, + "tick": 111 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0.007706999778747559, + "tick": 112 + }, + { + "renderSeconds": 0.0035610198974609375, + "simulationSeconds": 0.015807032585144043, + "tick": 114 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.007516026496887207, + "tick": 115 + }, + { + "renderSeconds": 0.0035600662231445312, + "simulationSeconds": 0.016559958457946777, + "tick": 117 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0.006734013557434082, + "tick": 118 + }, + { + "renderSeconds": 0.003055095672607422, + "simulationSeconds": 0.007470965385437012, + "tick": 119 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0.013303995132446289, + "tick": 121 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.019675016403198242, + "tick": 124 + }, + { + "renderSeconds": 0.0028209686279296875, + "simulationSeconds": 0.013436079025268555, + "tick": 126 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.0078810453414917, + "tick": 127 + }, + { + "renderSeconds": 0.0030099153518676758, + "simulationSeconds": 0.016584038734436035, + "tick": 129 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.00766301155090332, + "tick": 130 + }, + { + "renderSeconds": 0.002855062484741211, + "simulationSeconds": 0.012635946273803711, + "tick": 132 + }, + { + "renderSeconds": 0.0026619434356689453, + "simulationSeconds": 0.02072298526763916, + "tick": 135 + }, + { + "renderSeconds": 0.0032120943069458008, + "simulationSeconds": 0.014397978782653809, + "tick": 137 + }, + { + "renderSeconds": 0.003119945526123047, + "simulationSeconds": 0.006989002227783203, + "tick": 138 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.0138779878616333, + "tick": 140 + }, + { + "renderSeconds": 0.002827882766723633, + "simulationSeconds": 0.007593035697937012, + "tick": 141 + }, + { + "renderSeconds": 0.002886056900024414, + "simulationSeconds": 0.006935000419616699, + "tick": 142 + }, + { + "renderSeconds": 0.003125905990600586, + "simulationSeconds": 0.015329957008361816, + "tick": 144 + }, + { + "renderSeconds": 0.0031599998474121094, + "simulationSeconds": 0.007097005844116211, + "tick": 145 + }, + { + "renderSeconds": 0.0033659934997558594, + "simulationSeconds": 0.015650033950805664, + "tick": 147 + }, + { + "renderSeconds": 0.0035899877548217773, + "simulationSeconds": 0.007786989212036133, + "tick": 148 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0.015211939811706543, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 88, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.003196239471435547, + "preparationSeconds": 0.4327569007873535, + "reducedMotion": false, + "renderSeconds": 0.47340643405914307, + "repetition": 2, + "scenePreparationSeconds": 0, + "simulationSeconds": 1.1326175928115845, + "stage": 3, + "callbackMedianMS": 34.51168749597855, + "callbackP95MS": 63.020791683811694, + "callbackMaxMS": 293.4714166622143, + "postActionRecords": 63, + "run": "BP008-stage-3-rep-2-axis-32767-reduced-false-metrics" + }, + { + "axis": 16383, + "coveragePassed": true, + "frameCosts": [ + { + "renderSeconds": 0.0011390447616577148, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010700225830078125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0012279748916625977, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.004047989845275879, + "simulationSeconds": 0.006721973419189453, + "tick": 1 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.007963895797729492, + "tick": 2 + }, + { + "renderSeconds": 0.0031909942626953125, + "simulationSeconds": 0.007687926292419434, + "tick": 3 + }, + { + "renderSeconds": 0.0030890703201293945, + "simulationSeconds": 0.006953001022338867, + "tick": 4 + }, + { + "renderSeconds": 0.0032520294189453125, + "simulationSeconds": 0.014931917190551758, + "tick": 6 + }, + { + "renderSeconds": 0.0034390687942504883, + "simulationSeconds": 0.00885307788848877, + "tick": 7 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.016044020652770996, + "tick": 9 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.014683008193969727, + "tick": 11 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.01317906379699707, + "tick": 13 + }, + { + "renderSeconds": 0.0026780366897583008, + "simulationSeconds": 0.013588905334472656, + "tick": 15 + }, + { + "renderSeconds": 0.0032529830932617188, + "simulationSeconds": 0.012670040130615234, + "tick": 17 + }, + { + "renderSeconds": 0.0030629634857177734, + "simulationSeconds": 0.013230085372924805, + "tick": 19 + }, + { + "renderSeconds": 0.0026029348373413086, + "simulationSeconds": 0.012984037399291992, + "tick": 21 + }, + { + "renderSeconds": 0.0036149024963378906, + "simulationSeconds": 0.013299107551574707, + "tick": 23 + }, + { + "renderSeconds": 0.0030660629272460938, + "simulationSeconds": 0.01491093635559082, + "tick": 25 + }, + { + "renderSeconds": 0.003763914108276367, + "simulationSeconds": 0.016049981117248535, + "tick": 27 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0.013106942176818848, + "tick": 29 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.013112068176269531, + "tick": 31 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.014058947563171387, + "tick": 33 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.014370083808898926, + "tick": 35 + }, + { + "renderSeconds": 0.0031409263610839844, + "simulationSeconds": 0.01300501823425293, + "tick": 37 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 0.01389002799987793, + "tick": 39 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.006850004196166992, + "tick": 40 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.007049083709716797, + "tick": 41 + }, + { + "renderSeconds": 0.0033060312271118164, + "simulationSeconds": 0.007032990455627441, + "tick": 42 + }, + { + "renderSeconds": 0.0030019283294677734, + "simulationSeconds": 0.013457059860229492, + "tick": 44 + }, + { + "renderSeconds": 0.002844095230102539, + "simulationSeconds": 0.00666499137878418, + "tick": 45 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.006433010101318359, + "tick": 46 + }, + { + "renderSeconds": 0.0032470226287841797, + "simulationSeconds": 0.0074340105056762695, + "tick": 47 + }, + { + "renderSeconds": 0.00345003604888916, + "simulationSeconds": 0.006464958190917969, + "tick": 48 + }, + { + "renderSeconds": 0.0031900405883789062, + "simulationSeconds": 0.014421939849853516, + "tick": 50 + }, + { + "renderSeconds": 0.003000974655151367, + "simulationSeconds": 0.0067501068115234375, + "tick": 51 + }, + { + "renderSeconds": 0.0032439231872558594, + "simulationSeconds": 0.006833910942077637, + "tick": 52 + }, + { + "renderSeconds": 0.002850055694580078, + "simulationSeconds": 0.00634002685546875, + "tick": 53 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.006908059120178223, + "tick": 54 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.013705015182495117, + "tick": 56 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.006453037261962891, + "tick": 57 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0.00627291202545166, + "tick": 58 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.0066519975662231445, + "tick": 59 + }, + { + "renderSeconds": 0.0031429529190063477, + "simulationSeconds": 0.00683903694152832, + "tick": 60 + }, + { + "renderSeconds": 0.0029679536819458008, + "simulationSeconds": 0.013899922370910645, + "tick": 62 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.0065610408782958984, + "tick": 63 + }, + { + "renderSeconds": 0.0028859376907348633, + "simulationSeconds": 0.006428956985473633, + "tick": 64 + }, + { + "renderSeconds": 0.0036219358444213867, + "simulationSeconds": 0.006749987602233887, + "tick": 65 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.012570977210998535, + "tick": 67 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.006508946418762207, + "tick": 68 + }, + { + "renderSeconds": 0.0034639835357666016, + "simulationSeconds": 0.007207989692687988, + "tick": 69 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.006322026252746582, + "tick": 70 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.01380300521850586, + "tick": 72 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0.006618976593017578, + "tick": 73 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 0.007078051567077637, + "tick": 74 + }, + { + "renderSeconds": 0.003928065299987793, + "simulationSeconds": 0.007658958435058594, + "tick": 75 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.01249992847442627, + "tick": 77 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.013784050941467285, + "tick": 79 + }, + { + "renderSeconds": 0.0033349990844726562, + "simulationSeconds": 0.01376199722290039, + "tick": 81 + }, + { + "renderSeconds": 0.0029000043869018555, + "simulationSeconds": 0.013720035552978516, + "tick": 83 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.017398953437805176, + "tick": 85 + }, + { + "renderSeconds": 0.0032259225845336914, + "simulationSeconds": 0.01383507251739502, + "tick": 87 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.013718962669372559, + "tick": 89 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.012424945831298828, + "tick": 91 + }, + { + "renderSeconds": 0.002888917922973633, + "simulationSeconds": 0.0125809907913208, + "tick": 93 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.014304041862487793, + "tick": 95 + }, + { + "renderSeconds": 0.002569913864135742, + "simulationSeconds": 0.006247997283935547, + "tick": 96 + }, + { + "renderSeconds": 0.0031980276107788086, + "simulationSeconds": 0.00705409049987793, + "tick": 97 + }, + { + "renderSeconds": 0.0029410123825073242, + "simulationSeconds": 0.006556987762451172, + "tick": 98 + }, + { + "renderSeconds": 0.0031659603118896484, + "simulationSeconds": 0.006269097328186035, + "tick": 99 + }, + { + "renderSeconds": 0.0029480457305908203, + "simulationSeconds": 0.006512999534606934, + "tick": 100 + }, + { + "renderSeconds": 0.003052949905395508, + "simulationSeconds": 0.013120055198669434, + "tick": 102 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.007372021675109863, + "tick": 103 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0.00636899471282959, + "tick": 104 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.006748080253601074, + "tick": 105 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 0.006563067436218262, + "tick": 106 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.01315295696258545, + "tick": 108 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.006927967071533203, + "tick": 109 + }, + { + "renderSeconds": 0.0031610727310180664, + "simulationSeconds": 0.006888985633850098, + "tick": 110 + }, + { + "renderSeconds": 0.0031909942626953125, + "simulationSeconds": 0.006663918495178223, + "tick": 111 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.006428956985473633, + "tick": 112 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.012874007225036621, + "tick": 114 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.007558941841125488, + "tick": 115 + }, + { + "renderSeconds": 0.002891063690185547, + "simulationSeconds": 0.007160067558288574, + "tick": 116 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.006229996681213379, + "tick": 117 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.006569981575012207, + "tick": 118 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0.013921976089477539, + "tick": 120 + }, + { + "renderSeconds": 0.0034149885177612305, + "simulationSeconds": 0.006162047386169434, + "tick": 121 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.006334900856018066, + "tick": 122 + }, + { + "renderSeconds": 0.002680063247680664, + "simulationSeconds": 0.007397055625915527, + "tick": 123 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.01335299015045166, + "tick": 125 + }, + { + "renderSeconds": 0.0027159452438354492, + "simulationSeconds": 0.006785035133361816, + "tick": 126 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.006804943084716797, + "tick": 127 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 0.016224026679992676, + "tick": 129 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.007405996322631836, + "tick": 130 + }, + { + "renderSeconds": 0.0025779008865356445, + "simulationSeconds": 0.014285922050476074, + "tick": 132 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.007010102272033691, + "tick": 133 + }, + { + "renderSeconds": 0.0030819177627563477, + "simulationSeconds": 0.007786989212036133, + "tick": 134 + }, + { + "renderSeconds": 0.003019094467163086, + "simulationSeconds": 0.014029979705810547, + "tick": 136 + }, + { + "renderSeconds": 0.0033190250396728516, + "simulationSeconds": 0.007223963737487793, + "tick": 137 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.005988001823425293, + "tick": 138 + }, + { + "renderSeconds": 0.002514958381652832, + "simulationSeconds": 0.01229095458984375, + "tick": 140 + }, + { + "renderSeconds": 0.0033980607986450195, + "simulationSeconds": 0.007536053657531738, + "tick": 141 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.006667017936706543, + "tick": 142 + }, + { + "renderSeconds": 0.0033380985260009766, + "simulationSeconds": 0.006793975830078125, + "tick": 143 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0.014407992362976074, + "tick": 145 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.015041947364807129, + "tick": 147 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.014564037322998047, + "tick": 149 + }, + { + "renderSeconds": 0.003344893455505371, + "simulationSeconds": 0.015254974365234375, + "tick": 151 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.035962624999228865, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 166, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005178689956665039, + "preparationSeconds": 0.622520923614502, + "reducedMotion": false, + "renderSeconds": 0.32048845291137695, + "repetition": 0, + "scenePreparationSeconds": 0.21492600440979004, + "simulationSeconds": 1.0438340902328491, + "stage": 4, + "callbackMedianMS": 16.666666691889986, + "callbackP95MS": 39.68483334756456, + "callbackMaxMS": 43.38608335820027, + "postActionRecords": 106, + "run": "BP008-stage-4-rep-0-axis-16383-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frameCosts": [ + { + "renderSeconds": 0.001114964485168457, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011290311813354492, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011470317840576172, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011110305786132812, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0043790340423583984, + "simulationSeconds": 0.007248997688293457, + "tick": 1 + }, + { + "renderSeconds": 0.003564000129699707, + "simulationSeconds": 0.007779955863952637, + "tick": 2 + }, + { + "renderSeconds": 0.0032820701599121094, + "simulationSeconds": 0.015121936798095703, + "tick": 4 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0.014319062232971191, + "tick": 6 + }, + { + "renderSeconds": 0.0035020112991333008, + "simulationSeconds": 0.007361054420471191, + "tick": 7 + }, + { + "renderSeconds": 0.003076910972595215, + "simulationSeconds": 0.022301077842712402, + "tick": 10 + }, + { + "renderSeconds": 0.003014087677001953, + "simulationSeconds": 0.014831066131591797, + "tick": 12 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.01447606086730957, + "tick": 14 + }, + { + "renderSeconds": 0.003903985023498535, + "simulationSeconds": 0.007458925247192383, + "tick": 15 + }, + { + "renderSeconds": 0.0031889677047729492, + "simulationSeconds": 0.021759033203125, + "tick": 18 + }, + { + "renderSeconds": 0.003370046615600586, + "simulationSeconds": 0.021829962730407715, + "tick": 21 + }, + { + "renderSeconds": 0.0031789541244506836, + "simulationSeconds": 0.022906064987182617, + "tick": 24 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.021620988845825195, + "tick": 27 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.023030996322631836, + "tick": 30 + }, + { + "renderSeconds": 0.003889918327331543, + "simulationSeconds": 0.022656917572021484, + "tick": 33 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.020521998405456543, + "tick": 36 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0.014335989952087402, + "tick": 38 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.006523013114929199, + "tick": 39 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.006350994110107422, + "tick": 40 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.012397050857543945, + "tick": 42 + }, + { + "renderSeconds": 0.003020048141479492, + "simulationSeconds": 0.014178991317749023, + "tick": 44 + }, + { + "renderSeconds": 0.003818035125732422, + "simulationSeconds": 0.017900943756103516, + "tick": 46 + }, + { + "renderSeconds": 0.0038878917694091797, + "simulationSeconds": 0.027146100997924805, + "tick": 49 + }, + { + "renderSeconds": 0.003949999809265137, + "simulationSeconds": 0.01809704303741455, + "tick": 51 + }, + { + "renderSeconds": 0.003268003463745117, + "simulationSeconds": 0.01716291904449463, + "tick": 53 + }, + { + "renderSeconds": 0.003556966781616211, + "simulationSeconds": 0.007902026176452637, + "tick": 54 + }, + { + "renderSeconds": 0.003125905990600586, + "simulationSeconds": 0.022186994552612305, + "tick": 57 + }, + { + "renderSeconds": 0.0032480955123901367, + "simulationSeconds": 0.024044036865234375, + "tick": 60 + }, + { + "renderSeconds": 0.0030710697174072266, + "simulationSeconds": 0.015262007713317871, + "tick": 62 + }, + { + "renderSeconds": 0.0033669471740722656, + "simulationSeconds": 0.016139984130859375, + "tick": 64 + }, + { + "renderSeconds": 0.0037620067596435547, + "simulationSeconds": 0.014825105667114258, + "tick": 66 + }, + { + "renderSeconds": 0.003210902214050293, + "simulationSeconds": 0.0072890520095825195, + "tick": 67 + }, + { + "renderSeconds": 0.0031870603561401367, + "simulationSeconds": 0.016036033630371094, + "tick": 69 + }, + { + "renderSeconds": 0.003199934959411621, + "simulationSeconds": 0.007954001426696777, + "tick": 70 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.013010025024414062, + "tick": 72 + }, + { + "renderSeconds": 0.0027540922164916992, + "simulationSeconds": 0.013000011444091797, + "tick": 74 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.006891012191772461, + "tick": 75 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.006891965866088867, + "tick": 76 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.006495952606201172, + "tick": 77 + }, + { + "renderSeconds": 0.0035239458084106445, + "simulationSeconds": 0.018626093864440918, + "tick": 79 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.01347506046295166, + "tick": 81 + }, + { + "renderSeconds": 0.0034450292587280273, + "simulationSeconds": 0.00811302661895752, + "tick": 82 + }, + { + "renderSeconds": 0.003547072410583496, + "simulationSeconds": 0.007966041564941406, + "tick": 83 + }, + { + "renderSeconds": 0.004081010818481445, + "simulationSeconds": 0.02708303928375244, + "tick": 86 + }, + { + "renderSeconds": 0.0032720565795898438, + "simulationSeconds": 0.022153019905090332, + "tick": 89 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.01973891258239746, + "tick": 92 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.014003992080688477, + "tick": 94 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.014019012451171875, + "tick": 96 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.013087034225463867, + "tick": 98 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.013571023941040039, + "tick": 100 + }, + { + "renderSeconds": 0.0027780532836914062, + "simulationSeconds": 0.014497995376586914, + "tick": 102 + }, + { + "renderSeconds": 0.0029860734939575195, + "simulationSeconds": 0.012850046157836914, + "tick": 104 + }, + { + "renderSeconds": 0.0033670663833618164, + "simulationSeconds": 0.006615996360778809, + "tick": 105 + }, + { + "renderSeconds": 0.003092050552368164, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.006528973579406738, + "tick": 106 + }, + { + "renderSeconds": 0.0032159090042114258, + "simulationSeconds": 0.006801009178161621, + "tick": 107 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0.014987945556640625, + "tick": 109 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.015808939933776855, + "tick": 111 + }, + { + "renderSeconds": 0.0028901100158691406, + "simulationSeconds": 0.012941956520080566, + "tick": 113 + }, + { + "renderSeconds": 0.0031620264053344727, + "simulationSeconds": 0.007296919822692871, + "tick": 114 + }, + { + "renderSeconds": 0.0031490325927734375, + "simulationSeconds": 0.00842893123626709, + "tick": 115 + }, + { + "renderSeconds": 0.0028399229049682617, + "simulationSeconds": 0.013808012008666992, + "tick": 117 + }, + { + "renderSeconds": 0.0025690793991088867, + "simulationSeconds": 0.013397932052612305, + "tick": 119 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.007066965103149414, + "tick": 120 + }, + { + "renderSeconds": 0.002975940704345703, + "simulationSeconds": 0.006710052490234375, + "tick": 121 + }, + { + "renderSeconds": 0.0031249523162841797, + "simulationSeconds": 0.008718013763427734, + "tick": 122 + }, + { + "renderSeconds": 0.003605961799621582, + "simulationSeconds": 0.02020096778869629, + "tick": 125 + }, + { + "renderSeconds": 0.0026389360427856445, + "simulationSeconds": 0.013318061828613281, + "tick": 127 + }, + { + "renderSeconds": 0.002516031265258789, + "simulationSeconds": 0.013777971267700195, + "tick": 129 + }, + { + "renderSeconds": 0.003345012664794922, + "simulationSeconds": 0.0077779293060302734, + "tick": 130 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.015789031982421875, + "tick": 132 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0.01524496078491211, + "tick": 134 + }, + { + "renderSeconds": 0.0033670663833618164, + "simulationSeconds": 0.007435917854309082, + "tick": 135 + }, + { + "renderSeconds": 0.0038880109786987305, + "simulationSeconds": 0.016201019287109375, + "tick": 137 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.025027990341186523, + "tick": 140 + }, + { + "renderSeconds": 0.0031969547271728516, + "simulationSeconds": 0.013882040977478027, + "tick": 142 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.0070830583572387695, + "tick": 143 + }, + { + "renderSeconds": 0.003538966178894043, + "simulationSeconds": 0.00707697868347168, + "tick": 144 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0.02136099338531494, + "tick": 147 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.02469003200531006, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04999999998835847, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 128, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004315733909606934, + "preparationSeconds": 0.6265859603881836, + "reducedMotion": false, + "renderSeconds": 0.25787055492401123, + "repetition": 0, + "scenePreparationSeconds": 0.22445595264434814, + "simulationSeconds": 1.114408254623413, + "stage": 4, + "callbackMedianMS": 33.33333335467614, + "callbackP95MS": 49.91541666095145, + "callbackMaxMS": 56.205500004580244, + "postActionRecords": 82, + "run": "BP008-stage-4-rep-0-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frameCosts": [ + { + "renderSeconds": 0.0009870529174804688, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0014100074768066406, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011969804763793945, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0013200044631958008, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.004202008247375488, + "simulationSeconds": 0.0071659088134765625, + "tick": 1 + }, + { + "renderSeconds": 0.003158092498779297, + "simulationSeconds": 0.014863014221191406, + "tick": 3 + }, + { + "renderSeconds": 0.0031980276107788086, + "simulationSeconds": 0.015242934226989746, + "tick": 5 + }, + { + "renderSeconds": 0.003345966339111328, + "simulationSeconds": 0.016538023948669434, + "tick": 7 + }, + { + "renderSeconds": 0.004111886024475098, + "simulationSeconds": 0.007910966873168945, + "tick": 8 + }, + { + "renderSeconds": 0.00419306755065918, + "simulationSeconds": 0.01892697811126709, + "tick": 10 + }, + { + "renderSeconds": 0.003364086151123047, + "simulationSeconds": 0.016308903694152832, + "tick": 12 + }, + { + "renderSeconds": 0.0036650896072387695, + "simulationSeconds": 0.02417898178100586, + "tick": 15 + }, + { + "renderSeconds": 0.0027409791946411133, + "simulationSeconds": 0.013015985488891602, + "tick": 17 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.013557076454162598, + "tick": 19 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.013782024383544922, + "tick": 21 + }, + { + "renderSeconds": 0.0031279325485229492, + "simulationSeconds": 0.015946030616760254, + "tick": 23 + }, + { + "renderSeconds": 0.003155946731567383, + "simulationSeconds": 0.015919089317321777, + "tick": 25 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.014529943466186523, + "tick": 27 + }, + { + "renderSeconds": 0.003764033317565918, + "simulationSeconds": 0.014005899429321289, + "tick": 29 + }, + { + "renderSeconds": 0.0033080577850341797, + "simulationSeconds": 0.01582491397857666, + "tick": 31 + }, + { + "renderSeconds": 0.0038530826568603516, + "simulationSeconds": 0.027613043785095215, + "tick": 34 + }, + { + "renderSeconds": 0.0033349990844726562, + "simulationSeconds": 0.016381025314331055, + "tick": 36 + }, + { + "renderSeconds": 0.003125905990600586, + "simulationSeconds": 0.007712006568908691, + "tick": 37 + }, + { + "renderSeconds": 0.0026390552520751953, + "simulationSeconds": 0.01920795440673828, + "tick": 40 + }, + { + "renderSeconds": 0.0029609203338623047, + "simulationSeconds": 0.006387114524841309, + "tick": 41 + }, + { + "renderSeconds": 0.0027959346771240234, + "simulationSeconds": 0.006081938743591309, + "tick": 42 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0.007822036743164062, + "tick": 43 + }, + { + "renderSeconds": 0.0032750368118286133, + "simulationSeconds": 0.01772606372833252, + "tick": 45 + }, + { + "renderSeconds": 0.0032279491424560547, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0038979053497314453, + "simulationSeconds": 0.00957798957824707, + "tick": 46 + }, + { + "renderSeconds": 0.0037440061569213867, + "simulationSeconds": 0.026576995849609375, + "tick": 49 + }, + { + "renderSeconds": 0.003042936325073242, + "simulationSeconds": 0.02585303783416748, + "tick": 52 + }, + { + "renderSeconds": 0.003260016441345215, + "simulationSeconds": 0.021390914916992188, + "tick": 55 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.026147961616516113, + "tick": 58 + }, + { + "renderSeconds": 0.0034929513931274414, + "simulationSeconds": 0.015787959098815918, + "tick": 60 + }, + { + "renderSeconds": 0.00332796573638916, + "simulationSeconds": 0.007422089576721191, + "tick": 61 + }, + { + "renderSeconds": 0.002731919288635254, + "simulationSeconds": 0.02228999137878418, + "tick": 64 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.013210058212280273, + "tick": 66 + }, + { + "renderSeconds": 0.0031020641326904297, + "simulationSeconds": 0.014575004577636719, + "tick": 68 + }, + { + "renderSeconds": 0.0036200284957885742, + "simulationSeconds": 0.017183899879455566, + "tick": 70 + }, + { + "renderSeconds": 0.004033923149108887, + "simulationSeconds": 0.0179140567779541, + "tick": 72 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.024245023727416992, + "tick": 75 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.012365102767944336, + "tick": 77 + }, + { + "renderSeconds": 0.0027239322662353516, + "simulationSeconds": 0.012138962745666504, + "tick": 79 + }, + { + "renderSeconds": 0.0027129650115966797, + "simulationSeconds": 0.012016057968139648, + "tick": 81 + }, + { + "renderSeconds": 0.00277101993560791, + "simulationSeconds": 0.006405949592590332, + "tick": 82 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0029250383377075195, + "simulationSeconds": 0.0059130191802978516, + "tick": 83 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.013382911682128906, + "tick": 85 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0.007017970085144043, + "tick": 86 + }, + { + "renderSeconds": 0.004870891571044922, + "simulationSeconds": 0.021501898765563965, + "tick": 88 + }, + { + "renderSeconds": 0.0035020112991333008, + "simulationSeconds": 0.02166593074798584, + "tick": 90 + }, + { + "renderSeconds": 0.0035200119018554688, + "simulationSeconds": 0.02231001853942871, + "tick": 93 + }, + { + "renderSeconds": 0.002847909927368164, + "simulationSeconds": 0.018592000007629395, + "tick": 96 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.012668013572692871, + "tick": 98 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0.012607932090759277, + "tick": 100 + }, + { + "renderSeconds": 0.0034079551696777344, + "simulationSeconds": 0.006958961486816406, + "tick": 101 + }, + { + "renderSeconds": 0.0032720565795898438, + "simulationSeconds": 0.015101075172424316, + "tick": 103 + }, + { + "renderSeconds": 0.0039730072021484375, + "simulationSeconds": 0.007295012474060059, + "tick": 104 + }, + { + "renderSeconds": 0.003962993621826172, + "simulationSeconds": 0.01797795295715332, + "tick": 106 + }, + { + "renderSeconds": 0.0038529634475708008, + "simulationSeconds": 0.019142985343933105, + "tick": 108 + }, + { + "renderSeconds": 0.004754900932312012, + "simulationSeconds": 0.01623392105102539, + "tick": 110 + }, + { + "renderSeconds": 0.008751988410949707, + "simulationSeconds": 0.015802979469299316, + "tick": 112 + }, + { + "renderSeconds": 0.002933025360107422, + "simulationSeconds": 0.022670984268188477, + "tick": 115 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0.012920975685119629, + "tick": 117 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.0126420259475708, + "tick": 119 + }, + { + "renderSeconds": 0.003589034080505371, + "simulationSeconds": 0.0071190595626831055, + "tick": 120 + }, + { + "renderSeconds": 0.00380706787109375, + "simulationSeconds": 0.007441043853759766, + "tick": 121 + }, + { + "renderSeconds": 0.0036429166793823242, + "simulationSeconds": 0.02100503444671631, + "tick": 123 + }, + { + "renderSeconds": 0.003835916519165039, + "simulationSeconds": 0.032559990882873535, + "tick": 126 + }, + { + "renderSeconds": 0.00318300724029541, + "simulationSeconds": 0.022059917449951172, + "tick": 129 + }, + { + "renderSeconds": 0.0034650564193725586, + "simulationSeconds": 0.02183699607849121, + "tick": 132 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.018764972686767578, + "tick": 135 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.012794017791748047, + "tick": 137 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.014651060104370117, + "tick": 139 + }, + { + "renderSeconds": 0.003489971160888672, + "simulationSeconds": 0.017232894897460938, + "tick": 141 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.03265702724456787, + "tick": 144 + }, + { + "renderSeconds": 0.0033310651779174805, + "simulationSeconds": 0.027984976768493652, + "tick": 147 + }, + { + "renderSeconds": 0.0029839277267456055, + "simulationSeconds": 0.020748019218444824, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03611333333537914, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 126, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004387021064758301, + "preparationSeconds": 0.625993013381958, + "reducedMotion": true, + "renderSeconds": 0.2564455270767212, + "repetition": 0, + "scenePreparationSeconds": 0.23130500316619873, + "simulationSeconds": 1.1710115671157837, + "stage": 4, + "callbackMedianMS": 33.52527083188761, + "callbackP95MS": 50.45741668436676, + "callbackMaxMS": 60.941249976167455, + "postActionRecords": 77, + "run": "BP008-stage-4-rep-0-axis-32767-reduced-true-metrics" + }, + { + "axis": 8191, + "coveragePassed": true, + "frameCosts": [ + { + "renderSeconds": 0.0014219284057617188, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011200904846191406, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0009790658950805664, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0013129711151123047, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.004266977310180664, + "simulationSeconds": 0.00628209114074707, + "tick": 1 + }, + { + "renderSeconds": 0.0034499168395996094, + "simulationSeconds": 0.007371068000793457, + "tick": 2 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.007035017013549805, + "tick": 3 + }, + { + "renderSeconds": 0.0031440258026123047, + "simulationSeconds": 0.006797075271606445, + "tick": 4 + }, + { + "renderSeconds": 0.0028420686721801758, + "simulationSeconds": 0.02024102210998535, + "tick": 7 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.013797998428344727, + "tick": 9 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0, + "tick": 9 + }, + { + "renderSeconds": 0.002989053726196289, + "simulationSeconds": 0.0066100358963012695, + "tick": 10 + }, + { + "renderSeconds": 0.0029450654983520508, + "simulationSeconds": 0.0066509246826171875, + "tick": 11 + }, + { + "renderSeconds": 0.0031549930572509766, + "simulationSeconds": 0.006857037544250488, + "tick": 12 + }, + { + "renderSeconds": 0.0027399063110351562, + "simulationSeconds": 0.019696950912475586, + "tick": 15 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 0.006945013999938965, + "tick": 16 + }, + { + "renderSeconds": 0.0031180381774902344, + "simulationSeconds": 0.006878972053527832, + "tick": 17 + }, + { + "renderSeconds": 0.0032100677490234375, + "simulationSeconds": 0.007996916770935059, + "tick": 18 + }, + { + "renderSeconds": 0.0037480592727661133, + "simulationSeconds": 0.007933974266052246, + "tick": 19 + }, + { + "renderSeconds": 0.002569913864135742, + "simulationSeconds": 0.019780993461608887, + "tick": 22 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.013633966445922852, + "tick": 24 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0, + "tick": 24 + }, + { + "renderSeconds": 0.0027289390563964844, + "simulationSeconds": 0.006916999816894531, + "tick": 25 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.006615996360778809, + "tick": 26 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0.0063250064849853516, + "tick": 27 + }, + { + "renderSeconds": 0.0032120943069458008, + "simulationSeconds": 0.015141010284423828, + "tick": 29 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.015016913414001465, + "tick": 31 + }, + { + "renderSeconds": 0.0034650564193725586, + "simulationSeconds": 0.007248997688293457, + "tick": 32 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0.014961004257202148, + "tick": 34 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.01571798324584961, + "tick": 36 + }, + { + "renderSeconds": 0.0029931068420410156, + "simulationSeconds": 0.015295982360839844, + "tick": 38 + }, + { + "renderSeconds": 0.0035129785537719727, + "simulationSeconds": 0.0070160627365112305, + "tick": 39 + }, + { + "renderSeconds": 0.003289937973022461, + "simulationSeconds": 0.007151007652282715, + "tick": 40 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.014302968978881836, + "tick": 42 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.0134049654006958, + "tick": 44 + }, + { + "renderSeconds": 0.0033550262451171875, + "simulationSeconds": 0.007597088813781738, + "tick": 45 + }, + { + "renderSeconds": 0.003352046012878418, + "simulationSeconds": 0.008322000503540039, + "tick": 46 + }, + { + "renderSeconds": 0.0033540725708007812, + "simulationSeconds": 0.007519960403442383, + "tick": 47 + }, + { + "renderSeconds": 0.0035439729690551758, + "simulationSeconds": 0.007381916046142578, + "tick": 48 + }, + { + "renderSeconds": 0.0032259225845336914, + "simulationSeconds": 0.022095084190368652, + "tick": 51 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.015490889549255371, + "tick": 53 + }, + { + "renderSeconds": 0.003368973731994629, + "simulationSeconds": 0, + "tick": 53 + }, + { + "renderSeconds": 0.0037069320678710938, + "simulationSeconds": 0.008329033851623535, + "tick": 54 + }, + { + "renderSeconds": 0.0032329559326171875, + "simulationSeconds": 0.007802009582519531, + "tick": 55 + }, + { + "renderSeconds": 0.004426002502441406, + "simulationSeconds": 0.009148955345153809, + "tick": 56 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.021488070487976074, + "tick": 59 + }, + { + "renderSeconds": 0.00315093994140625, + "simulationSeconds": 0.015349030494689941, + "tick": 61 + }, + { + "renderSeconds": 0.0033000707626342773, + "simulationSeconds": 0.007831931114196777, + "tick": 62 + }, + { + "renderSeconds": 0.003122091293334961, + "simulationSeconds": 0.00707089900970459, + "tick": 63 + }, + { + "renderSeconds": 0.003824949264526367, + "simulationSeconds": 0.02176499366760254, + "tick": 66 + }, + { + "renderSeconds": 0.003677964210510254, + "simulationSeconds": 0.01621997356414795, + "tick": 68 + }, + { + "renderSeconds": 0.0033510923385620117, + "simulationSeconds": 0.015532970428466797, + "tick": 70 + }, + { + "renderSeconds": 0.004594922065734863, + "simulationSeconds": 0.008580923080444336, + "tick": 71 + }, + { + "renderSeconds": 0.0030939579010009766, + "simulationSeconds": 0.02578604221343994, + "tick": 74 + }, + { + "renderSeconds": 0.0031740665435791016, + "simulationSeconds": 0.023638010025024414, + "tick": 77 + }, + { + "renderSeconds": 0.003544926643371582, + "simulationSeconds": 0.0222090482711792, + "tick": 80 + }, + { + "renderSeconds": 0.002958059310913086, + "simulationSeconds": 0.02197897434234619, + "tick": 83 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.02006399631500244, + "tick": 86 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 9.5367431640625e-07, + "tick": 86 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006830930709838867, + "tick": 87 + }, + { + "renderSeconds": 0.003654003143310547, + "simulationSeconds": 0.013553023338317871, + "tick": 89 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.013910055160522461, + "tick": 91 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.013623952865600586, + "tick": 93 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.006631016731262207, + "tick": 94 + }, + { + "renderSeconds": 0.003428936004638672, + "simulationSeconds": 0.015208005905151367, + "tick": 96 + }, + { + "renderSeconds": 0.003471970558166504, + "simulationSeconds": 0.014732003211975098, + "tick": 98 + }, + { + "renderSeconds": 0.0034749507904052734, + "simulationSeconds": 0.007421016693115234, + "tick": 99 + }, + { + "renderSeconds": 0.0035200119018554688, + "simulationSeconds": 0.015304923057556152, + "tick": 101 + }, + { + "renderSeconds": 0.0031529664993286133, + "simulationSeconds": 0.00902700424194336, + "tick": 102 + }, + { + "renderSeconds": 0.003630995750427246, + "simulationSeconds": 0.024096012115478516, + "tick": 105 + }, + { + "renderSeconds": 0.0026590824127197266, + "simulationSeconds": 0.013208985328674316, + "tick": 107 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.01317894458770752, + "tick": 109 + }, + { + "renderSeconds": 0.0032960176467895508, + "simulationSeconds": 0.014235973358154297, + "tick": 111 + }, + { + "renderSeconds": 0.0032639503479003906, + "simulationSeconds": 0.01503598690032959, + "tick": 113 + }, + { + "renderSeconds": 0.0031479597091674805, + "simulationSeconds": 0.01570892333984375, + "tick": 115 + }, + { + "renderSeconds": 0.002938985824584961, + "simulationSeconds": 0.006690025329589844, + "tick": 116 + }, + { + "renderSeconds": 0.0032039880752563477, + "simulationSeconds": 0.006890058517456055, + "tick": 117 + }, + { + "renderSeconds": 0.003471970558166504, + "simulationSeconds": 0.023182034492492676, + "tick": 120 + }, + { + "renderSeconds": 0.003171086311340332, + "simulationSeconds": 0.016803979873657227, + "tick": 122 + }, + { + "renderSeconds": 0.003666996955871582, + "simulationSeconds": 0.006955981254577637, + "tick": 123 + }, + { + "renderSeconds": 0.002485036849975586, + "simulationSeconds": 0.0198209285736084, + "tick": 126 + }, + { + "renderSeconds": 0.003018021583557129, + "simulationSeconds": 0.006683945655822754, + "tick": 127 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0.006592988967895508, + "tick": 128 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 0.007688999176025391, + "tick": 129 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.007211923599243164, + "tick": 130 + }, + { + "renderSeconds": 0.0032999515533447266, + "simulationSeconds": 0.006518006324768066, + "tick": 131 + }, + { + "renderSeconds": 0.00345003604888916, + "simulationSeconds": 0.006688952445983887, + "tick": 132 + }, + { + "renderSeconds": 0.003094911575317383, + "simulationSeconds": 0.013531088829040527, + "tick": 134 + }, + { + "renderSeconds": 0.0036870241165161133, + "simulationSeconds": 0.014074921607971191, + "tick": 136 + }, + { + "renderSeconds": 0.00412595272064209, + "simulationSeconds": 0.007452964782714844, + "tick": 137 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.012603044509887695, + "tick": 139 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.012963056564331055, + "tick": 141 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.013369083404541016, + "tick": 143 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0, + "tick": 143 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.00643002986907959, + "tick": 144 + }, + { + "renderSeconds": 0.0035049915313720703, + "simulationSeconds": 0.007591962814331055, + "tick": 145 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.00647890567779541, + "tick": 146 + }, + { + "renderSeconds": 0.0027419328689575195, + "simulationSeconds": 0.006878972053527832, + "tick": 147 + }, + { + "renderSeconds": 0.002971053123474121, + "simulationSeconds": 0.019011974334716797, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04277004167670384, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 148, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005447745323181152, + "preparationSeconds": 0.6222019195556641, + "reducedMotion": false, + "renderSeconds": 0.30693304538726807, + "repetition": 0, + "scenePreparationSeconds": 0.23515689373016357, + "simulationSeconds": 1.0846493244171143, + "stage": 4, + "callbackMedianMS": 21.067062494694255, + "callbackP95MS": 45.763625006657094, + "callbackMaxMS": 51.265833346406, + "postActionRecords": 97, + "run": "BP008-stage-4-rep-0-axis-8191-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frameCosts": [ + { + "renderSeconds": 0.0009549856185913086, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0012940168380737305, + "simulationSeconds": 1.9073486328125e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0010080337524414062, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001157999038696289, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.005125999450683594, + "simulationSeconds": 0.020566940307617188, + "tick": 2 + }, + { + "renderSeconds": 0.004359006881713867, + "simulationSeconds": 0.0204620361328125, + "tick": 4 + }, + { + "renderSeconds": 0.004316926002502441, + "simulationSeconds": 0.02380502223968506, + "tick": 7 + }, + { + "renderSeconds": 0.0031429529190063477, + "simulationSeconds": 0.02147090435028076, + "tick": 10 + }, + { + "renderSeconds": 0.0028629302978515625, + "simulationSeconds": 0.01923990249633789, + "tick": 13 + }, + { + "renderSeconds": 0.0032510757446289062, + "simulationSeconds": 0.019787073135375977, + "tick": 16 + }, + { + "renderSeconds": 0.0031870603561401367, + "simulationSeconds": 0.015025019645690918, + "tick": 18 + }, + { + "renderSeconds": 0.0032470226287841797, + "simulationSeconds": 0.015334010124206543, + "tick": 20 + }, + { + "renderSeconds": 0.003756999969482422, + "simulationSeconds": 0.01940906047821045, + "tick": 22 + }, + { + "renderSeconds": 0.003551959991455078, + "simulationSeconds": 0.02383601665496826, + "tick": 25 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.02282392978668213, + "tick": 28 + }, + { + "renderSeconds": 0.003222942352294922, + "simulationSeconds": 0.023450016975402832, + "tick": 31 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 0.019443035125732422, + "tick": 34 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.020367980003356934, + "tick": 37 + }, + { + "renderSeconds": 0.0029549598693847656, + "simulationSeconds": 0.012693047523498535, + "tick": 39 + }, + { + "renderSeconds": 0.003329038619995117, + "simulationSeconds": 0.006326079368591309, + "tick": 40 + }, + { + "renderSeconds": 0.002911090850830078, + "simulationSeconds": 0.01344597339630127, + "tick": 42 + }, + { + "renderSeconds": 0.00350797176361084, + "simulationSeconds": 0.008900046348571777, + "tick": 43 + }, + { + "renderSeconds": 0.0030999183654785156, + "simulationSeconds": 0.007071018218994141, + "tick": 44 + }, + { + "renderSeconds": 0.0037949085235595703, + "simulationSeconds": 0.01652705669403076, + "tick": 46 + }, + { + "renderSeconds": 0.0031729936599731445, + "simulationSeconds": 0.015170931816101074, + "tick": 48 + }, + { + "renderSeconds": 0.0033758878707885742, + "simulationSeconds": 0.016328096389770508, + "tick": 50 + }, + { + "renderSeconds": 0.004160046577453613, + "simulationSeconds": 0.015229940414428711, + "tick": 52 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0.015430927276611328, + "tick": 54 + }, + { + "renderSeconds": 0.002608060836791992, + "simulationSeconds": 0.01372992992401123, + "tick": 56 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.01361095905303955, + "tick": 58 + }, + { + "renderSeconds": 0.0033020973205566406, + "simulationSeconds": 0.015496015548706055, + "tick": 60 + }, + { + "renderSeconds": 0.003222942352294922, + "simulationSeconds": 0.01512002944946289, + "tick": 62 + }, + { + "renderSeconds": 0.002986907958984375, + "simulationSeconds": 0.014165997505187988, + "tick": 64 + }, + { + "renderSeconds": 0.0029450654983520508, + "simulationSeconds": 0.013892054557800293, + "tick": 66 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.00807201862335205, + "tick": 67 + }, + { + "renderSeconds": 0.00427699089050293, + "simulationSeconds": 0.012515068054199219, + "tick": 69 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.0143510103225708, + "tick": 71 + }, + { + "renderSeconds": 0.003404974937438965, + "simulationSeconds": 0.015424966812133789, + "tick": 73 + }, + { + "renderSeconds": 0.003119945526123047, + "simulationSeconds": 0.015332937240600586, + "tick": 75 + }, + { + "renderSeconds": 0.003206014633178711, + "simulationSeconds": 0.01465904712677002, + "tick": 77 + }, + { + "renderSeconds": 0.003260016441345215, + "simulationSeconds": 0.01591503620147705, + "tick": 79 + }, + { + "renderSeconds": 0.0027370452880859375, + "simulationSeconds": 0.014593005180358887, + "tick": 81 + }, + { + "renderSeconds": 0.0036870241165161133, + "simulationSeconds": 0.008068084716796875, + "tick": 82 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.02130603790283203, + "tick": 85 + }, + { + "renderSeconds": 0.0031859874725341797, + "simulationSeconds": 0.01474297046661377, + "tick": 87 + }, + { + "renderSeconds": 0.003376007080078125, + "simulationSeconds": 0.01491999626159668, + "tick": 89 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.008297085762023926, + "tick": 90 + }, + { + "renderSeconds": 0.003567934036254883, + "simulationSeconds": 0.017648935317993164, + "tick": 92 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.012939929962158203, + "tick": 94 + }, + { + "renderSeconds": 0.003017902374267578, + "simulationSeconds": 0.014549016952514648, + "tick": 96 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.014310956001281738, + "tick": 98 + }, + { + "renderSeconds": 0.0030670166015625, + "simulationSeconds": 0.014503002166748047, + "tick": 100 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.013541936874389648, + "tick": 102 + }, + { + "renderSeconds": 0.0031690597534179688, + "simulationSeconds": 0.013247966766357422, + "tick": 104 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.013280034065246582, + "tick": 106 + }, + { + "renderSeconds": 0.00406491756439209, + "simulationSeconds": 0.015452027320861816, + "tick": 108 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0.014793038368225098, + "tick": 110 + }, + { + "renderSeconds": 0.004121899604797363, + "simulationSeconds": 0.013848066329956055, + "tick": 112 + }, + { + "renderSeconds": 0.00283205509185791, + "simulationSeconds": 0.013342022895812988, + "tick": 114 + }, + { + "renderSeconds": 0.0033919811248779297, + "simulationSeconds": 0.017637014389038086, + "tick": 116 + }, + { + "renderSeconds": 0.0030510425567626953, + "simulationSeconds": 0.01599299907684326, + "tick": 118 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.013357043266296387, + "tick": 120 + }, + { + "renderSeconds": 0.0031429529190063477, + "simulationSeconds": 0.013533949851989746, + "tick": 122 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.0165560245513916, + "tick": 124 + }, + { + "renderSeconds": 0.0032590627670288086, + "simulationSeconds": 0.01562798023223877, + "tick": 126 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.01312410831451416, + "tick": 128 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.013545989990234375, + "tick": 130 + }, + { + "renderSeconds": 0.002624034881591797, + "simulationSeconds": 0.013705968856811523, + "tick": 132 + }, + { + "renderSeconds": 0.0029529333114624023, + "simulationSeconds": 0.00813603401184082, + "tick": 133 + }, + { + "renderSeconds": 0.0030339956283569336, + "simulationSeconds": 0.00622105598449707, + "tick": 134 + }, + { + "renderSeconds": 0.0028901100158691406, + "simulationSeconds": 0.006311893463134766, + "tick": 135 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.014440059661865234, + "tick": 137 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.0062340497970581055, + "tick": 138 + }, + { + "renderSeconds": 0.008276939392089844, + "simulationSeconds": 0.007403016090393066, + "tick": 139 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.013963937759399414, + "tick": 141 + }, + { + "renderSeconds": 0.004820108413696289, + "simulationSeconds": 0.00660097599029541, + "tick": 142 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.019175052642822266, + "tick": 145 + }, + { + "renderSeconds": 0.003188014030456543, + "simulationSeconds": 0.014333009719848633, + "tick": 147 + }, + { + "renderSeconds": 0.003954052925109863, + "simulationSeconds": 0.007584929466247559, + "tick": 148 + }, + { + "renderSeconds": 0.002975940704345703, + "simulationSeconds": 0.014487981796264648, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04472754165180959, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 116, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004554867744445801, + "preparationSeconds": 0.7276270389556885, + "reducedMotion": false, + "renderSeconds": 0.25499892234802246, + "repetition": 1, + "scenePreparationSeconds": 0.2773939371109009, + "simulationSeconds": 1.105788230895996, + "stage": 4, + "callbackMedianMS": 34.43816668004729, + "callbackP95MS": 49.866874993313104, + "callbackMaxMS": 53.05887499707751, + "postActionRecords": 78, + "run": "BP008-stage-4-rep-1-axis-32767-reduced-false-metrics" + }, + { + "axis": 32767, + "coveragePassed": true, + "frameCosts": [ + { + "renderSeconds": 0.0010809898376464844, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011589527130126953, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010309219360351562, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0038080215454101562, + "simulationSeconds": 0.007091999053955078, + "tick": 1 + }, + { + "renderSeconds": 0.0040580034255981445, + "simulationSeconds": 0.01072394847869873, + "tick": 2 + }, + { + "renderSeconds": 0.003495931625366211, + "simulationSeconds": 0.017264962196350098, + "tick": 4 + }, + { + "renderSeconds": 0.0035909414291381836, + "simulationSeconds": 0.015444040298461914, + "tick": 6 + }, + { + "renderSeconds": 0.0031610727310180664, + "simulationSeconds": 0.00748896598815918, + "tick": 7 + }, + { + "renderSeconds": 0.0032759904861450195, + "simulationSeconds": 0.014243006706237793, + "tick": 9 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.022960901260375977, + "tick": 12 + }, + { + "renderSeconds": 0.0027658939361572266, + "simulationSeconds": 0.013457059860229492, + "tick": 14 + }, + { + "renderSeconds": 0.00279390811920166, + "simulationSeconds": 0.012611031532287598, + "tick": 16 + }, + { + "renderSeconds": 0.0032160282135009766, + "simulationSeconds": 0.014555096626281738, + "tick": 18 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.01368403434753418, + "tick": 20 + }, + { + "renderSeconds": 0.002608060836791992, + "simulationSeconds": 0.013836979866027832, + "tick": 22 + }, + { + "renderSeconds": 0.0036569833755493164, + "simulationSeconds": 0.01354992389678955, + "tick": 24 + }, + { + "renderSeconds": 0.0033189058303833008, + "simulationSeconds": 0.015632033348083496, + "tick": 26 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.024772047996520996, + "tick": 29 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 0.013080000877380371, + "tick": 31 + }, + { + "renderSeconds": 0.004314899444580078, + "simulationSeconds": 0.015455007553100586, + "tick": 33 + }, + { + "renderSeconds": 0.00309598445892334, + "simulationSeconds": 0.017498016357421875, + "tick": 35 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.013656020164489746, + "tick": 37 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.013841986656188965, + "tick": 39 + }, + { + "renderSeconds": 0.002723097801208496, + "simulationSeconds": 0.01352691650390625, + "tick": 41 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 0.013007044792175293, + "tick": 43 + }, + { + "renderSeconds": 0.0030149221420288086, + "simulationSeconds": 0.007319927215576172, + "tick": 44 + }, + { + "renderSeconds": 0.003260016441345215, + "simulationSeconds": 0.00621795654296875, + "tick": 45 + }, + { + "renderSeconds": 0.003229975700378418, + "simulationSeconds": 0.01294100284576416, + "tick": 47 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.007122039794921875, + "tick": 48 + }, + { + "renderSeconds": 0.003285050392150879, + "simulationSeconds": 0.00639498233795166, + "tick": 49 + }, + { + "renderSeconds": 0.003143906593322754, + "simulationSeconds": 0.006806015968322754, + "tick": 50 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.012627005577087402, + "tick": 52 + }, + { + "renderSeconds": 0.0032869577407836914, + "simulationSeconds": 0.006793975830078125, + "tick": 53 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.00698089599609375, + "tick": 54 + }, + { + "renderSeconds": 0.0041599273681640625, + "simulationSeconds": 0.007573962211608887, + "tick": 55 + }, + { + "renderSeconds": 0.003187894821166992, + "simulationSeconds": 0.013298988342285156, + "tick": 57 + }, + { + "renderSeconds": 0.0030510425567626953, + "simulationSeconds": 0.0075070858001708984, + "tick": 58 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.0062988996505737305, + "tick": 59 + }, + { + "renderSeconds": 0.004228949546813965, + "simulationSeconds": 0.00781404972076416, + "tick": 60 + }, + { + "renderSeconds": 0.003117084503173828, + "simulationSeconds": 0.013159990310668945, + "tick": 62 + }, + { + "renderSeconds": 0.003192901611328125, + "simulationSeconds": 0.013162970542907715, + "tick": 64 + }, + { + "renderSeconds": 0.002980947494506836, + "simulationSeconds": 0.013412952423095703, + "tick": 66 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.013214945793151855, + "tick": 68 + }, + { + "renderSeconds": 0.0029010772705078125, + "simulationSeconds": 0.013641953468322754, + "tick": 70 + }, + { + "renderSeconds": 0.003364086151123047, + "simulationSeconds": 0.01435399055480957, + "tick": 72 + }, + { + "renderSeconds": 0.003159046173095703, + "simulationSeconds": 0.008337020874023438, + "tick": 73 + }, + { + "renderSeconds": 0.0034149885177612305, + "simulationSeconds": 0.013864994049072266, + "tick": 75 + }, + { + "renderSeconds": 0.0033570528030395508, + "simulationSeconds": 0.012928962707519531, + "tick": 77 + }, + { + "renderSeconds": 0.00333404541015625, + "simulationSeconds": 0.015774965286254883, + "tick": 79 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.014232993125915527, + "tick": 81 + }, + { + "renderSeconds": 0.0026859045028686523, + "simulationSeconds": 0.013154983520507812, + "tick": 83 + }, + { + "renderSeconds": 0.0028400421142578125, + "simulationSeconds": 0.013467907905578613, + "tick": 85 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0.013028979301452637, + "tick": 87 + }, + { + "renderSeconds": 0.003430962562561035, + "simulationSeconds": 0.009068012237548828, + "tick": 88 + }, + { + "renderSeconds": 0.0031930208206176758, + "simulationSeconds": 0.015168070793151855, + "tick": 90 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.022711992263793945, + "tick": 93 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.014954924583435059, + "tick": 95 + }, + { + "renderSeconds": 0.003164052963256836, + "simulationSeconds": 0.02154099941253662, + "tick": 98 + }, + { + "renderSeconds": 0.0028429031372070312, + "simulationSeconds": 0.013100981712341309, + "tick": 100 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.017457962036132812, + "tick": 102 + }, + { + "renderSeconds": 0.003086090087890625, + "simulationSeconds": 0.022810935974121094, + "tick": 105 + }, + { + "renderSeconds": 0.004320979118347168, + "simulationSeconds": 0.01611495018005371, + "tick": 107 + }, + { + "renderSeconds": 0.0035200119018554688, + "simulationSeconds": 0.017603039741516113, + "tick": 109 + }, + { + "renderSeconds": 0.003934025764465332, + "simulationSeconds": 0.007467985153198242, + "tick": 110 + }, + { + "renderSeconds": 0.0032709836959838867, + "simulationSeconds": 0.015034079551696777, + "tick": 112 + }, + { + "renderSeconds": 0.003346085548400879, + "simulationSeconds": 0.02229893207550049, + "tick": 115 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.012484073638916016, + "tick": 117 + }, + { + "renderSeconds": 0.0026880502700805664, + "simulationSeconds": 0.014623045921325684, + "tick": 119 + }, + { + "renderSeconds": 0.003604888916015625, + "simulationSeconds": 0.014980077743530273, + "tick": 121 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.01491093635559082, + "tick": 123 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.015560030937194824, + "tick": 125 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.015429973602294922, + "tick": 127 + }, + { + "renderSeconds": 0.00339508056640625, + "simulationSeconds": 0.015330910682678223, + "tick": 129 + }, + { + "renderSeconds": 0.002949953079223633, + "simulationSeconds": 0.015316009521484375, + "tick": 131 + }, + { + "renderSeconds": 0.0032199621200561523, + "simulationSeconds": 0.013108015060424805, + "tick": 133 + }, + { + "renderSeconds": 0.003502964973449707, + "simulationSeconds": 0.015629053115844727, + "tick": 135 + }, + { + "renderSeconds": 0.00391995906829834, + "simulationSeconds": 0.02419900894165039, + "tick": 138 + }, + { + "renderSeconds": 0.0037120580673217773, + "simulationSeconds": 0.017835021018981934, + "tick": 140 + }, + { + "renderSeconds": 0.0036410093307495117, + "simulationSeconds": 0.02890598773956299, + "tick": 143 + }, + { + "renderSeconds": 0.0035610198974609375, + "simulationSeconds": 0.02599799633026123, + "tick": 146 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.021077990531921387, + "tick": 149 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.021793007850646973, + "tick": 152 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04509691667044535, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 130, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004402637481689453, + "preparationSeconds": 0.691878080368042, + "reducedMotion": false, + "renderSeconds": 0.25717151165008545, + "repetition": 2, + "scenePreparationSeconds": 0.24203097820281982, + "simulationSeconds": 1.121329426765442, + "stage": 4, + "callbackMedianMS": 34.282541659194976, + "callbackP95MS": 44.23608334036544, + "callbackMaxMS": 57.544250012142584, + "postActionRecords": 80, + "run": "BP008-stage-4-rep-2-axis-32767-reduced-false-metrics" + } +] diff --git a/docs/review/player-startup-review/ready-test-summary.json b/docs/review/player-startup-review/ready-test-summary.json new file mode 100644 index 00000000..53666d97 --- /dev/null +++ b/docs/review/player-startup-review/ready-test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 112, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792101781.263, + "passedTests" : 110, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792101510.951, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "28% of duration", + "text" : "1 longest test run with outlier durations exceeding 20.68s (three standard deviations)" + } + ], + "totalTestCount" : 110 +} diff --git a/docs/review/player-step2-validation/README.md b/docs/review/player-step2-validation/README.md new file mode 100644 index 00000000..0ea1a66f --- /dev/null +++ b/docs/review/player-step2-validation/README.md @@ -0,0 +1,48 @@ +# Step 2 — real-renderer animation validation + +2026-10-15 · **FAILED / shared-scene gate remains open** + +The approved knee-pad-detail source is now installed in the test-only candidate bundle. All 16 PNGs are byte-identical to `SS-player-kneepad-detail/frames`; stance, arm swing, source poses, canvas, anchor, draw size and authored half-second timing are preserved. Production art and gameplay remain unchanged. + +## What ran + +WorldRenderer + SpriteLibrary + GameSession in a presented SpriteKit scene on iPhone 17 Pro simulator, iOS 26.5. Viewport 704×326; source 384×416; draw 64×69⅓; anchor (0.5, 1−336/416); ground Y projection 0.5 with upright-art compensation. Seed 1; test initial position (224,704); south input for 120 fixed ticks, then idle through tick 150. Quarter/half/full input and full-input Reduced Motion were captured independently. The simulation preflight verifies movement on every tick through the existing arena, without changing solids or speed. + +The measured interval no longer extracts screenshots. Each record comes from `didEvaluateActions`, identifies the actual selected texture, and includes simulation tick, authoritative/projected position, camera position, view scale, dimensions and anchor. The final run includes the game’s post-action outline synchronization. This is renderer telemetry, **not continuous video or a device-performance measurement**. + +## Final results + +| Run | Displayed distinct frames | Observed frame-index wraps | Largest display interval | +|---|---:|---:|---:| +| Full input | 6 / 16 | 3 | 320 ms | +| Half input | 7 / 16 | 3 | 300 ms | +| Quarter input | 8 / 16 | 4 | 941 ms | +| Full input, Reduced Motion | 6 / 16 | 3 | 300 ms | + +All four candidate tests fail the unchanged requirement to actually display all 16 frames. Travel, geometry, south-facing selection, repeated frame-index wraps and final idle assertions pass. No recorded moving tick lost the candidate. Wraps do not establish smooth seams or complete cycles: omitted intermediate frames remain a failure. + +- Core: `swift test --disable-sandbox`, exit 0; **773 tests / 109 suites passed**, 589.811 seconds. +- Simulator final result: **106 passed executions, 4 failed executions** (104 passed named tests, 4 failed named tests; one test has three parameter cases). +- `git diff --check`: passed. All 16 test candidate PNGs match the reviewed source byte-for-byte. +- Result bundle: `Test-SSRuntime-2026.10.15_13-36-19--0700.xcresult`; writable retained copy in `work/player-step2-final.xcresult`. + +The first attempt had a missing `dodgePressed: false` test-constructor argument, corrected before execution. The first executed run is retained in `first-run/`: 9–11 frames observed. Its Reduced Motion expectation incorrectly demanded one static frame. D-069 permits self-referencing locomotion clips, so the final test requires all 16 frames and repeated playback for this mode too. No gameplay behavior was changed to satisfy the test. + +## Contact / seam evidence + +`analysis.json` combines source toe annotations with observed texture identities and actual projected positions. Most support groups contain only one observation; their displacement is **null**, not zero. The few multi-sample groups do not establish complete planted phases. Foot slip and the 16→1 seam are therefore **not validated**. Displacements are reported in projected scene units, ground-equivalent units (inverse 0.5 Y projection, fixed contact height assumed) and equivalent output pixels. This is annotation-based analysis, not pixel tracking. No acceptance tolerance is invented. + +## Findings and next work under runtime #132 + +1. **Instrument cold and warm renderer paths separately.** `OutlineTextures.outline` calls `texture.cgImage()` on a cache miss; `WorldRenderer.renderActors` synchronizes outlines, and the game also synchronizes after SpriteKit actions. Removing screenshot readback did not remove this renderer readback. It is a concrete candidate cause, not yet a measured attribution. Measure simulation, render, outline miss/hit and post-action cost before choosing a fix. Include fixture registration/size changes in that investigation. +2. **Eliminate the measured stall source while preserving actual frame coverage.** Do not slow the clip, skip outlines, relax the assertion or alter controller speed to manufacture a pass. Any preload/caching solution must retain contrast correctness and bounded memory. Recheck cold startup as well as warmed playback. +3. **Repeat these captures, then obtain separate uninterrupted normal-speed video and slow review.** Require all 16 observed frames and supported repeated contact phases before accepting seam/contact quality. +4. **Finish the remaining interaction matrix:** start/stop, collision stop, wall slide, reverse, dodge, pause/resume. Other cardinal/diagonal visual acceptance requires the corresponding authored sources; the south candidate cannot certify them. +5. Only then proceed to the shared player/camera/building/props scene. No device testing, production admission, new cadence policy, hidden-surface approval or benchmark closure is implied. + +## Files + +- `axis-*.json`: final post-action records. +- `test-summary.json`: authoritative final Xcode result summary. +- `analysis.json`, `analyze.py`, `poses.json`: reproducible contact analysis. +- `first-run/`: preserved initial execution results. diff --git a/docs/review/player-step2-validation/analysis.json b/docs/review/player-step2-validation/analysis.json new file mode 100644 index 00000000..19072446 --- /dev/null +++ b/docs/review/player-step2-validation/analysis.json @@ -0,0 +1,510 @@ +{ + "scope": "Actual post-action texture identities plus source toe annotations. Not pixel tracking or video. Displacement measured in projected scene units, ground-equivalent units (inverse 0.5 Y projection; fixed toe height assumed), and camera-relative-scale output pixels with camera translation excluded. No pass threshold adopted. Partial support observations are not complete phases. Reduced Motion permits the same locomotion clip under D-069.", + "runs": [ + { + "file": "axis-16383-reduced-false.json", + "records": 24, + "ticks": [ + 0, + 150 + ], + "inputAxis": 16383, + "reducedMotion": false, + "frames": [ + 0, + 4, + 6, + 8, + 13, + 14, + 15 + ], + "wraps": 3, + "displayIntervalSeconds": { + "median": 0.03818633331684396, + "max": 0.29962949999026023 + }, + "candidateMissingRecords": 16, + "missingDuringMoveTicks": [], + "supportGroups": [ + { + "side": "left", + "samples": [ + { + "tick": 29, + "frame": 8, + "time": 214145.5132410417, + "x": 228.0, + "y": 315.5, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "left", + "samples": [ + { + "tick": 56, + "frame": 8, + "time": 214145.99709458338, + "x": 228.0, + "y": 288.5, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 14, + "frame": 0, + "time": 214145.23231895838, + "x": 220.0, + "y": 330.5, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + } + ] + }, + { + "file": "axis-32767-reduced-false.json", + "records": 27, + "ticks": [ + 0, + 150 + ], + "inputAxis": 32767, + "reducedMotion": false, + "frames": [ + 0, + 1, + 3, + 8, + 10, + 12 + ], + "wraps": 3, + "displayIntervalSeconds": { + "median": 0.040277229170897044, + "max": 0.32015258332830854 + }, + "candidateMissingRecords": 17, + "missingDuringMoveTicks": [], + "supportGroups": [ + { + "side": "left", + "samples": [ + { + "tick": 29, + "frame": 10, + "time": 214156.1243244167, + "x": 228.0, + "y": 294.0, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "left", + "samples": [ + { + "tick": 57, + "frame": 10, + "time": 214156.62925241672, + "x": 228.0, + "y": 238.0, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "left", + "samples": [ + { + "tick": 84, + "frame": 8, + "time": 214157.08062337505, + "x": 228.0, + "y": 176.5, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "left", + "samples": [ + { + "tick": 113, + "frame": 8, + "time": 214157.57762112503, + "x": 228.0, + "y": 118.5, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 14, + "frame": 0, + "time": 214155.80417183338, + "x": 220.0, + "y": 316.5, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 42, + "frame": 1, + "time": 214156.33952425004, + "x": 220.0, + "y": 264.25, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 69, + "frame": 0, + "time": 214156.8339125417, + "x": 220.0, + "y": 206.5, + "scale": 3 + }, + { + "tick": 75, + "frame": 3, + "time": 214156.9232979584, + "x": 220.0, + "y": 205.75, + "scale": 3 + } + ], + "observedSupportSamples": 2, + "distinctSupportFrames": 2, + "maxProjectedDisplacement": 0.75, + "maxGroundEquivalentDisplacement": 1.5, + "maxOutputPixelDisplacement": 2.25 + }, + { + "side": "right", + "samples": [ + { + "tick": 99, + "frame": 1, + "time": 214157.35205450005, + "x": 220.0, + "y": 150.25, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + } + ] + }, + { + "file": "axis-32767-reduced-true.json", + "records": 23, + "ticks": [ + 0, + 150 + ], + "inputAxis": 32767, + "reducedMotion": true, + "frames": [ + 0, + 1, + 5, + 6, + 9, + 13 + ], + "wraps": 3, + "displayIntervalSeconds": { + "median": 0.08047752083803061, + "max": 0.2998994583322201 + }, + "candidateMissingRecords": 13, + "missingDuringMoveTicks": [], + "supportGroups": [ + { + "side": "left", + "samples": [ + { + "tick": 28, + "frame": 9, + "time": 214152.74113245838, + "x": 228.0, + "y": 292.25, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 13, + "frame": 0, + "time": 214152.44123300005, + "x": 220.0, + "y": 318.5, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 41, + "frame": 0, + "time": 214152.95872733337, + "x": 220.0, + "y": 262.5, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 98, + "frame": 0, + "time": 214153.94813283338, + "x": 220.0, + "y": 148.5, + "scale": 3 + }, + { + "tick": 101, + "frame": 1, + "time": 214153.9931280417, + "x": 220.0, + "y": 146.25, + "scale": 3 + } + ], + "observedSupportSamples": 2, + "distinctSupportFrames": 2, + "maxProjectedDisplacement": 2.25, + "maxGroundEquivalentDisplacement": 4.5, + "maxOutputPixelDisplacement": 6.75 + } + ] + }, + { + "file": "axis-8191-reduced-false.json", + "records": 16, + "ticks": [ + 0, + 150 + ], + "inputAxis": 8191, + "reducedMotion": false, + "frames": [ + 0, + 1, + 3, + 5, + 9, + 10, + 11, + 15 + ], + "wraps": 4, + "displayIntervalSeconds": { + "median": 0.3048207083484158, + "max": 0.9411128333304077 + }, + "candidateMissingRecords": 8, + "missingDuringMoveTicks": [], + "supportGroups": [ + { + "side": "left", + "samples": [ + { + "tick": 30, + "frame": 10, + "time": 214149.08524825005, + "x": 228.0, + "y": 337.0, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "left", + "samples": [ + { + "tick": 58, + "frame": 11, + "time": 214149.60862066672, + "x": 228.0, + "y": 326.75, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "left", + "samples": [ + { + "tick": 103, + "frame": 9, + "time": 214150.56637937506, + "x": 228.0, + "y": 296.75, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 15, + "frame": 0, + "time": 214148.7623691667, + "x": 220.0, + "y": 337.0, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 43, + "frame": 1, + "time": 214149.30379995838, + "x": 220.0, + "y": 326.75, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + }, + { + "side": "right", + "samples": [ + { + "tick": 118, + "frame": 3, + "time": 214150.88594800004, + "x": 220.0, + "y": 296.75, + "scale": 3 + } + ], + "observedSupportSamples": 1, + "distinctSupportFrames": 1, + "maxProjectedDisplacement": null, + "maxGroundEquivalentDisplacement": null, + "maxOutputPixelDisplacement": null + } + ] + } + ] +} diff --git a/docs/review/player-step2-validation/test-summary.json b/docs/review/player-step2-validation/test-summary.json new file mode 100644 index 00000000..567c00f2 --- /dev/null +++ b/docs/review/player-step2-validation/test-summary.json @@ -0,0 +1,85 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 4, + "passedTests" : 106, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 4, + "finishTime" : 1792096822.454, + "passedTests" : 104, + "result" : "Failed", + "skippedTests" : 0, + "startTime" : 1792096579.204, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + { + "failureText" : "XCTAssertEqual failed: (\"7\") is not equal to (\"16\") - Normal playback must actually display every source texture", + "targetName" : "SSRuntimeTests", + "testIdentifier" : 11, + "testIdentifierString" : "DisplayedPlaybackTests/testRevisedPlayerHalfInputCycle()", + "testIdentifierURL" : "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testRevisedPlayerHalfInputCycle", + "testName" : "testRevisedPlayerHalfInputCycle()" + }, + { + "failureText" : "XCTAssertEqual failed: (\"8\") is not equal to (\"16\") - Normal playback must actually display every source texture", + "targetName" : "SSRuntimeTests", + "testIdentifier" : 12, + "testIdentifierString" : "DisplayedPlaybackTests/testRevisedPlayerQuarterInputCycle()", + "testIdentifierURL" : "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testRevisedPlayerQuarterInputCycle", + "testName" : "testRevisedPlayerQuarterInputCycle()" + }, + { + "failureText" : "XCTAssertEqual failed: (\"6\") is not equal to (\"16\") - Normal playback must actually display every source texture", + "targetName" : "SSRuntimeTests", + "testIdentifier" : 13, + "testIdentifierString" : "DisplayedPlaybackTests/testRevisedPlayerReducedMotionCycle()", + "testIdentifierURL" : "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testRevisedPlayerReducedMotionCycle", + "testName" : "testRevisedPlayerReducedMotionCycle()" + }, + { + "failureText" : "XCTAssertEqual failed: (\"6\") is not equal to (\"16\") - Normal playback must actually display every source texture", + "targetName" : "SSRuntimeTests", + "testIdentifier" : 14, + "testIdentifierString" : "DisplayedPlaybackTests/testRevisedPlayerSourcePlaysWithProjectedSimulationTravel()", + "testIdentifierURL" : "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testRevisedPlayerSourcePlaysWithProjectedSimulationTravel", + "testName" : "testRevisedPlayerSourcePlaysWithProjectedSimulationTravel()" + } + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Common Failures", + "impact" : "50% of failures", + "text" : "2 runs of 2 tests failed with XCTAssertEqual failed: (\"6\") is not equal to (\"16\") - Normal playback must actually display every source texture" + }, + { + "category" : "Longest Test Runs", + "impact" : "31% of duration", + "text" : "1 longest test run with outlier durations exceeding 19.35s (three standard deviations)" + } + ], + "totalTestCount" : 108 +} diff --git a/docs/review/projected-benchmark/comparison.png b/docs/review/projected-benchmark/comparison.png new file mode 100644 index 00000000..f4e13129 Binary files /dev/null and b/docs/review/projected-benchmark/comparison.png differ diff --git a/docs/review/projected-benchmark/review.md b/docs/review/projected-benchmark/review.md new file mode 100644 index 00000000..58a9d7fb --- /dev/null +++ b/docs/review/projected-benchmark/review.md @@ -0,0 +1,19 @@ +# BP-007 real-renderer projection comparison + +Runtime parent 89800ef; spec c773f960ee8f53ac429828767fcd09f4da0d7cb3. CAPTURED / NOT_ACCEPTED. This experiment changes only the benchmark test, not shipping rendering or gameplay. + +GameScene, WorldRenderer, SpriteKit and the existing HUD render the same isolated sample. Ground nodes are rotated 45 degrees then vertically compressed by 0.5 about the fixed center. Five named upright sprites (player, camera, building, newsbox, tree) retain their vertical form and use projected roots. Native output is 2112x978 pixels for 704x326 logical units. Candidate settings are zoom1 and sqrt(2) equal-ground-area zoom. The latter uniformly enlarges upright art as well. This is a still fixture with no enemies, attacks or input conversion; it is not a complete production projection implementation. + +## Visual review + +OBSERVED: diagonal paving better agrees with the oblique building edges than the unprojected paving. The rendered field is transformed with ground geometry. The same five upright images are not flattened into the ground. + +FAILED: the unchanged bottom-center building placement is not registered to the projected collider; the magenta footprint falls across the front apron and nearby ground. Aligning the painted sidewalk edge alone would still not establish wall collision. The newsbox becomes obscured by the building. Equal-area zoom crops the building roof, camera and tree and increases HUD overlap. No framing candidate is accepted. Existing fixed layer ordering is not a validated occlusion solution. + +Next source/renderer work must register the authored wall-contact polygon to projected authoritative corners, with explicit upright root placement. For an oblique square, the near corner is a projected world corner, not automatically the projected midpoint of the old south edge. Ground apron remains separate. Compare layering and camera center only after that contact registration, then run front/rear/corner traversal and legal encounter tests. Never move the collider to fit this still. + +## Validation + +Xcode Test-SSRuntime-2026.10.14_11-26-38--0700.xcresult: Passed, 87 tests, zero failures/skips (89 executions with dynamic cases). iPhone17Pro simulator, iOS26.5. The test checks SpriteKit node conversion against the analytic projection, uniformly scaled player canvas dimensions and unchanged HUD camera scale. These checks prove transformation mechanics, not visual correctness. Initial test assertion incorrectly expected unscaled SKSpriteNode.size after zoom; recorded as SS-runtime issue121, then corrected to exact expected Float-scaled dimensions. Other 84 Swift Testing tests passed on both runs. + +Raw exported capture manifest and images are retained in capture/. No physical-device run or production asset admission occurred. Comparison plate labels are added outside the captures; images are reduced to704x326 using Lanczos for the plate. diff --git a/docs/review/projected-benchmark/test-summary.json b/docs/review/projected-benchmark/test-summary.json new file mode 100644 index 00000000..a296652f --- /dev/null +++ b/docs/review/projected-benchmark/test-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 89, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792002488.167, + "passedTests" : 87, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792002398.441, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "35% of duration", + "text" : "2 longest test runs with outlier durations exceeding 4.77s (three standard deviations)" + } + ], + "totalTestCount" : 87 +} diff --git a/docs/review/projected-camera/BP007-camera-contained-projected-100-reduced-false.png b/docs/review/projected-camera/BP007-camera-contained-projected-100-reduced-false.png new file mode 100644 index 00000000..b4365a80 Binary files /dev/null and b/docs/review/projected-camera/BP007-camera-contained-projected-100-reduced-false.png differ diff --git a/docs/review/projected-camera/BP007-camera-contained-projected-100-reduced-true.png b/docs/review/projected-camera/BP007-camera-contained-projected-100-reduced-true.png new file mode 100644 index 00000000..9545740a Binary files /dev/null and b/docs/review/projected-camera/BP007-camera-contained-projected-100-reduced-true.png differ diff --git a/docs/review/projected-camera/BP007-camera-contained-projected-125-reduced-false.png b/docs/review/projected-camera/BP007-camera-contained-projected-125-reduced-false.png new file mode 100644 index 00000000..bea27d13 Binary files /dev/null and b/docs/review/projected-camera/BP007-camera-contained-projected-125-reduced-false.png differ diff --git a/docs/review/projected-camera/BP007-camera-contained-projected-125-reduced-true.png b/docs/review/projected-camera/BP007-camera-contained-projected-125-reduced-true.png new file mode 100644 index 00000000..02410e6e Binary files /dev/null and b/docs/review/projected-camera/BP007-camera-contained-projected-125-reduced-true.png differ diff --git a/docs/review/projected-camera/BP007-camera-contained-visibility-100-reduced-false.json b/docs/review/projected-camera/BP007-camera-contained-visibility-100-reduced-false.json new file mode 100644 index 00000000..34e35831 --- /dev/null +++ b/docs/review/projected-camera/BP007-camera-contained-visibility-100-reduced-false.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1374.248046875, + 523.92999267578125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 978.26800537109375, + 620.09600830078125, + 64.00006103515625, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1170.6009521484375, + 852.0269775390625, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 966.9539794921875, + 1180.125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1419.501953125, + 1225.3800048828125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1419.501953125, + 1089.614990234375, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1781.541015625, + 1270.634033203125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2075.697998046875, + 1055.6739501953125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 983.92498779296875, + 1204.873046875, + 64.00006103515625, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 860.88800048828125, + 1062.0379638671875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1056.7569580078125, + 1169.8719482421875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1228.583984375, + 1066.988037109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1442.8370361328125, + 1079.362060546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1157.428955078125, + 327.9219970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1161.6300048828125, + 434.87600708007812, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 930.18499755859375, + 393.864013671875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1226.198974609375, + 401.01800537109375, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1206.0400390625, + 536.2559814453125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1209.7139892578125, + 588.62298583984375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 996.208984375, + 570.155029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1260.75, + 670.60601806640625, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1339.4189453125, + 961.89202880859375, + 128, + 48 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1017.8660278320312, + 1112.81103515625, + 63.99993896484375, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 1905.10498046875, + 1025.531982421875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 1817.8260498046875, + 1118.9530029296875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1526.9830322265625, + 1116.5269775390625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2416.0791015625, + 893.60797119140625, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 663.42498779296875, + 208.0469970703125, + 128, + 512 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 558.052978515625, + 537.75299072265625, + 384, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 980.208984375, + 603.6939697265625, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 948.208984375, + 656.7130126953125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1326.248046875, + 800.7130126953125, + 160, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 970.83599853515625, + 903.67401123046875, + 191.99993896484375, + 320.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1037.9830322265625, + 1071.3800048828125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1403.501953125, + 940.3599853515625, + 96, + 224 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1704.2860107421875, + 965.73297119140625, + 128, + 127.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1659.031982421875, + 1124.125, + 128, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 1962.56005859375, + 1070.8699951171875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2143.580078125, + 1161.3800048828125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2279.343994140625, + 811.2230224609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2550.873046875, + 946.98797607421875, + 64, + 256.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "contained", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1056.58154296875 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP007-camera-contained-visibility-100-reduced-true.json b/docs/review/projected-camera/BP007-camera-contained-visibility-100-reduced-true.json new file mode 100644 index 00000000..34e35831 --- /dev/null +++ b/docs/review/projected-camera/BP007-camera-contained-visibility-100-reduced-true.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1374.248046875, + 523.92999267578125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 978.26800537109375, + 620.09600830078125, + 64.00006103515625, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1170.6009521484375, + 852.0269775390625, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 966.9539794921875, + 1180.125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1419.501953125, + 1225.3800048828125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1419.501953125, + 1089.614990234375, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1781.541015625, + 1270.634033203125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2075.697998046875, + 1055.6739501953125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 983.92498779296875, + 1204.873046875, + 64.00006103515625, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 860.88800048828125, + 1062.0379638671875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1056.7569580078125, + 1169.8719482421875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1228.583984375, + 1066.988037109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1442.8370361328125, + 1079.362060546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1157.428955078125, + 327.9219970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1161.6300048828125, + 434.87600708007812, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 930.18499755859375, + 393.864013671875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1226.198974609375, + 401.01800537109375, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1206.0400390625, + 536.2559814453125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1209.7139892578125, + 588.62298583984375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 996.208984375, + 570.155029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1260.75, + 670.60601806640625, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1339.4189453125, + 961.89202880859375, + 128, + 48 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1017.8660278320312, + 1112.81103515625, + 63.99993896484375, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 1905.10498046875, + 1025.531982421875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 1817.8260498046875, + 1118.9530029296875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1526.9830322265625, + 1116.5269775390625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2416.0791015625, + 893.60797119140625, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 663.42498779296875, + 208.0469970703125, + 128, + 512 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 558.052978515625, + 537.75299072265625, + 384, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 980.208984375, + 603.6939697265625, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 948.208984375, + 656.7130126953125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1326.248046875, + 800.7130126953125, + 160, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 970.83599853515625, + 903.67401123046875, + 191.99993896484375, + 320.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1037.9830322265625, + 1071.3800048828125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1403.501953125, + 940.3599853515625, + 96, + 224 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1704.2860107421875, + 965.73297119140625, + 128, + 127.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1659.031982421875, + 1124.125, + 128, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 1962.56005859375, + 1070.8699951171875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2143.580078125, + 1161.3800048828125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2279.343994140625, + 811.2230224609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2550.873046875, + 946.98797607421875, + 64, + 256.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "contained", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1056.58154296875 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP007-camera-contained-visibility-125-reduced-false.json b/docs/review/projected-camera/BP007-camera-contained-visibility-125-reduced-false.json new file mode 100644 index 00000000..33823a92 --- /dev/null +++ b/docs/review/projected-camera/BP007-camera-contained-visibility-125-reduced-false.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1471.7203369140625, + 444.27496337890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 976.745361328125, + 564.48370361328125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1217.16162109375, + 854.3973388671875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 962.6029052734375, + 1264.5186767578125, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1528.2890625, + 1321.0875244140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1528.2890625, + 1151.3824462890625, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1980.836669921875, + 1377.65625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2348.532958984375, + 1108.9561767578125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 983.816650390625, + 1295.4549560546875, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 830.0203857421875, + 1116.9111328125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1074.856689453125, + 1251.702392578125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1289.640380859375, + 1123.0972900390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1557.45654296875, + 1138.5660400390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1200.6966552734375, + 199.26617431640625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1205.947998046875, + 332.9586181640625, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 916.6416015625, + 281.6923828125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1286.6591796875, + 290.63616943359375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1261.4603271484375, + 459.68243408203125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1266.052978515625, + 525.14239501953125, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 999.171630859375, + 502.057373046875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1329.847900390625, + 627.6212158203125, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1428.18408203125, + 991.7286376953125, + 160, + 60 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1026.242919921875, + 1180.37744140625, + 80, + 160 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2135.291748046875, + 1071.2786865234375, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2026.19287109375, + 1188.054931640625, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1662.63916015625, + 1185.0211181640625, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2774.01025390625, + 906.3736572265625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 583.191650390625, + 49.42242431640625, + 160, + 640 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 451.47671508789062, + 461.554931640625, + 479.99996948242188, + 240 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 979.171630859375, + 543.98114013671875, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 939.171630859375, + 610.25494384765625, + 240, + 480.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1411.7203369140625, + 790.2550048828125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 967.455322265625, + 918.9561767578125, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1051.38916015625, + 1128.5875244140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1508.2890625, + 964.8135986328125, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1884.26806640625, + 996.5299072265625, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1827.700439453125, + 1194.5186767578125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2207.111572265625, + 1127.951171875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2433.38525390625, + 1241.0875244140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2603.090576171875, + 803.392333984375, + 80, + 320.0001220703125 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2942.501708984375, + 973.097412109375, + 80, + 319.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "contained", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1152.46533203125 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP007-camera-contained-visibility-125-reduced-true.json b/docs/review/projected-camera/BP007-camera-contained-visibility-125-reduced-true.json new file mode 100644 index 00000000..33823a92 --- /dev/null +++ b/docs/review/projected-camera/BP007-camera-contained-visibility-125-reduced-true.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1471.7203369140625, + 444.27496337890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 976.745361328125, + 564.48370361328125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1217.16162109375, + 854.3973388671875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 962.6029052734375, + 1264.5186767578125, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1528.2890625, + 1321.0875244140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1528.2890625, + 1151.3824462890625, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1980.836669921875, + 1377.65625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2348.532958984375, + 1108.9561767578125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 983.816650390625, + 1295.4549560546875, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 830.0203857421875, + 1116.9111328125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1074.856689453125, + 1251.702392578125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1289.640380859375, + 1123.0972900390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1557.45654296875, + 1138.5660400390625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1200.6966552734375, + 199.26617431640625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1205.947998046875, + 332.9586181640625, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 916.6416015625, + 281.6923828125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1286.6591796875, + 290.63616943359375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1261.4603271484375, + 459.68243408203125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1266.052978515625, + 525.14239501953125, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 999.171630859375, + 502.057373046875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1329.847900390625, + 627.6212158203125, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1428.18408203125, + 991.7286376953125, + 160, + 60 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1026.242919921875, + 1180.37744140625, + 80, + 160 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2135.291748046875, + 1071.2786865234375, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2026.19287109375, + 1188.054931640625, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1662.63916015625, + 1185.0211181640625, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2774.01025390625, + 906.3736572265625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 583.191650390625, + 49.42242431640625, + 160, + 640 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 451.47671508789062, + 461.554931640625, + 479.99996948242188, + 240 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 979.171630859375, + 543.98114013671875, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 939.171630859375, + 610.25494384765625, + 240, + 480.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1411.7203369140625, + 790.2550048828125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 967.455322265625, + 918.9561767578125, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1051.38916015625, + 1128.5875244140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1508.2890625, + 964.8135986328125, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1884.26806640625, + 996.5299072265625, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1827.700439453125, + 1194.5186767578125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2207.111572265625, + 1127.951171875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2433.38525390625, + 1241.0875244140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2603.090576171875, + 803.392333984375, + 80, + 320.0001220703125 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2942.501708984375, + 973.097412109375, + 80, + 319.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "contained", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1152.46533203125 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP007-camera-player-visible-projected-100-reduced-false.png b/docs/review/projected-camera/BP007-camera-player-visible-projected-100-reduced-false.png new file mode 100644 index 00000000..bff82d00 Binary files /dev/null and b/docs/review/projected-camera/BP007-camera-player-visible-projected-100-reduced-false.png differ diff --git a/docs/review/projected-camera/BP007-camera-player-visible-projected-100-reduced-true.png b/docs/review/projected-camera/BP007-camera-player-visible-projected-100-reduced-true.png new file mode 100644 index 00000000..a6a78d37 Binary files /dev/null and b/docs/review/projected-camera/BP007-camera-player-visible-projected-100-reduced-true.png differ diff --git a/docs/review/projected-camera/BP007-camera-player-visible-projected-125-reduced-false.png b/docs/review/projected-camera/BP007-camera-player-visible-projected-125-reduced-false.png new file mode 100644 index 00000000..02677818 Binary files /dev/null and b/docs/review/projected-camera/BP007-camera-player-visible-projected-125-reduced-false.png differ diff --git a/docs/review/projected-camera/BP007-camera-player-visible-projected-125-reduced-true.png b/docs/review/projected-camera/BP007-camera-player-visible-projected-125-reduced-true.png new file mode 100644 index 00000000..358bd3b6 Binary files /dev/null and b/docs/review/projected-camera/BP007-camera-player-visible-projected-125-reduced-true.png differ diff --git a/docs/review/projected-camera/BP007-camera-player-visible-visibility-100-reduced-false.json b/docs/review/projected-camera/BP007-camera-player-visible-visibility-100-reduced-false.json new file mode 100644 index 00000000..0ac31a31 --- /dev/null +++ b/docs/review/projected-camera/BP007-camera-player-visible-visibility-100-reduced-false.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1443.95703125, + 544.34698486328125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1047.97705078125, + 640.51397705078125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1240.31005859375, + 872.4439697265625, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1036.6629638671875, + 1200.5419921875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1489.2120361328125, + 1245.7969970703125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1489.2120361328125, + 1110.031982421875, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1851.25, + 1291.052001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2145.406982421875, + 1076.0909423828125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1053.634033203125, + 1225.291015625, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 930.59698486328125, + 1082.4549560546875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1126.4659423828125, + 1190.2889404296875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1298.29296875, + 1087.405029296875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1512.5460205078125, + 1099.779052734375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1227.137939453125, + 348.33999633789062, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1231.3399658203125, + 455.29299926757812, + 48, + 63.999969482421875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 999.89398193359375, + 414.281005859375, + 64.00006103515625, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1295.907958984375, + 421.43499755859375, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1275.7490234375, + 556.6729736328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1279.4229736328125, + 609.03997802734375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1065.91796875, + 590.572021484375, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1330.458984375, + 691.02301025390625, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1409.1280517578125, + 982.30999755859375, + 128, + 48.00006103515625 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1087.574951171875, + 1133.22802734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 1974.81396484375, + 1045.948974609375, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 1887.5350341796875, + 1139.3699951171875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1596.6920166015625, + 1136.9439697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2485.7880859375, + 914.0250244140625, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 733.13397216796875, + 228.46499633789062, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 627.76202392578125, + 558.16998291015625, + 384, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1049.91796875, + 624.11102294921875, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1017.9180297851562, + 677.1309814453125, + 191.99993896484375, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1395.95703125, + 821.1309814453125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1040.5460205078125, + 924.09100341796875, + 192, + 320.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1107.6920166015625, + 1091.7969970703125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1473.2120361328125, + 960.77801513671875, + 96, + 224.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1773.9959716796875, + 986.1500244140625, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1728.740966796875, + 1144.5419921875, + 128, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2032.27001953125, + 1091.2869873046875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2213.2890625, + 1181.7969970703125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2349.053955078125, + 831.6400146484375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2620.58203125, + 967.405029296875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "player-visible", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1393.0675048828125, + 1126.290771484375 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP007-camera-player-visible-visibility-100-reduced-true.json b/docs/review/projected-camera/BP007-camera-player-visible-visibility-100-reduced-true.json new file mode 100644 index 00000000..0ac31a31 --- /dev/null +++ b/docs/review/projected-camera/BP007-camera-player-visible-visibility-100-reduced-true.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1443.95703125, + 544.34698486328125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1047.97705078125, + 640.51397705078125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1240.31005859375, + 872.4439697265625, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1036.6629638671875, + 1200.5419921875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1489.2120361328125, + 1245.7969970703125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1489.2120361328125, + 1110.031982421875, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 1851.25, + 1291.052001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2145.406982421875, + 1076.0909423828125, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1053.634033203125, + 1225.291015625, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 930.59698486328125, + 1082.4549560546875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1126.4659423828125, + 1190.2889404296875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1298.29296875, + 1087.405029296875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1512.5460205078125, + 1099.779052734375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1227.137939453125, + 348.33999633789062, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1231.3399658203125, + 455.29299926757812, + 48, + 63.999969482421875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 999.89398193359375, + 414.281005859375, + 64.00006103515625, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1295.907958984375, + 421.43499755859375, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1275.7490234375, + 556.6729736328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1279.4229736328125, + 609.03997802734375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1065.91796875, + 590.572021484375, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1330.458984375, + 691.02301025390625, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1409.1280517578125, + 982.30999755859375, + 128, + 48.00006103515625 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1087.574951171875, + 1133.22802734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 1974.81396484375, + 1045.948974609375, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 1887.5350341796875, + 1139.3699951171875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1596.6920166015625, + 1136.9439697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2485.7880859375, + 914.0250244140625, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 733.13397216796875, + 228.46499633789062, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 627.76202392578125, + 558.16998291015625, + 384, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1049.91796875, + 624.11102294921875, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1017.9180297851562, + 677.1309814453125, + 191.99993896484375, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1395.95703125, + 821.1309814453125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1040.5460205078125, + 924.09100341796875, + 192, + 320.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1107.6920166015625, + 1091.7969970703125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1473.2120361328125, + 960.77801513671875, + 96, + 224.00006103515625 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1773.9959716796875, + 986.1500244140625, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1728.740966796875, + 1144.5419921875, + 128, + 128 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2032.27001953125, + 1091.2869873046875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2213.2890625, + 1181.7969970703125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2349.053955078125, + 831.6400146484375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2620.58203125, + 967.405029296875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "player-visible", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1393.0675048828125, + 1126.290771484375 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP007-camera-player-visible-visibility-125-reduced-false.json b/docs/review/projected-camera/BP007-camera-player-visible-visibility-125-reduced-false.json new file mode 100644 index 00000000..4b0a801d --- /dev/null +++ b/docs/review/projected-camera/BP007-camera-player-visible-visibility-125-reduced-false.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1539.5902099609375, + 452.15597534179688, + 80, + 120.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1044.616455078125, + 572.36474609375, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1285.03271484375, + 862.278564453125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1030.4739990234375, + 1272.39990234375, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1596.158935546875, + 1328.968505859375, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1596.158935546875, + 1159.2635498046875, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2048.7080078125, + 1385.5372314453125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2416.40283203125, + 1116.8360595703125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1051.6876220703125, + 1303.3359375, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 897.8914794921875, + 1124.791015625, + 80.0001220703125, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1142.7276611328125, + 1259.58349609375, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1357.51025390625, + 1130.978515625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1625.3277587890625, + 1146.447265625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1268.5677490234375, + 207.14724731445312, + 120, + 160.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1273.8189697265625, + 340.83847045898438, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 984.511474609375, + 289.57351684570312, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1354.5302734375, + 298.51724243164062, + 40, + 199.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1329.3302001953125, + 467.56344604492188, + 200, + 120.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1333.9227294921875, + 533.0235595703125, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1067.042724609375, + 509.93850708007812, + 120, + 59.999969482421875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1397.718994140625, + 635.5009765625, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1496.05517578125, + 999.6097412109375, + 160, + 60 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1094.114013671875, + 1188.2584228515625, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2203.16162109375, + 1079.1585693359375, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2094.0625, + 1195.93603515625, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1730.5103759765625, + 1192.90234375, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2841.88037109375, + 914.25341796875, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 651.062744140625, + 57.303497314453125, + 160, + 640.00009155273438 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 519.3465576171875, + 469.43600463867188, + 480, + 240.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1047.042724609375, + 551.8623046875, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1007.042724609375, + 618.135986328125, + 240, + 480 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1479.5902099609375, + 798.135986328125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1035.326416015625, + 926.8360595703125, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1119.2603759765625, + 1136.468505859375, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1576.158935546875, + 972.69482421875, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1952.1390380859375, + 1004.40966796875, + 160.0001220703125, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1895.5701904296875, + 1202.39990234375, + 160.0001220703125, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2274.9814453125, + 1135.8310546875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2501.25634765625, + 1248.968505859375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2670.96142578125, + 811.2735595703125, + 80, + 319.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3010.37255859375, + 980.978515625, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "player-visible", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1391.22900390625, + 1220.3360595703125 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP007-camera-player-visible-visibility-125-reduced-true.json b/docs/review/projected-camera/BP007-camera-player-visible-visibility-125-reduced-true.json new file mode 100644 index 00000000..4b0a801d --- /dev/null +++ b/docs/review/projected-camera/BP007-camera-player-visible-visibility-125-reduced-true.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1539.5902099609375, + 452.15597534179688, + 80, + 120.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1044.616455078125, + 572.36474609375, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1285.03271484375, + 862.278564453125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1030.4739990234375, + 1272.39990234375, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1596.158935546875, + 1328.968505859375, + 80, + 120 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1596.158935546875, + 1159.2635498046875, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2048.7080078125, + 1385.5372314453125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2416.40283203125, + 1116.8360595703125, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1051.6876220703125, + 1303.3359375, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 897.8914794921875, + 1124.791015625, + 80.0001220703125, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1142.7276611328125, + 1259.58349609375, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1357.51025390625, + 1130.978515625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1625.3277587890625, + 1146.447265625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1268.5677490234375, + 207.14724731445312, + 120, + 160.00006103515625 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1273.8189697265625, + 340.83847045898438, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 984.511474609375, + 289.57351684570312, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1354.5302734375, + 298.51724243164062, + 40, + 199.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1329.3302001953125, + 467.56344604492188, + 200, + 120.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1333.9227294921875, + 533.0235595703125, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1067.042724609375, + 509.93850708007812, + 120, + 59.999969482421875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1397.718994140625, + 635.5009765625, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1496.05517578125, + 999.6097412109375, + 160, + 60 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1094.114013671875, + 1188.2584228515625, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2203.16162109375, + 1079.1585693359375, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2094.0625, + 1195.93603515625, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1730.5103759765625, + 1192.90234375, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2841.88037109375, + 914.25341796875, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 651.062744140625, + 57.303497314453125, + 160, + 640.00009155273438 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 519.3465576171875, + 469.43600463867188, + 480, + 240.00003051757812 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1047.042724609375, + 551.8623046875, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1007.042724609375, + 618.135986328125, + 240, + 480 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1479.5902099609375, + 798.135986328125, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1035.326416015625, + 926.8360595703125, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1119.2603759765625, + 1136.468505859375, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1576.158935546875, + 972.69482421875, + 120, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1952.1390380859375, + 1004.40966796875, + 160.0001220703125, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1895.5701904296875, + 1202.39990234375, + 160.0001220703125, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2274.9814453125, + 1135.8310546875, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2501.25634765625, + 1248.968505859375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2670.96142578125, + 811.2735595703125, + 80, + 319.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3010.37255859375, + 980.978515625, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "player-visible", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1391.22900390625, + 1220.3360595703125 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP010-field-encounter-commands-seed-1.json b/docs/review/projected-camera/BP010-field-encounter-commands-seed-1.json new file mode 100644 index 00000000..747f6c7c --- /dev/null +++ b/docs/review/projected-camera/BP010-field-encounter-commands-seed-1.json @@ -0,0 +1 @@ +{"arenaVersion":"civic-seam-arena-004","rulesetVersion":"ss-rules-008","replaySchemaVersion":"runtime-kernel-001","contentVersion":"civic-seam-content-006","seed":1,"ticks":4248,"digest":"d3802f536474ccaed97abd8a28a2fe24692cc62cf881097f9085ee099e84ddc5","commands":[{"t":1,"x":32767,"y":0,"d":false},{"t":2,"x":32767,"y":0,"d":false},{"t":3,"x":32767,"y":0,"d":false},{"t":4,"x":32767,"y":0,"d":false},{"t":5,"x":32767,"y":0,"d":false},{"t":6,"x":32767,"y":0,"d":false},{"t":7,"x":32767,"y":0,"d":false},{"t":8,"x":32767,"y":0,"d":false},{"t":9,"x":32767,"y":0,"d":false},{"t":10,"x":32767,"y":0,"d":false},{"t":11,"x":32767,"y":0,"d":false},{"y":0,"t":12,"d":false,"x":32767},{"y":0,"t":13,"d":false,"x":32767},{"y":0,"t":14,"d":false,"x":32767},{"y":0,"t":15,"d":false,"x":32767},{"y":0,"t":16,"d":false,"x":32767},{"y":0,"t":17,"d":false,"x":32767},{"y":0,"t":18,"d":false,"x":32767},{"y":0,"t":19,"d":false,"x":32767},{"y":0,"t":20,"d":false,"x":32767},{"y":0,"t":21,"d":false,"x":32767},{"y":0,"t":22,"d":false,"x":32767},{"y":0,"t":23,"d":false,"x":32767},{"y":0,"t":24,"d":false,"x":32767},{"y":0,"t":25,"d":false,"x":32767},{"y":0,"t":26,"d":false,"x":32767},{"y":0,"t":27,"d":false,"x":32767},{"y":0,"t":28,"d":false,"x":32767},{"y":0,"t":29,"d":false,"x":32767},{"y":0,"t":30,"d":false,"x":32767},{"y":0,"t":31,"d":false,"x":32767},{"y":0,"t":32,"d":false,"x":32767},{"y":0,"t":33,"d":false,"x":32767},{"y":0,"t":34,"d":false,"x":32767},{"y":0,"t":35,"d":false,"x":32767},{"y":0,"t":36,"d":false,"x":32767},{"y":14654,"t":37,"d":false,"x":29308},{"y":15054,"t":38,"d":false,"x":29104},{"y":15117,"t":39,"d":false,"x":29071},{"y":14654,"t":40,"d":false,"x":29308},{"y":14654,"t":41,"d":false,"x":29308},{"y":19524,"t":42,"d":false,"x":26315},{"y":20117,"t":43,"d":false,"x":25865},{"y":20339,"t":44,"d":false,"x":25691},{"y":19858,"t":45,"d":false,"x":26064},{"y":20117,"t":46,"d":false,"x":25865},{"y":19377,"t":47,"d":false,"x":26423},{"t":48,"y":21823,"x":24442,"d":false},{"t":49,"y":21647,"x":24599,"d":false},{"t":50,"y":22041,"x":24246,"d":false},{"t":51,"y":21849,"x":24419,"d":false},{"t":52,"y":21577,"x":24660,"d":false},{"t":53,"y":22225,"x":24077,"d":false},{"t":54,"y":22711,"x":23620,"d":false},{"t":55,"y":22649,"x":23679,"d":false},{"t":56,"y":22568,"x":23756,"d":false},{"t":57,"y":23170,"x":23170,"d":false},{"t":58,"y":23170,"x":23170,"d":false},{"t":59,"y":23170,"x":23170,"d":false},{"t":60,"y":21769,"x":24490,"d":false},{"t":61,"y":20977,"x":25172,"d":false},{"t":62,"y":5387,"x":32321,"d":false},{"t":63,"y":4331,"x":32480,"d":false},{"t":64,"y":5862,"x":32238,"d":false},{"t":65,"y":-31840,"x":7741,"d":false},{"t":66,"y":-31656,"x":8461,"d":false},{"t":67,"y":-31495,"x":9040,"d":false},{"t":68,"y":31318,"x":9636,"d":false},{"t":69,"y":-31381,"x":9429,"d":false},{"t":70,"y":-31158,"x":10141,"d":false},{"t":71,"y":-30982,"x":10668,"d":false},{"t":72,"y":-30734,"x":11361,"d":false},{"t":73,"y":-30453,"x":12094,"d":false},{"t":74,"y":32438,"x":-4634,"d":false},{"t":75,"y":-30332,"x":12395,"d":false},{"t":76,"y":32219,"x":-5967,"d":false},{"t":77,"y":32282,"x":-5614,"d":false},{"t":78,"y":-30433,"x":12144,"d":false},{"t":79,"y":-30155,"x":12820,"d":false},{"t":80,"y":31718,"x":-8223,"d":false},{"t":81,"y":-30103,"x":12943,"d":false},{"t":82,"y":-29845,"x":13526,"d":false},{"t":83,"y":-29628,"x":13995,"d":false},{"x":14594,"y":-29338,"d":false,"t":84},{"x":15136,"y":-29062,"d":false,"t":85},{"x":15626,"y":-28801,"d":false,"t":86},{"x":16123,"y":-28526,"d":false,"t":87},{"x":16627,"y":-28235,"d":false,"t":88},{"x":17253,"y":-27857,"d":false,"t":89},{"x":17768,"y":-27532,"d":false,"t":90},{"x":18176,"y":-27264,"d":false,"t":91},{"x":18890,"y":-26774,"d":false,"t":92},{"x":19312,"y":-26471,"d":false,"t":93},{"x":19848,"y":-26072,"d":false,"t":94},{"x":20365,"y":-25670,"d":false,"t":95},{"x":20909,"y":-25229,"d":false,"t":96},{"x":21540,"y":-24692,"d":false,"t":97},{"x":22085,"y":-24206,"d":false,"t":98},{"x":22441,"y":-23877,"d":false,"t":99},{"x":-23170,"y":-23170,"d":false,"t":100},{"x":23079,"y":-23260,"d":false,"t":101},{"x":-23170,"y":-23170,"d":false,"t":102},{"x":23529,"y":-22805,"d":false,"t":103},{"x":-23170,"y":-23170,"d":false,"t":104},{"x":24056,"y":-22248,"d":false,"t":105},{"x":-23170,"y":-23170,"d":false,"t":106},{"x":-23170,"y":-23170,"d":false,"t":107},{"x":24400,"y":-21870,"d":false,"t":108},{"x":-23170,"y":-23170,"d":false,"t":109},{"x":24917,"y":-21280,"d":false,"t":110},{"x":-23170,"y":-23170,"d":false,"t":111},{"x":-23170,"y":-23170,"d":false,"t":112},{"x":25320,"y":-20799,"d":false,"t":113},{"x":-23170,"y":-23170,"d":false,"t":114},{"x":25658,"y":-20380,"d":false,"t":115},{"x":-23170,"y":-23170,"d":false,"t":116},{"x":-23170,"y":-23170,"d":false,"t":117},{"x":26039,"y":-19891,"d":false,"t":118},{"x":-23170,"y":-23170,"d":false,"t":119},{"y":-19456,"t":120,"x":26366,"d":false},{"y":-23170,"t":121,"x":-23170,"d":false},{"y":-18925,"t":122,"x":26749,"d":false},{"y":-23170,"t":123,"x":-23170,"d":false},{"y":-23170,"t":124,"x":-23170,"d":false},{"y":-18510,"t":125,"x":27038,"d":false},{"y":-23170,"t":126,"x":-23170,"d":false},{"y":-18176,"t":127,"x":27264,"d":false},{"y":-23170,"t":128,"x":-23170,"d":false},{"y":-23170,"t":129,"x":-23170,"d":false},{"y":-17756,"t":130,"x":27539,"d":false},{"y":-23170,"t":131,"x":-23170,"d":false},{"y":-23170,"t":132,"x":-23170,"d":false},{"y":-17415,"t":133,"x":27756,"d":false},{"y":-23170,"t":134,"x":-23170,"d":false},{"y":-17072,"t":135,"x":27968,"d":false},{"y":-23170,"t":136,"x":-23170,"d":false},{"y":-23170,"t":137,"x":-23170,"d":false},{"y":-16725,"t":138,"x":28177,"d":false},{"y":-23170,"t":139,"x":-23170,"d":false},{"y":-23170,"t":140,"x":-23170,"d":false},{"y":-16296,"t":141,"x":28427,"d":false},{"y":-23170,"t":142,"x":-23170,"d":false},{"y":-15805,"t":143,"x":28703,"d":false},{"y":-23170,"t":144,"x":-23170,"d":false},{"y":-23170,"t":145,"x":-23170,"d":false},{"y":-15729,"t":146,"x":28745,"d":false},{"y":-23170,"t":147,"x":-23170,"d":false},{"y":-23170,"t":148,"x":-23170,"d":false},{"y":-15373,"t":149,"x":28937,"d":false},{"y":0,"t":150,"x":-32767,"d":false},{"y":0,"t":151,"x":-32767,"d":false},{"y":0,"t":152,"x":-32767,"d":false},{"y":0,"t":153,"x":-32767,"d":false},{"y":0,"t":154,"x":-32767,"d":false},{"y":0,"t":155,"x":-32767,"d":false},{"y":0,"t":156,"d":false,"x":-32767},{"y":0,"t":157,"d":false,"x":-32767},{"y":0,"t":158,"d":false,"x":-32767},{"y":0,"t":159,"d":false,"x":-32767},{"y":0,"t":160,"d":false,"x":-32767},{"y":0,"t":161,"d":false,"x":-32767},{"y":-17427,"t":162,"d":false,"x":27748},{"y":-17168,"t":163,"d":false,"x":27909},{"y":-16846,"t":164,"d":false,"x":28105},{"y":-16584,"t":165,"d":false,"x":28260},{"y":-16257,"t":166,"d":false,"x":28450},{"y":15992,"t":167,"d":false,"x":-28599},{"y":16330,"t":168,"d":false,"x":-28408},{"y":16569,"t":169,"d":false,"x":-28269},{"y":16871,"t":170,"d":false,"x":-28090},{"y":17173,"t":171,"d":false,"x":-27906},{"y":17413,"t":172,"d":false,"x":-27757},{"y":17754,"t":173,"d":false,"x":-27540},{"y":18095,"t":174,"d":false,"x":-27317},{"y":18337,"t":175,"d":false,"x":-27156},{"y":18638,"t":176,"d":false,"x":-26950},{"y":18879,"t":177,"d":false,"x":-26782},{"y":19162,"t":178,"d":false,"x":-26580},{"y":19504,"t":179,"d":false,"x":-26330},{"y":19802,"t":180,"d":false,"x":-26107},{"y":20086,"t":181,"d":false,"x":-25889},{"y":20327,"t":182,"d":false,"x":-25700},{"y":20612,"t":183,"d":false,"x":-25472},{"y":20852,"t":184,"d":false,"x":-25276},{"y":21137,"t":185,"d":false,"x":-25038},{"y":21377,"t":186,"d":false,"x":-24834},{"y":21661,"t":187,"d":false,"x":-24586},{"y":21996,"t":188,"d":false,"x":-24287},{"y":22233,"t":189,"d":false,"x":-24070},{"y":22515,"t":190,"d":false,"x":-23807},{"y":22796,"t":191,"d":false,"x":-23537},{"y":23030,"d":false,"x":-23309,"t":192},{"y":23309,"d":false,"x":-23029,"t":193},{"y":23587,"d":false,"x":-22745,"t":194},{"y":23864,"d":false,"x":-22454,"t":195},{"y":24095,"d":false,"x":-22206,"t":196},{"y":24370,"d":false,"x":-21904,"t":197},{"y":24642,"d":false,"x":-21597,"t":198},{"y":24831,"d":false,"x":-21380,"t":199},{"y":25101,"d":false,"x":-21062,"t":200},{"y":25369,"d":false,"x":-20739,"t":201},{"y":25596,"d":false,"x":-20458,"t":202},{"y":25812,"d":false,"x":-20184,"t":203},{"y":26037,"d":false,"x":-19893,"t":204},{"y":26261,"d":false,"x":-19597,"t":205},{"y":26564,"d":false,"x":-19185,"t":206},{"y":26783,"d":false,"x":-18877,"t":207},{"y":26969,"d":false,"x":-18610,"t":208},{"y":27172,"d":false,"x":-18313,"t":209},{"y":27432,"d":false,"x":-17921,"t":210},{"y":27644,"d":false,"x":-17592,"t":211},{"y":27899,"d":false,"x":-17184,"t":212},{"y":28062,"d":false,"x":-16918,"t":213},{"y":28240,"d":false,"x":-16618,"t":214},{"y":28512,"d":false,"x":-16147,"t":215},{"y":28644,"d":false,"x":-15913,"t":216},{"y":28883,"d":false,"x":-15473,"t":217},{"y":29054,"d":false,"x":-15150,"t":218},{"y":29245,"d":false,"x":-14779,"t":219},{"y":29432,"d":false,"x":-14403,"t":220},{"y":29655,"d":false,"x":-13937,"t":221},{"y":29797,"d":false,"x":-13631,"t":222},{"y":29973,"d":false,"x":-13239,"t":223},{"y":30145,"d":false,"x":-12843,"t":224},{"y":30334,"d":false,"x":-12390,"t":225},{"y":30446,"d":false,"x":-12114,"t":226},{"y":30627,"d":false,"x":-11647,"t":227},{"x":-11233,"y":30782,"t":228,"d":false},{"x":-10786,"y":30941,"t":229,"d":false},{"x":-10493,"y":31042,"t":230,"d":false},{"x":-9967,"y":31214,"t":231,"d":false},{"x":-9598,"y":31330,"t":232,"d":false},{"x":-9192,"y":31451,"t":233,"d":false},{"x":-8678,"y":31597,"t":234,"d":false},{"x":-8394,"y":31674,"t":235,"d":false},{"x":-7974,"y":31782,"t":236,"d":false},{"x":-7442,"y":31911,"t":237,"d":false},{"x":-7036,"y":32003,"t":238,"d":false},{"x":-6601,"y":32095,"t":239,"d":false},{"x":-6073,"y":32199,"t":240,"d":false},{"x":-5629,"y":32280,"t":241,"d":false},{"x":-5199,"y":32352,"t":242,"d":false},{"x":-4764,"y":32419,"t":243,"d":false},{"x":-4323,"y":32481,"t":244,"d":false},{"x":-3760,"y":32551,"t":245,"d":false},{"x":-3307,"y":32600,"t":246,"d":false},{"x":-2839,"y":32644,"t":247,"d":false},{"x":-2385,"y":32680,"t":248,"d":false},{"x":-1917,"y":32711,"t":249,"d":false},{"x":-1439,"y":32735,"t":250,"d":false},{"x":-967,"y":32753,"t":251,"d":false},{"x":-485,"y":32763,"t":252,"d":false},{"x":0,"y":32767,"t":253,"d":false},{"x":491,"y":32763,"t":254,"d":false},{"x":985,"y":32752,"t":255,"d":false},{"x":1488,"y":32733,"t":256,"d":false},{"x":1990,"y":32707,"t":257,"d":false},{"x":2513,"y":32670,"t":258,"d":false},{"x":3023,"y":32627,"t":259,"d":false},{"x":3535,"y":32576,"t":260,"d":false},{"x":3829,"y":32543,"t":261,"d":false},{"x":4347,"y":32477,"t":262,"d":false},{"x":4905,"y":32398,"t":263,"d":false},{"x":5429,"y":32314,"t":264,"d":false},{"x":5976,"y":32217,"t":265,"d":false},{"x":6426,"y":32131,"t":266,"d":false},{"x":6955,"y":32020,"t":267,"d":false},{"x":7512,"y":31894,"t":268,"d":false},{"x":7978,"y":31781,"t":269,"d":false},{"x":8542,"y":31634,"t":270,"d":false},{"x":9144,"y":31465,"t":271,"d":false},{"x":9589,"y":31333,"t":272,"d":false},{"x":10036,"y":31192,"t":273,"d":false},{"x":10567,"y":31016,"t":274,"d":false},{"x":11143,"y":30814,"t":275,"d":false},{"x":11596,"y":30647,"t":276,"d":false},{"x":12097,"y":30452,"t":277,"d":false},{"x":12603,"y":30246,"t":278,"d":false},{"x":13230,"y":29978,"t":279,"d":false},{"x":13687,"y":29772,"t":280,"d":false},{"x":14138,"y":29560,"t":281,"d":false},{"x":14768,"y":29250,"t":282,"d":false},{"x":15172,"y":29043,"t":283,"d":false},{"x":15741,"y":28738,"t":284,"d":false},{"x":16147,"y":28512,"t":285,"d":false},{"x":16729,"y":28175,"t":286,"d":false},{"x":17140,"y":27927,"t":287,"d":false},{"x":17764,"y":27534,"t":288,"d":false},{"x":18245,"y":27218,"t":289,"d":false},{"x":18659,"y":26935,"t":290,"d":false},{"x":19174,"y":26571,"t":291,"d":false},{"x":19734,"y":26158,"t":292,"d":false},{"x":20244,"y":25765,"t":293,"d":false},{"x":20657,"y":25436,"t":294,"d":false},{"x":21145,"y":25032,"t":295,"d":false},{"x":21555,"y":24679,"t":296,"d":false},{"x":21885,"y":24387,"t":297,"d":false},{"x":22212,"y":24089,"t":298,"d":false},{"x":22535,"y":23787,"t":299,"d":false},{"x":22776,"y":23556,"t":300,"d":false},{"x":23092,"y":23248,"t":301,"d":false},{"x":23403,"y":22935,"t":302,"d":false},{"x":23709,"y":22617,"t":303,"d":false},{"x":24167,"y":22127,"t":304,"d":false},{"x":24395,"y":21876,"t":305,"d":false},{"x":24689,"y":21544,"t":306,"d":false},{"x":24978,"y":21208,"t":307,"d":false},{"x":25198,"y":20946,"t":308,"d":false},{"x":25479,"y":20603,"t":309,"d":false},{"x":25694,"y":20335,"t":310,"d":false},{"x":25949,"y":20009,"t":311,"d":false},{"x":26157,"y":19735,"t":312,"d":false},{"x":26419,"y":19384,"t":313,"d":false},{"x":26695,"y":19001,"t":314,"d":false},{"x":26895,"y":18717,"t":315,"d":false},{"x":27191,"y":18284,"t":316,"d":false},{"x":27384,"y":17995,"t":317,"d":false},{"x":27573,"y":17703,"t":318,"d":false},{"x":27760,"y":17409,"t":319,"d":false},{"x":27987,"y":17042,"t":320,"d":false},{"x":28235,"y":16627,"t":321,"d":false},{"x":28411,"y":16325,"t":322,"d":false},{"x":28621,"y":15953,"t":323,"d":false},{"x":28790,"y":15647,"t":324,"d":false},{"x":29020,"y":15216,"t":325,"d":false},{"x":-12413,"y":30325,"t":326,"d":false},{"x":-11815,"y":30563,"t":327,"d":false},{"x":-11160,"y":30808,"t":328,"d":false},{"x":-10691,"y":30974,"t":329,"d":false},{"x":-10078,"y":31179,"t":330,"d":false},{"x":-9459,"y":31372,"t":331,"d":false},{"x":-8794,"y":31565,"t":332,"d":false},{"x":-8169,"y":31732,"t":333,"d":false},{"x":-7688,"y":31852,"t":334,"d":false},{"x":-7058,"y":31998,"t":335,"d":false},{"t":336,"y":32131,"x":-6426,"d":false},{"t":337,"y":32246,"x":-5820,"d":false},{"t":338,"y":32354,"x":-5183,"d":false},{"t":339,"y":32450,"x":-4546,"d":false},{"t":340,"y":32531,"x":-3929,"d":false},{"t":341,"y":32601,"x":-3291,"d":false},{"t":342,"y":32658,"x":-2669,"d":false},{"t":343,"y":32703,"x":-2044,"d":false},{"t":344,"y":32737,"x":-1410,"d":false},{"t":345,"y":32758,"x":-784,"d":false},{"t":346,"y":32767,"x":-157,"d":false},{"t":347,"y":32764,"x":470,"d":false},{"t":348,"y":32749,"x":1097,"d":false},{"t":349,"y":32722,"x":1722,"d":false},{"t":350,"y":32683,"x":2346,"d":false},{"t":351,"y":32631,"x":2981,"d":false},{"t":352,"y":32568,"x":3601,"d":false},{"t":353,"y":32492,"x":4238,"d":false},{"t":354,"y":32406,"x":4853,"d":false},{"t":355,"y":32304,"x":5489,"d":false},{"t":356,"y":32195,"x":6095,"d":false},{"t":357,"y":32069,"x":6727,"d":false},{"t":358,"y":31931,"x":7357,"d":false},{"t":359,"y":31816,"x":7836,"d":false},{"t":360,"y":31655,"x":8462,"d":false},{"t":361,"y":31483,"x":9085,"d":false},{"t":362,"y":31298,"x":9702,"d":false},{"t":363,"y":31101,"x":10315,"d":false},{"t":364,"y":30893,"x":10922,"d":false},{"t":365,"y":30757,"x":11299,"d":false},{"t":366,"y":30603,"x":11710,"d":false},{"t":367,"y":8319,"x":31693,"d":false},{"t":368,"y":7924,"x":31794,"d":false},{"t":369,"y":7527,"x":31891,"d":false},{"t":370,"y":7129,"x":31982,"d":false},{"t":371,"y":6730,"x":32068,"d":false},{"t":372,"y":6331,"d":false,"x":32150},{"t":373,"y":5949,"d":false,"x":32222},{"t":374,"y":5547,"d":false,"x":32294},{"t":375,"y":5146,"d":false,"x":32360},{"t":376,"y":4759,"d":false,"x":32420},{"t":377,"y":4357,"d":false,"x":32476},{"t":378,"y":3967,"d":false,"x":32526},{"t":379,"y":3564,"d":false,"x":32573},{"t":380,"y":3172,"d":false,"x":32613},{"t":381,"y":2770,"d":false,"x":32650},{"t":382,"y":2377,"d":false,"x":32681},{"t":383,"y":2081,"d":false,"x":32701},{"t":384,"y":1681,"d":false,"x":32724},{"t":385,"y":1286,"d":false,"x":32742},{"t":386,"y":891,"d":false,"x":32755},{"t":387,"y":495,"d":false,"x":32763},{"t":388,"y":99,"d":false,"x":32767},{"t":389,"y":-297,"d":false,"x":32766},{"t":390,"y":-693,"d":false,"x":32760},{"t":391,"y":-1088,"d":false,"x":32749},{"t":392,"y":-1483,"d":false,"x":32733},{"t":393,"y":-1883,"d":false,"x":32713},{"t":394,"y":2292,"d":false,"x":-32687},{"t":395,"y":1901,"d":false,"x":-32712},{"t":396,"y":1511,"d":false,"x":-32732},{"t":397,"y":1112,"d":false,"x":-32748},{"t":398,"y":710,"d":false,"x":-32759},{"t":399,"y":306,"d":false,"x":-32766},{"t":400,"y":-102,"d":false,"x":-32767},{"t":401,"y":-515,"d":false,"x":-32763},{"t":402,"y":-930,"d":false,"x":-32754},{"t":403,"y":-1347,"d":false,"x":-32739},{"t":404,"y":-1771,"d":false,"x":-32719},{"t":405,"y":-2193,"d":false,"x":-32693},{"t":406,"y":-2521,"d":false,"x":-32670},{"t":407,"y":-2957,"d":false,"x":-32633},{"d":false,"y":-3386,"x":-32592,"t":408},{"d":false,"y":-3829,"x":-32543,"t":409},{"d":false,"y":-4169,"x":-32501,"t":410},{"d":false,"y":-4604,"x":-32442,"t":411},{"d":false,"y":-5072,"x":-32372,"t":412},{"d":false,"y":-5527,"x":-32297,"t":413},{"d":false,"y":-5986,"x":-32216,"t":414},{"d":false,"y":-6342,"x":-32147,"t":415},{"d":false,"y":-6806,"x":-32052,"t":416},{"d":false,"y":-7295,"x":-31945,"t":417},{"d":false,"y":-7660,"x":-31859,"t":418},{"d":false,"y":-8104,"x":-31749,"t":419},{"d":false,"y":-8603,"x":-31618,"t":420},{"d":false,"y":-8972,"x":-31515,"t":421},{"d":false,"y":-9374,"x":-31398,"t":422},{"d":false,"y":-9780,"x":-31273,"t":423},{"d":false,"y":-10259,"x":-31120,"t":424},{"d":false,"y":-10738,"x":-30958,"t":425},{"d":false,"y":-11152,"x":-30811,"t":426},{"d":false,"y":-11569,"x":-30657,"t":427},{"d":false,"y":-11949,"x":-30511,"t":428},{"d":false,"y":-12511,"x":-30284,"t":429},{"d":false,"y":-31600,"x":-8667,"t":430},{"d":false,"y":-31733,"x":-8168,"t":431},{"d":false,"y":-31851,"x":-7693,"t":432},{"d":false,"y":-31971,"x":-7180,"t":433},{"d":false,"y":-32077,"x":-6688,"t":434},{"d":false,"y":-32177,"x":-6188,"t":435},{"d":false,"y":-32275,"x":-5655,"t":436},{"d":false,"y":-32365,"x":-5118,"t":437},{"d":false,"y":-32440,"x":-4614,"t":438},{"d":false,"y":-32496,"x":-4202,"t":439},{"d":false,"y":-32560,"x":-3681,"t":440},{"d":false,"y":-15901,"x":-28650,"t":441},{"d":false,"y":-16304,"x":-28423,"t":442},{"d":false,"y":-16922,"x":-28059,"t":443},{"t":444,"y":-17327,"x":-27811,"d":false},{"t":445,"y":-17971,"x":-27399,"d":false},{"t":446,"y":-18381,"x":-27126,"d":false},{"t":447,"y":-18890,"x":-26774,"d":false},{"t":448,"y":-19397,"x":-26409,"d":false},{"t":449,"y":-19876,"x":-26050,"d":false},{"t":450,"y":-20284,"x":-25734,"d":false},{"t":451,"y":-20766,"x":-25347,"d":false},{"t":452,"y":-21172,"x":-25008,"d":false},{"t":453,"y":-21654,"x":-24592,"d":false},{"t":454,"y":-22057,"x":-24232,"d":false},{"t":455,"y":-22535,"x":-23787,"d":false},{"t":456,"y":-23170,"x":-23170,"d":false},{"t":457,"y":-23787,"x":-22535,"d":false},{"t":458,"y":-24309,"x":-21972,"d":false},{"t":459,"y":-24823,"x":-21389,"d":false},{"t":460,"y":-25464,"x":-20621,"d":false},{"t":461,"y":-26024,"x":-19910,"d":false},{"t":462,"y":-26547,"x":-19208,"d":false},{"t":463,"y":-26997,"x":-18570,"d":false},{"t":464,"y":-27430,"x":-17923,"d":false},{"t":465,"y":-27830,"x":-17296,"d":false},{"t":466,"y":-32334,"x":5309,"d":false},{"t":467,"y":-32267,"x":5701,"d":false},{"t":468,"y":-32168,"x":6238,"d":false},{"t":469,"y":-32068,"x":6732,"d":false},{"t":470,"y":-31955,"x":7251,"d":false},{"t":471,"y":-31853,"x":7684,"d":false},{"t":472,"y":-31722,"x":8210,"d":false},{"t":473,"y":-31612,"x":8622,"d":false},{"t":474,"y":-31487,"x":9068,"d":false},{"t":475,"y":-31329,"x":9601,"d":false},{"t":476,"y":-31198,"x":10019,"d":false},{"t":477,"y":-31008,"x":10591,"d":false},{"t":478,"y":-30846,"x":11053,"d":false},{"t":479,"y":-30691,"x":11477,"d":false},{"y":-30495,"d":false,"t":480,"x":11989},{"y":-30277,"d":false,"t":481,"x":12529},{"y":-30124,"d":false,"t":482,"x":12892},{"y":-29888,"d":false,"t":483,"x":13430},{"y":-29645,"d":false,"t":484,"x":13958},{"y":-29440,"d":false,"t":485,"x":14387},{"y":-29200,"d":false,"t":486,"x":14868},{"y":-28949,"d":false,"t":487,"x":15350},{"y":-28656,"d":false,"t":488,"x":15890},{"y":-28382,"d":false,"t":489,"x":16374},{"y":-28158,"d":false,"t":490,"x":16757},{"y":-27864,"d":false,"t":491,"x":17242},{"y":-27558,"d":false,"t":492,"x":17726},{"y":-27264,"d":false,"t":493,"x":18176},{"y":-26936,"d":false,"t":494,"x":18659},{"y":-26616,"d":false,"t":495,"x":19112},{"y":-26333,"d":false,"t":496,"x":19500},{"y":-25972,"d":false,"t":497,"x":19978},{"y":-25545,"d":false,"t":498,"x":20522},{"y":-25231,"d":false,"t":499,"x":20906},{"y":-24848,"d":false,"t":500,"x":21360},{"y":-24514,"d":false,"t":501,"x":21742},{"y":-24105,"d":false,"t":502,"x":22195},{"y":-23682,"d":false,"t":503,"x":22646},{"y":-23244,"d":false,"t":504,"x":23095},{"y":-22944,"d":false,"t":505,"x":23394},{"y":-22481,"d":false,"t":506,"x":23839},{"y":-22004,"d":false,"t":507,"x":24280},{"y":-21512,"d":false,"t":508,"x":24716},{"y":-21083,"d":false,"t":509,"x":25084},{"y":-20564,"d":false,"t":510,"x":25511},{"y":-20106,"d":false,"t":511,"x":25873},{"y":-19459,"d":false,"t":512,"x":26363},{"y":-18896,"d":false,"t":513,"x":26770},{"y":-18176,"d":false,"t":514,"x":27264},{"y":-17521,"d":false,"t":515,"x":27689},{"x":28166,"d":false,"y":-16743,"t":516},{"x":28584,"d":false,"y":-16020,"t":517},{"x":29020,"d":false,"y":-15216,"t":518},{"x":29370,"d":false,"y":-14529,"t":519},{"x":29733,"d":false,"y":-13771,"t":520},{"x":30077,"d":false,"y":-13002,"t":521},{"x":30402,"d":false,"y":-12223,"t":522},{"x":30706,"d":false,"y":-11437,"t":523},{"x":31038,"d":false,"y":-10503,"t":524},{"x":31253,"d":false,"y":-9845,"t":525},{"x":31483,"d":false,"y":-9085,"t":526},{"x":31732,"d":false,"y":-8169,"t":527},{"x":31931,"d":false,"y":-7357,"t":528},{"x":32100,"d":false,"y":-6577,"t":529},{"x":32278,"d":false,"y":-5641,"t":530},{"x":32409,"d":false,"y":-4830,"t":531},{"x":32514,"d":false,"y":-4064,"t":532},{"x":32618,"d":false,"y":-3121,"t":533},{"x":32683,"d":false,"y":-2346,"t":534},{"x":32730,"d":false,"y":-1566,"t":535},{"x":32758,"d":false,"y":-780,"t":536},{"x":32767,"d":false,"y":0,"t":537},{"x":32754,"d":false,"y":936,"t":538},{"x":32722,"d":false,"y":1714,"t":539},{"x":32659,"d":false,"y":2656,"t":540},{"x":32587,"d":false,"y":3430,"t":541},{"x":32512,"d":false,"y":4084,"t":542},{"x":32402,"d":false,"y":4876,"t":543},{"x":32251,"d":false,"y":5793,"t":544},{"x":32131,"d":false,"y":6426,"t":545},{"x":31998,"d":false,"y":7058,"t":546},{"x":31852,"d":false,"y":7688,"t":547},{"x":31694,"d":false,"y":8316,"t":548},{"x":31524,"d":false,"y":8940,"t":549},{"x":31342,"d":false,"y":9559,"t":550},{"x":31148,"d":false,"y":10174,"t":551},{"d":false,"t":552,"x":30990,"y":10643},{"d":false,"t":553,"x":30757,"y":11299},{"d":false,"t":554,"x":30530,"y":11899},{"d":false,"t":555,"x":30292,"y":12492},{"d":false,"t":556,"x":30077,"y":13002},{"d":false,"t":557,"x":29792,"y":13642},{"d":false,"t":558,"x":29523,"y":14215},{"d":false,"t":559,"x":29276,"y":14716},{"d":false,"t":560,"x":28955,"y":15338},{"d":false,"t":561,"x":28688,"y":15833},{"d":false,"t":562,"x":28343,"y":16442},{"d":false,"t":563,"x":28056,"y":16928},{"d":false,"t":564,"x":27689,"y":17521},{"d":false,"t":565,"x":27384,"y":17995},{"d":false,"t":566,"x":27070,"y":18464},{"d":false,"t":567,"x":26674,"y":19031},{"d":false,"t":568,"x":26289,"y":19560},{"d":false,"t":569,"x":25949,"y":20009},{"d":false,"t":570,"x":25602,"y":20450},{"d":false,"t":571,"x":25108,"y":21054},{"d":false,"t":572,"x":24746,"y":21478},{"d":false,"t":573,"x":24309,"y":21972},{"d":false,"t":574,"x":23861,"y":22457},{"d":false,"t":575,"x":23556,"y":22776},{"d":false,"t":576,"x":23092,"y":23248},{"d":false,"t":577,"x":22617,"y":23709},{"d":false,"t":578,"x":22134,"y":24161},{"d":false,"t":579,"x":21643,"y":24602},{"d":false,"t":580,"x":21221,"y":24966},{"d":false,"t":581,"x":20715,"y":25388},{"d":false,"t":582,"x":20279,"y":25738},{"d":false,"t":583,"x":19760,"y":26139},{"d":false,"t":584,"x":19310,"y":26473},{"d":false,"t":585,"x":18676,"y":26924},{"d":false,"t":586,"x":18212,"y":27240},{"d":false,"t":587,"x":17743,"y":27548},{"d":false,"t":588,"y":27917,"x":17156},{"d":false,"t":589,"y":28207,"x":16675},{"d":false,"t":590,"y":28479,"x":16206},{"d":false,"t":591,"y":28921,"x":15403},{"d":false,"t":592,"y":29276,"x":14716},{"d":false,"t":593,"y":29645,"x":13960},{"d":false,"t":594,"y":30077,"x":13002},{"d":false,"t":595,"y":30325,"x":12413},{"d":false,"t":596,"y":30655,"x":11574},{"d":false,"t":597,"y":30974,"x":10691},{"d":false,"t":598,"y":31253,"x":9845},{"d":false,"t":599,"y":31441,"x":9229},{"d":false,"t":600,"y":31704,"x":8277},{"d":false,"t":601,"y":31896,"x":7505},{"d":false,"t":602,"y":32069,"x":6727},{"d":false,"t":603,"y":32251,"x":5793},{"d":false,"t":604,"y":32382,"x":5006},{"d":false,"t":605,"y":32514,"x":4064},{"d":false,"t":606,"y":32603,"x":3276},{"d":false,"t":607,"y":32671,"x":2501},{"d":false,"t":608,"y":32730,"x":1566},{"d":false,"t":609,"y":32758,"x":784},{"d":false,"t":610,"y":32767,"x":-156},{"d":false,"t":611,"y":32754,"x":-940},{"d":false,"t":612,"y":32722,"x":-1722},{"d":false,"t":613,"y":32659,"x":-2656},{"d":false,"t":614,"y":32587,"x":-3430},{"d":false,"t":615,"y":32474,"x":-4372},{"d":false,"t":616,"y":32362,"x":-5134},{"d":false,"t":617,"y":-5567,"x":32291},{"d":false,"t":618,"y":-5177,"x":32355},{"d":false,"t":619,"y":-4634,"x":32438},{"d":false,"t":620,"y":-5694,"x":32268},{"d":false,"t":621,"y":-2254,"x":32689},{"d":false,"t":622,"y":-2613,"x":32663},{"d":false,"t":623,"y":-1559,"x":32730},{"d":false,"t":624,"x":32710,"y":-1924},{"d":false,"t":625,"x":32748,"y":-1129},{"d":false,"t":626,"x":32741,"y":-1310},{"d":false,"t":627,"x":32730,"y":-1559},{"d":false,"t":628,"x":32710,"y":-1924},{"d":false,"t":629,"x":32767,"y":0},{"d":false,"t":630,"x":32767,"y":0},{"d":false,"t":631,"x":32767,"y":0},{"d":false,"t":632,"x":32767,"y":0},{"d":false,"t":633,"x":32767,"y":0},{"d":false,"t":634,"x":32767,"y":0},{"d":false,"t":635,"x":32767,"y":0},{"d":false,"t":636,"x":32767,"y":0},{"d":false,"t":637,"x":32767,"y":0},{"d":false,"t":638,"x":32767,"y":0},{"d":false,"t":639,"x":32767,"y":0},{"d":false,"t":640,"x":32767,"y":0},{"d":false,"t":641,"x":32767,"y":0},{"d":false,"t":642,"x":32767,"y":0},{"d":false,"t":643,"x":32767,"y":0},{"d":false,"t":644,"x":32767,"y":0},{"d":false,"t":645,"x":32767,"y":0},{"d":false,"t":646,"x":32767,"y":0},{"d":false,"t":647,"x":32767,"y":0},{"d":false,"t":648,"x":32767,"y":0},{"d":false,"t":649,"x":32767,"y":0},{"d":false,"t":650,"x":32767,"y":0},{"d":false,"t":651,"x":32767,"y":0},{"d":false,"t":652,"x":32767,"y":0},{"d":false,"t":653,"x":32767,"y":0},{"d":false,"t":654,"x":32767,"y":0},{"d":false,"t":655,"x":32767,"y":0},{"d":false,"t":656,"x":32767,"y":0},{"d":false,"t":657,"x":32767,"y":0},{"d":false,"t":658,"x":32767,"y":0},{"d":false,"t":659,"x":32767,"y":0},{"t":660,"y":0,"d":false,"x":32767},{"t":661,"y":0,"d":false,"x":32767},{"t":662,"y":0,"d":false,"x":32767},{"t":663,"y":0,"d":false,"x":32767},{"t":664,"y":0,"d":false,"x":32767},{"t":665,"y":0,"d":false,"x":32767},{"t":666,"y":0,"d":false,"x":32767},{"t":667,"y":0,"d":false,"x":32767},{"t":668,"y":0,"d":false,"x":32767},{"t":669,"y":0,"d":false,"x":32767},{"t":670,"y":0,"d":false,"x":32767},{"t":671,"y":0,"d":false,"x":32767},{"t":672,"y":0,"d":false,"x":32767},{"t":673,"y":0,"d":false,"x":32767},{"t":674,"y":0,"d":false,"x":32767},{"t":675,"y":0,"d":false,"x":32767},{"t":676,"y":0,"d":false,"x":32767},{"t":677,"y":0,"d":false,"x":32767},{"t":678,"y":0,"d":false,"x":32767},{"t":679,"y":0,"d":false,"x":32767},{"t":680,"y":0,"d":false,"x":32767},{"t":681,"y":0,"d":false,"x":32767},{"t":682,"y":0,"d":false,"x":32767},{"t":683,"y":0,"d":false,"x":32767},{"t":684,"y":0,"d":false,"x":32767},{"t":685,"y":0,"d":false,"x":32767},{"t":686,"y":0,"d":false,"x":32767},{"t":687,"y":0,"d":false,"x":32767},{"t":688,"y":0,"d":false,"x":32767},{"t":689,"y":0,"d":false,"x":32767},{"t":690,"y":0,"d":false,"x":32767},{"t":737,"y":27001,"d":false,"x":-18563},{"t":738,"y":24442,"d":false,"x":-21823},{"t":739,"y":24599,"d":false,"x":-21647},{"t":740,"y":24799,"d":false,"x":-21417},{"t":741,"y":24419,"d":false,"x":-21849},{"t":742,"d":false,"x":-21577,"y":24660},{"t":743,"d":false,"x":-22225,"y":24077},{"t":744,"d":false,"x":-22711,"y":23620},{"t":745,"d":false,"x":-22141,"y":24154},{"t":746,"d":false,"x":-21984,"y":24298},{"t":747,"d":false,"x":-22499,"y":23822},{"t":748,"d":false,"x":-22358,"y":23954},{"t":749,"d":false,"x":-22141,"y":24154},{"t":750,"d":false,"x":-21769,"y":24490},{"t":751,"d":false,"x":-23170,"y":23170},{"t":752,"d":false,"x":-23170,"y":23170},{"t":753,"d":false,"x":21933,"y":-24344},{"t":754,"d":false,"x":-23170,"y":23170},{"t":755,"d":false,"x":21974,"y":-24307},{"t":756,"d":false,"x":-23170,"y":23170},{"t":757,"d":false,"x":22023,"y":-24262},{"t":758,"d":false,"x":-19660,"y":26214},{"t":759,"d":false,"x":21997,"y":-24286},{"t":760,"d":false,"x":-23170,"y":23170},{"t":762,"d":false,"x":21963,"y":-24316},{"t":763,"d":false,"x":-23170,"y":23170},{"t":764,"d":false,"x":22015,"y":-24270},{"t":765,"d":false,"x":-19660,"y":26214},{"t":766,"d":false,"x":21912,"y":-24362},{"t":767,"d":false,"x":-5904,"y":-32231},{"t":768,"d":false,"x":-5528,"y":-32297},{"t":769,"d":false,"x":-5150,"y":-32360},{"t":770,"d":false,"x":-4770,"y":-32418},{"t":771,"d":false,"x":-4388,"y":-32472},{"t":772,"d":false,"x":-4016,"y":-32520},{"t":773,"d":false,"x":-3619,"y":-32567},{"t":774,"d":false,"x":-3241,"y":-32606},{"t":775,"d":false,"x":-2843,"y":-32643},{"t":776,"d":false,"x":-2460,"y":-32674},{"t":777,"d":false,"x":-2075,"y":-32701},{"t":778,"d":false,"x":-1676,"y":-32724},{"d":false,"t":779,"x":-1286,"y":-32742},{"d":false,"t":780,"x":-891,"y":-32755},{"d":false,"t":781,"x":-496,"y":-32763},{"d":false,"t":782,"x":-100,"y":-32767},{"d":false,"t":783,"x":299,"y":-32766},{"d":false,"t":784,"x":699,"y":-32760},{"d":false,"t":785,"x":1098,"y":-32749},{"d":false,"t":786,"x":1501,"y":-32733},{"d":false,"t":787,"x":1906,"y":-32711},{"d":false,"t":788,"x":2313,"y":-32685},{"d":false,"t":789,"x":2721,"y":-32654},{"d":false,"t":790,"x":3121,"y":-32618},{"d":false,"t":791,"x":3541,"y":-32575},{"d":false,"t":792,"x":3952,"y":-32528},{"d":false,"t":793,"x":4350,"y":-32477},{"d":false,"t":794,"x":4776,"y":-32417},{"d":false,"t":795,"x":5189,"y":-32354},{"d":false,"t":796,"x":5601,"y":-32285},{"d":false,"t":797,"x":29073,"y":-15114},{"d":false,"t":798,"x":29285,"y":-14700},{"d":false,"t":799,"x":29558,"y":-14142},{"d":false,"t":800,"x":29822,"y":-13577},{"d":false,"t":801,"x":30033,"y":-13103},{"d":false,"t":802,"x":30260,"y":-12570},{"d":false,"t":803,"x":30455,"y":-12089},{"d":false,"t":804,"x":30628,"y":-11646},{"d":false,"t":805,"x":8003,"y":-31775},{"d":false,"t":806,"x":8421,"y":-31667},{"d":false,"t":807,"x":8875,"y":-31542},{"d":false,"t":808,"x":9305,"y":-31418},{"d":false,"t":809,"x":9739,"y":-31286},{"d":false,"t":810,"x":10214,"y":-31134},{"d":false,"t":811,"x":10808,"y":-30933},{"d":false,"t":812,"x":11258,"y":-30772},{"d":false,"t":813,"x":11602,"y":-30644},{"d":false,"t":814,"x":12103,"y":-30450},{"x":12612,"d":false,"t":815,"y":-30243},{"x":13017,"d":false,"t":816,"y":-30070},{"x":13490,"d":false,"t":817,"y":-29861},{"x":14016,"d":false,"t":818,"y":-29618},{"x":14440,"d":false,"t":819,"y":-29414},{"x":14977,"d":false,"t":820,"y":-29144},{"x":15519,"d":false,"t":821,"y":-28859},{"x":15960,"d":false,"t":822,"y":-28618},{"x":16406,"d":false,"t":823,"y":-28364},{"x":16858,"d":false,"t":824,"y":-28097},{"x":17315,"d":false,"t":825,"y":-27818},{"x":17878,"d":false,"t":826,"y":-27460},{"x":18310,"d":false,"t":827,"y":-27174},{"x":18781,"d":false,"t":828,"y":-26851},{"x":19352,"d":false,"t":829,"y":-26442},{"x":19804,"d":false,"t":830,"y":-26105},{"x":20284,"d":false,"t":831,"y":-25734},{"x":20599,"d":false,"t":832,"y":-25482},{"x":21159,"d":false,"t":833,"y":-25020},{"x":21633,"d":false,"t":834,"y":-24611},{"x":22034,"d":false,"t":835,"y":-24253},{"x":22602,"d":false,"t":836,"y":-23724},{"x":23007,"d":false,"t":837,"y":-23331},{"x":23414,"d":false,"t":838,"y":-22923},{"x":23982,"d":false,"t":839,"y":-22328},{"x":24389,"d":false,"t":840,"y":-21883},{"x":24806,"d":false,"t":841,"y":-21408},{"x":25214,"d":false,"t":842,"y":-20926},{"x":25705,"d":false,"t":843,"y":-20321},{"x":26044,"d":false,"t":844,"y":-19885},{"x":26554,"d":false,"t":845,"y":-19198},{"x":26954,"d":false,"t":846,"y":-18632},{"x":-23170,"d":false,"t":847,"y":-23170},{"x":27264,"d":false,"t":848,"y":-18176},{"x":-23170,"d":false,"t":849,"y":-23170},{"x":-23170,"d":false,"t":850,"y":-23170},{"t":851,"x":27457,"d":false,"y":-17883},{"t":852,"x":-23170,"d":false,"y":-23170},{"t":853,"x":32762,"d":false,"y":548},{"t":854,"x":32754,"d":false,"y":920},{"t":855,"x":32741,"d":false,"y":1295},{"t":856,"x":32724,"d":false,"y":1683},{"t":857,"x":32708,"d":false,"y":1974},{"t":858,"x":32682,"d":false,"y":2361},{"t":859,"x":32651,"d":false,"y":2761},{"t":860,"x":32614,"d":false,"y":3165},{"t":861,"x":32572,"d":false,"y":3566},{"t":862,"x":32524,"d":false,"y":3981},{"t":863,"x":32470,"d":false,"y":4401},{"t":864,"x":32410,"d":false,"y":4827},{"t":865,"x":32342,"d":false,"y":5258},{"t":866,"x":32268,"d":false,"y":5694},{"t":867,"x":32187,"d":false,"y":6136},{"t":868,"x":32099,"d":false,"y":6582},{"t":869,"x":32003,"d":false,"y":7033},{"t":870,"x":31895,"d":false,"y":7511},{"t":871,"x":31783,"d":false,"y":7972},{"t":872,"x":31662,"d":false,"y":8436},{"t":873,"x":31526,"d":false,"y":8932},{"t":874,"x":31417,"d":false,"y":9309},{"t":875,"x":31272,"d":false,"y":9786},{"t":876,"x":31107,"d":false,"y":10297},{"t":877,"x":30943,"d":false,"y":10781},{"t":878,"x":30756,"d":false,"y":11303},{"t":879,"x":30608,"d":false,"y":11697},{"t":880,"x":30423,"d":false,"y":12169},{"t":881,"x":30260,"d":false,"y":12571},{"t":882,"x":30071,"d":false,"y":13016},{"t":883,"x":29934,"d":false,"y":13329},{"t":884,"x":29728,"d":false,"y":13782},{"t":885,"x":29511,"d":false,"y":14239},{"t":886,"x":29331,"d":false,"y":14607},{"y":15073,"x":29094,"d":false,"t":887},{"y":15450,"x":28896,"d":false,"t":888},{"y":15832,"x":28688,"d":false,"t":889},{"y":16218,"x":28472,"d":false,"t":890},{"y":16698,"x":28193,"d":false,"t":891},{"y":17091,"x":27956,"d":false,"t":892},{"y":17488,"x":27710,"d":false,"t":893},{"y":17888,"x":27453,"d":false,"t":894},{"y":18291,"x":27186,"d":false,"t":895},{"y":18697,"x":26909,"d":false,"t":896},{"y":19166,"x":26577,"d":false,"t":897},{"y":19578,"x":26275,"d":false,"t":898},{"y":19909,"x":26025,"d":false,"t":899},{"y":20469,"x":25587,"d":false,"t":900},{"y":20807,"x":25313,"d":false,"t":901},{"y":21291,"x":24907,"d":false,"t":902},{"y":21568,"x":24668,"d":false,"t":903},{"y":21980,"x":24301,"d":false,"t":904},{"y":22470,"x":23849,"d":false,"t":905},{"y":22819,"x":23515,"d":false,"t":906},{"y":23170,"x":23170,"d":false,"t":907},{"y":23592,"x":22739,"d":false,"t":908},{"y":24017,"x":22291,"d":false,"t":909},{"y":24370,"x":21904,"d":false,"t":910},{"y":24796,"x":21421,"d":false,"t":911},{"y":25087,"x":21079,"d":false,"t":912},{"y":25572,"x":20488,"d":false,"t":913},{"y":25865,"x":20117,"d":false,"t":914},{"y":26287,"x":19562,"d":false,"t":915},{"y":26580,"x":19162,"d":false,"t":916},{"y":26946,"x":18643,"d":false,"t":917},{"y":27361,"x":18030,"d":false,"t":918},{"y":27651,"x":17581,"d":false,"t":919},{"y":28011,"x":17001,"d":false,"t":920},{"y":28369,"x":16398,"d":false,"t":921},{"y":-28721,"x":-15772,"d":false,"t":922},{"x":-16510,"y":-28303,"d":false,"t":923},{"x":-17059,"y":-27976,"d":false,"t":924},{"x":-17736,"y":-27552,"d":false,"t":925},{"x":-18176,"y":-27264,"d":false,"t":926},{"x":-18862,"y":-26794,"d":false,"t":927},{"x":-19315,"y":-26469,"d":false,"t":928},{"x":-19891,"y":-26039,"d":false,"t":929},{"x":23170,"y":-23170,"d":false,"t":930},{"x":23170,"y":-23170,"d":false,"t":931},{"x":-20601,"y":-25481,"d":false,"t":932},{"x":23170,"y":-23170,"d":false,"t":933},{"x":-21190,"y":-24993,"d":false,"t":934},{"x":23170,"y":-23170,"d":false,"t":935},{"x":-21769,"y":-24490,"d":false,"t":936},{"x":23170,"y":-23170,"d":false,"t":937},{"x":23170,"y":-23170,"d":false,"t":938},{"x":-22248,"y":-24056,"d":false,"t":939},{"x":23170,"y":-23170,"d":false,"t":940},{"x":-22896,"y":-23441,"d":false,"t":941},{"x":28097,"y":16858,"d":false,"t":942},{"x":27906,"y":17173,"d":false,"t":943},{"x":27990,"y":17037,"d":false,"t":944},{"x":28097,"y":16858,"d":false,"t":945},{"x":27786,"y":17366,"d":false,"t":946},{"x":25244,"y":20891,"d":false,"t":947},{"x":25491,"y":20589,"d":false,"t":948},{"x":25804,"y":20195,"d":false,"t":949},{"x":25064,"y":21106,"d":false,"t":950},{"x":25431,"y":20663,"d":false,"t":951},{"x":25014,"y":21166,"d":false,"t":952},{"x":24077,"y":22225,"d":false,"t":953},{"x":23679,"y":22649,"d":false,"t":954},{"x":23756,"y":22568,"d":false,"t":955},{"x":23861,"y":22457,"d":false,"t":956},{"x":24762,"y":21460,"d":false,"t":957},{"x":23587,"y":22745,"d":false,"t":958},{"t":959,"d":false,"y":22692,"x":23638},{"t":960,"d":false,"y":22625,"x":23702},{"t":961,"d":false,"y":22535,"x":23787},{"t":962,"d":false,"y":23170,"x":23170},{"t":963,"d":false,"y":23170,"x":23170},{"t":964,"d":false,"y":23170,"x":23170},{"t":965,"d":false,"y":23170,"x":23170},{"t":966,"d":false,"y":22598,"x":23728},{"t":967,"d":false,"y":23170,"x":23170},{"t":968,"d":false,"y":23170,"x":23170},{"t":969,"d":false,"y":30118,"x":12908},{"t":970,"d":false,"y":30246,"x":12603},{"t":971,"d":false,"y":30118,"x":12908},{"t":972,"d":false,"y":30299,"x":12476},{"t":973,"d":false,"y":32087,"x":6639},{"t":974,"d":false,"y":32131,"x":6426},{"t":975,"d":false,"y":32188,"x":6131},{"t":976,"d":false,"y":31896,"x":7505},{"t":977,"d":false,"y":32604,"x":3260},{"t":978,"d":false,"y":32670,"x":2513},{"t":979,"d":false,"y":32632,"x":2967},{"t":980,"d":false,"y":32567,"x":3619},{"t":981,"d":false,"y":28508,"x":16155},{"t":982,"d":false,"y":28382,"x":16374},{"t":983,"d":false,"y":28526,"x":16123},{"t":984,"d":false,"y":28357,"x":16417},{"t":985,"d":false,"y":28559,"x":16064},{"t":986,"d":false,"y":25320,"x":20799},{"t":987,"d":false,"y":25090,"x":21075},{"t":988,"d":false,"y":25360,"x":20749},{"t":989,"d":false,"y":25064,"x":21106},{"t":990,"d":false,"y":25431,"x":20663},{"t":991,"d":false,"y":24397,"x":21873},{"t":992,"d":false,"y":24077,"x":22225},{"t":993,"d":false,"y":24198,"x":22094},{"t":994,"d":false,"y":24356,"x":21920},{"y":23861,"t":995,"x":22457,"d":false},{"y":24011,"t":996,"x":22296,"d":false},{"y":23603,"t":997,"x":22729,"d":false},{"y":23657,"t":998,"x":22672,"d":false},{"y":23170,"t":999,"x":23170,"d":false},{"y":23787,"t":1000,"x":22535,"d":false},{"y":23905,"t":1001,"x":22411,"d":false},{"y":32460,"t":1002,"x":-4477,"d":false},{"y":32534,"t":1003,"x":-3904,"d":false},{"y":32438,"t":1004,"x":-4634,"d":false},{"y":32543,"t":1005,"x":-3829,"d":false},{"y":32689,"t":1006,"x":-2254,"d":false},{"y":32741,"t":1007,"x":-1310,"d":false},{"y":32730,"t":1008,"x":-1559,"d":false},{"y":32710,"t":1009,"x":-1924,"d":false},{"y":29104,"t":1010,"x":15054,"d":false},{"y":29071,"t":1011,"x":15117,"d":false},{"y":28766,"t":1012,"x":15691,"d":false},{"y":28644,"t":1013,"x":15913,"d":false},{"y":28912,"t":1014,"x":15420,"d":false},{"y":25402,"t":1015,"x":20698,"d":false},{"y":25691,"t":1016,"x":20339,"d":false},{"y":25468,"t":1017,"x":20617,"d":false},{"y":25865,"t":1018,"x":20117,"d":false},{"y":25587,"t":1019,"x":20469,"d":false},{"y":24442,"t":1020,"x":21823,"d":false},{"y":24114,"t":1021,"x":22185,"d":false},{"y":24246,"t":1022,"x":22041,"d":false},{"y":24419,"t":1023,"x":21849,"d":false},{"y":23905,"t":1024,"x":22411,"d":false},{"y":24077,"t":1025,"x":22225,"d":false},{"y":23620,"t":1026,"x":22711,"d":false},{"y":23679,"t":1027,"x":22649,"d":false},{"y":23170,"t":1028,"x":23170,"d":false},{"y":23170,"t":1029,"x":23170,"d":false},{"y":23170,"t":1030,"x":23170,"d":false},{"y":24154,"t":1031,"x":22141,"d":false},{"y":24490,"t":1032,"x":21769,"d":false},{"y":23170,"t":1033,"x":23170,"d":false},{"y":23170,"t":1034,"x":23170,"d":false},{"y":-32144,"t":1035,"x":-6358,"d":false},{"y":31789,"t":1036,"x":7947,"d":false},{"y":32767,"t":1063,"x":0,"d":false},{"y":32767,"t":1064,"x":0,"d":false},{"y":32767,"t":1065,"x":0,"d":false},{"y":32767,"t":1066,"x":0,"d":false},{"y":32470,"t":1067,"x":4400,"d":false},{"y":32517,"t":1068,"x":4043,"d":false},{"y":32559,"t":1069,"x":3686,"d":false},{"y":32597,"t":1070,"x":3330,"d":false},{"y":32631,"t":1071,"x":2982,"d":false},{"y":32661,"t":1072,"x":2634,"d":false},{"y":32688,"t":1073,"x":2278,"d":false},{"y":32710,"t":1074,"x":1929,"d":false},{"y":32729,"t":1075,"x":1575,"d":false},{"y":32744,"t":1076,"x":1226,"d":false},{"y":32755,"t":1077,"x":876,"d":false},{"y":32763,"t":1078,"x":524,"d":false},{"y":32767,"t":1079,"x":175,"d":false},{"y":32767,"t":1080,"x":-175,"d":false},{"y":32763,"t":1081,"x":-524,"d":false},{"y":32755,"t":1082,"x":-871,"d":false},{"y":32744,"t":1083,"x":-1222,"d":false},{"y":32729,"t":1084,"x":-1571,"d":false},{"y":32711,"t":1085,"x":-1919,"d":false},{"y":32689,"t":1086,"x":-2266,"d":false},{"y":32663,"t":1087,"x":-2613,"d":false},{"y":32633,"t":1088,"x":-2959,"d":false},{"y":-32600,"t":1089,"x":3303,"d":false},{"y":-32633,"t":1090,"x":2959,"d":false},{"y":-32663,"t":1091,"x":2606,"d":false},{"y":-32689,"t":1092,"x":2260,"d":false},{"x":1914,"y":-32711,"t":1093,"d":false},{"x":1563,"y":-32730,"t":1094,"d":false},{"x":1213,"y":-32745,"t":1095,"d":false},{"x":867,"y":-32756,"t":1096,"d":false},{"x":520,"y":-32763,"t":1097,"d":false},{"x":173,"y":-32767,"t":1098,"d":false},{"x":-173,"y":-32767,"t":1099,"d":false},{"x":-520,"y":-32763,"t":1100,"d":false},{"x":-867,"y":-32756,"t":1101,"d":false},{"x":-1210,"y":-32745,"t":1102,"d":false},{"x":-1554,"y":-32730,"t":1103,"d":false},{"x":-1899,"y":-32712,"t":1104,"d":false},{"x":-2249,"y":-32690,"t":1105,"d":false},{"x":-2592,"y":-32664,"t":1106,"d":false},{"x":-2935,"y":-32635,"t":1107,"d":false},{"x":-3286,"y":-32602,"t":1108,"d":false},{"x":-3619,"y":-32567,"t":1109,"d":false},{"x":-3969,"y":-32526,"t":1110,"d":false},{"x":-32767,"y":0,"t":1111,"d":false},{"x":32767,"y":0,"t":1112,"d":false},{"x":-32767,"y":0,"t":1113,"d":false},{"x":32767,"y":0,"t":1114,"d":false},{"x":-32767,"y":0,"t":1115,"d":false},{"x":32767,"y":0,"t":1116,"d":false},{"x":-32767,"y":0,"t":1117,"d":false},{"x":32767,"y":0,"t":1118,"d":false},{"x":-32767,"y":0,"t":1119,"d":false},{"x":32767,"y":0,"t":1120,"d":false},{"x":-32767,"y":0,"t":1121,"d":false},{"x":32767,"y":0,"t":1122,"d":false},{"x":-32767,"y":0,"t":1123,"d":false},{"x":32767,"y":0,"t":1124,"d":false},{"x":-32767,"y":0,"t":1125,"d":false},{"x":32767,"y":0,"t":1126,"d":false},{"x":-32767,"y":0,"t":1127,"d":false},{"x":32767,"y":0,"t":1128,"d":false},{"y":0,"d":false,"t":1129,"x":-32767},{"y":0,"d":false,"t":1130,"x":32767},{"y":0,"d":false,"t":1131,"x":-32767},{"y":0,"d":false,"t":1132,"x":32767},{"y":0,"d":false,"t":1133,"x":-32767},{"y":0,"d":false,"t":1134,"x":32767},{"y":0,"d":false,"t":1135,"x":-32767},{"y":0,"d":false,"t":1136,"x":32767},{"y":0,"d":false,"t":1137,"x":32767},{"y":0,"d":false,"t":1138,"x":32767},{"y":0,"d":false,"t":1139,"x":32767},{"y":-32505,"d":false,"t":1140,"x":-4135},{"y":26214,"d":false,"t":1141,"x":19660},{"y":23170,"d":false,"t":1142,"x":23170},{"y":-23170,"d":false,"t":1143,"x":-23170},{"y":23170,"d":false,"t":1144,"x":23170},{"y":-23170,"d":false,"t":1145,"x":-23170},{"y":23170,"d":false,"t":1146,"x":23170},{"y":-23170,"d":false,"t":1147,"x":-23170},{"y":23170,"d":false,"t":1148,"x":23170},{"y":-23170,"d":false,"t":1149,"x":-23170},{"y":23170,"d":false,"t":1150,"x":23170},{"y":-23170,"d":false,"t":1151,"x":-23170},{"y":23170,"d":false,"t":1152,"x":23170},{"y":-23170,"d":false,"t":1153,"x":-23170},{"y":23170,"d":false,"t":1154,"x":23170},{"y":-23170,"d":false,"t":1155,"x":-23170},{"y":23170,"d":false,"t":1156,"x":23170},{"y":-23170,"d":false,"t":1157,"x":-23170},{"y":23170,"d":false,"t":1158,"x":23170},{"y":-23170,"d":false,"t":1159,"x":-23170},{"y":23170,"d":false,"t":1160,"x":23170},{"y":-23170,"d":false,"t":1161,"x":-23170},{"y":23170,"d":false,"t":1162,"x":23170},{"y":-23170,"d":false,"t":1163,"x":-23170},{"y":23170,"d":false,"t":1164,"x":23170},{"t":1165,"x":-23170,"y":-23170,"d":false},{"t":1166,"x":23170,"y":23170,"d":false},{"t":1167,"x":-23170,"y":-23170,"d":false},{"t":1168,"x":1924,"y":32710,"d":false},{"t":1169,"x":2513,"y":32670,"d":false},{"t":1170,"x":-3361,"y":-32594,"d":false},{"t":1171,"x":2513,"y":32670,"d":false},{"t":1172,"x":-3361,"y":-32594,"d":false},{"t":1173,"x":2513,"y":32670,"d":false},{"t":1174,"x":-31962,"y":-7217,"d":false},{"t":1175,"x":-31987,"y":-7108,"d":false},{"t":1176,"x":-32019,"y":-6961,"d":false},{"t":1177,"x":-31789,"y":-7947,"d":false},{"t":1178,"x":-30681,"y":11505,"d":false},{"t":1179,"x":-30498,"y":11981,"d":false},{"t":1180,"x":-30246,"y":12603,"d":false},{"t":1181,"x":-30423,"y":12169,"d":false},{"t":1182,"x":-30299,"y":12476,"d":false},{"t":1183,"x":-26539,"y":19218,"d":false},{"t":1184,"x":-26456,"y":19333,"d":false},{"t":1185,"x":-26899,"y":18712,"d":false},{"t":1186,"x":-26379,"y":19437,"d":false},{"t":1187,"x":-26214,"y":19660,"d":false},{"t":1188,"x":-24818,"y":21395,"d":false},{"t":1189,"x":-24542,"y":21711,"d":false},{"t":1190,"x":-24726,"y":21501,"d":false},{"t":1191,"x":-24966,"y":21221,"d":false},{"t":1192,"x":-24570,"y":21679,"d":false},{"t":1193,"x":-24879,"y":21324,"d":false},{"t":1194,"x":-23603,"y":22729,"d":false},{"t":1195,"x":-23657,"y":22672,"d":false},{"t":1196,"x":-23728,"y":22598,"d":false},{"t":1197,"x":-23822,"y":22499,"d":false},{"t":1198,"x":-23170,"y":23170,"d":false},{"t":1199,"x":-23170,"y":23170,"d":false},{"t":1200,"x":-23620,"y":22711,"d":false},{"y":22649,"t":1201,"d":false,"x":-23679},{"y":22568,"t":1202,"d":false,"x":-23756},{"y":23170,"t":1203,"d":false,"x":-23170},{"y":13857,"t":1204,"d":false,"x":-29693},{"y":13731,"t":1205,"d":false,"x":-29751},{"y":13065,"t":1206,"d":false,"x":-30050},{"y":14027,"t":1207,"d":false,"x":-29613},{"y":13134,"t":1208,"d":false,"x":-30020},{"y":19660,"t":1209,"d":false,"x":-26214},{"y":19827,"t":1210,"d":false,"x":-26088},{"y":20617,"t":1211,"d":false,"x":-25468},{"y":20117,"t":1212,"d":false,"x":-25865},{"y":20469,"t":1213,"d":false,"x":-25587},{"y":21823,"t":1214,"d":false,"x":-24442},{"y":21647,"t":1215,"d":false,"x":-24599},{"y":22041,"t":1216,"d":false,"x":-24246},{"y":21849,"t":1217,"d":false,"x":-24419},{"y":21577,"t":1218,"d":false,"x":-24660},{"y":22225,"t":1219,"d":false,"x":-24077},{"y":22711,"t":1220,"d":false,"x":-23620},{"y":22649,"t":1221,"d":false,"x":-23679},{"y":23170,"t":1222,"d":false,"x":-23170},{"y":22499,"t":1223,"d":false,"x":-23822},{"y":22358,"t":1224,"d":false,"x":-23954},{"y":22745,"t":1225,"d":false,"x":-23587},{"y":23170,"t":1226,"d":false,"x":-23170},{"y":23170,"t":1227,"d":false,"x":-23170},{"y":23170,"t":1228,"d":false,"x":-23170},{"y":23170,"t":1229,"d":false,"x":-23170},{"y":22296,"t":1230,"d":false,"x":-24011},{"y":22729,"t":1231,"d":false,"x":-23603},{"y":23170,"t":1232,"d":false,"x":-23170},{"y":23170,"t":1233,"d":false,"x":-23170},{"y":23170,"t":1234,"d":false,"x":-23170},{"y":23170,"t":1235,"d":false,"x":-23170},{"y":23170,"t":1236,"d":false,"x":-23170},{"t":1237,"d":false,"y":23170,"x":-23170},{"t":1238,"d":false,"y":23170,"x":-23170},{"t":1239,"d":false,"y":23170,"x":-23170},{"t":1240,"d":false,"y":23170,"x":-23170},{"t":1241,"d":false,"y":23170,"x":-23170},{"t":1242,"d":false,"y":23170,"x":-23170},{"t":1243,"d":false,"y":23170,"x":-23170},{"t":1244,"d":false,"y":23170,"x":-23170},{"t":1245,"d":false,"y":23170,"x":-23170},{"t":1246,"d":false,"y":23170,"x":-23170},{"t":1247,"d":false,"y":23170,"x":-23170},{"t":1248,"d":false,"y":23170,"x":-23170},{"t":1249,"d":false,"y":23170,"x":-23170},{"t":1250,"d":false,"y":23170,"x":-23170},{"t":1251,"d":false,"y":23170,"x":-23170},{"t":1252,"d":false,"y":23170,"x":-23170},{"t":1253,"d":false,"y":23170,"x":-23170},{"t":1254,"d":false,"y":22711,"x":-23620},{"t":1255,"d":false,"y":23170,"x":-23170},{"t":1256,"d":false,"y":23170,"x":-23170},{"t":1257,"d":false,"y":23170,"x":-23170},{"t":1258,"d":false,"y":23170,"x":-23170},{"t":1259,"d":false,"y":23170,"x":-23170},{"t":1260,"d":false,"y":23170,"x":-23170},{"t":1261,"d":false,"y":23170,"x":-23170},{"t":1262,"d":false,"y":23170,"x":-23170},{"t":1263,"d":false,"y":23170,"x":-23170},{"t":1264,"d":false,"y":-3372,"x":-32593},{"t":1265,"d":false,"y":-2613,"x":-32663},{"t":1266,"d":false,"y":-3107,"x":-32619},{"t":1267,"d":false,"y":-3829,"x":-32543},{"t":1268,"d":false,"y":15054,"x":-29104},{"t":1269,"d":false,"y":14654,"x":-29308},{"t":1270,"d":false,"y":14654,"x":-29308},{"t":1271,"d":false,"y":14027,"x":-29613},{"t":1272,"d":false,"y":15420,"x":-28912},{"y":20698,"t":1273,"x":-25402,"d":false},{"y":20339,"t":1274,"x":-25691,"d":false},{"y":20617,"t":1275,"x":-25468,"d":false},{"y":20117,"t":1276,"x":-25865,"d":false},{"y":20469,"t":1277,"x":-25587,"d":false},{"y":21823,"t":1278,"x":-24442,"d":false},{"y":22185,"t":1279,"x":-24114,"d":false},{"y":22041,"t":1280,"x":-24246,"d":false},{"y":21849,"t":1281,"x":-24419,"d":false},{"y":22411,"t":1282,"x":-23905,"d":false},{"y":22225,"t":1283,"x":-24077,"d":false},{"y":21920,"t":1284,"x":-24356,"d":false},{"y":23170,"t":1285,"x":-23170,"d":false},{"y":23170,"t":1286,"x":-23170,"d":false},{"y":23170,"t":1287,"x":-23170,"d":false},{"y":-10389,"t":1288,"x":31076,"d":false},{"y":-14654,"t":1289,"x":-29308,"d":false},{"y":23170,"t":1290,"x":23170,"d":false},{"y":-23170,"t":1291,"x":-23170,"d":false},{"y":23170,"t":1292,"x":23170,"d":false},{"y":-23170,"t":1293,"x":-23170,"d":false},{"y":23170,"t":1294,"x":23170,"d":false},{"y":-3619,"t":1295,"x":-32567,"d":false},{"y":-10280,"t":1296,"x":31113,"d":false},{"y":0,"t":1297,"x":-32767,"d":false},{"y":0,"t":1298,"x":-32767,"d":false},{"y":-9841,"t":1299,"x":31254,"d":false},{"y":2513,"t":1300,"x":-32670,"d":false},{"y":-9841,"t":1301,"x":31254,"d":false},{"y":4982,"t":1302,"x":-32386,"d":false},{"y":-9898,"t":1303,"x":31236,"d":false},{"y":7368,"t":1304,"x":-31928,"d":false},{"y":-9898,"t":1305,"x":31236,"d":false},{"y":7368,"t":1306,"x":-31928,"d":false},{"y":-9872,"t":1307,"x":31245,"d":false},{"y":7368,"t":1308,"x":-31928,"d":false},{"d":false,"x":31261,"y":-9820,"t":1309},{"d":false,"x":-31318,"y":9636,"t":1310},{"d":false,"x":31269,"y":-9794,"t":1311},{"d":false,"x":-31318,"y":9636,"t":1312},{"d":false,"x":31251,"y":-9850,"t":1313},{"d":false,"x":-31318,"y":9636,"t":1314},{"d":false,"x":31260,"y":-9824,"t":1315},{"d":false,"x":-31318,"y":9636,"t":1316},{"d":false,"x":31268,"y":-9799,"t":1317},{"d":false,"x":-31318,"y":9636,"t":1318},{"d":false,"x":31275,"y":-9774,"t":1319},{"d":false,"x":3491,"y":-32581,"t":1320},{"d":false,"x":4064,"y":-32514,"t":1321},{"d":false,"x":3260,"y":-32604,"t":1322},{"d":false,"x":2044,"y":-32703,"t":1323},{"d":false,"x":2335,"y":-32684,"t":1324},{"d":false,"x":1364,"y":-32739,"t":1325},{"d":false,"x":1636,"y":-32726,"t":1326},{"d":false,"x":1023,"y":-32751,"t":1327},{"d":false,"x":1170,"y":-32746,"t":1328},{"d":false,"x":1364,"y":-32739,"t":1329},{"d":false,"x":1636,"y":-32726,"t":1330},{"d":false,"x":0,"y":-32767,"t":1331},{"d":false,"x":0,"y":-32767,"t":1332},{"d":false,"x":0,"y":-32767,"t":1333},{"d":false,"x":0,"y":-32767,"t":1334},{"d":false,"x":0,"y":-32767,"t":1335},{"d":false,"x":0,"y":-32767,"t":1336},{"d":false,"x":0,"y":-32767,"t":1337},{"d":false,"x":0,"y":-32767,"t":1338},{"d":false,"x":0,"y":-32767,"t":1339},{"d":false,"x":0,"y":-32767,"t":1340},{"d":false,"x":0,"y":-32767,"t":1341},{"d":false,"x":0,"y":-32767,"t":1342},{"d":false,"x":-14654,"y":-29308,"t":1343},{"d":false,"x":-14245,"y":-29508,"t":1344},{"x":-14179,"d":false,"t":1345,"y":-29540},{"x":-13559,"d":false,"t":1346,"y":-29830},{"x":-14654,"d":false,"t":1347,"y":-29308},{"x":-19936,"d":false,"t":1348,"y":-26004},{"x":-19504,"d":false,"t":1349,"y":-26330},{"x":-19660,"d":false,"t":1350,"y":-26214},{"x":-19858,"d":false,"t":1351,"y":-26064},{"x":-19185,"d":false,"t":1352,"y":-26564},{"x":-20244,"d":false,"t":1353,"y":-25765},{"x":-21769,"d":false,"t":1354,"y":-24490},{"x":-22141,"d":false,"t":1355,"y":-24154},{"x":-21984,"d":false,"t":1356,"y":-24298},{"x":-21769,"d":false,"t":1357,"y":-24490},{"x":-22358,"d":false,"t":1358,"y":-23954},{"x":-22745,"d":false,"t":1359,"y":-23587},{"x":-22225,"d":false,"t":1360,"y":-24077},{"x":-22094,"d":false,"t":1361,"y":-24198},{"x":-22568,"d":false,"t":1362,"y":-23756},{"x":-22457,"d":false,"t":1363,"y":-23861},{"x":-22296,"d":false,"t":1364,"y":-24011},{"x":-23170,"d":false,"t":1365,"y":-23170},{"x":-23170,"d":false,"t":1366,"y":-23170},{"x":-23170,"d":false,"t":1367,"y":-23170},{"x":-23170,"d":false,"t":1368,"y":-23170},{"x":-22411,"d":false,"t":1369,"y":-23905},{"x":-22225,"d":false,"t":1370,"y":-24077},{"x":-23170,"d":false,"t":1371,"y":-23170},{"x":-23170,"d":false,"t":1372,"y":-23170},{"x":-23170,"d":false,"t":1373,"y":-23170},{"x":-23170,"d":false,"t":1374,"y":-23170},{"x":-23170,"d":false,"t":1375,"y":-23170},{"x":-23170,"d":false,"t":1376,"y":-23170},{"x":-23170,"d":false,"t":1377,"y":-23170},{"x":-23170,"d":false,"t":1378,"y":-23170},{"x":-23170,"d":false,"t":1379,"y":-23170},{"x":-23170,"d":false,"t":1380,"y":-23170},{"t":1381,"d":false,"x":-22296,"y":-24011},{"t":1382,"d":false,"x":-23170,"y":-23170},{"t":1383,"d":false,"x":-23170,"y":-23170},{"t":1384,"d":false,"x":-23170,"y":-23170},{"t":1385,"d":false,"x":-23170,"y":-23170},{"t":1386,"d":false,"x":-23170,"y":-23170},{"t":1387,"d":false,"x":-24077,"y":-22225},{"t":1388,"d":false,"x":-23170,"y":-23170},{"t":1389,"d":false,"x":-23170,"y":-23170},{"t":1390,"d":false,"x":-23170,"y":-23170},{"t":1391,"d":false,"x":-23170,"y":-23170},{"t":1392,"d":false,"x":-23170,"y":-23170},{"t":1393,"d":false,"x":-23170,"y":-23170},{"t":1394,"d":false,"x":-23170,"y":-23170},{"t":1395,"d":false,"x":-23170,"y":-23170},{"t":1396,"d":false,"x":26985,"y":18587},{"t":1397,"d":false,"x":-25172,"y":-20977},{"t":1398,"d":false,"x":27029,"y":18523},{"t":1399,"d":false,"x":-26664,"y":-19045},{"t":1400,"d":false,"x":27043,"y":18503},{"t":1401,"d":false,"x":-26664,"y":-19045},{"t":1402,"d":false,"x":27057,"y":18483},{"t":1403,"d":false,"x":-26664,"y":-19045},{"t":1404,"d":false,"x":27101,"y":18417},{"t":1405,"d":false,"x":-26664,"y":-19045},{"t":1406,"d":false,"x":27115,"y":18396},{"t":1407,"d":false,"x":-26664,"y":-19045},{"t":1408,"d":false,"x":27144,"y":18354},{"t":1409,"d":false,"x":-26664,"y":-19045},{"t":1410,"d":false,"x":27189,"y":18287},{"t":1411,"d":false,"x":-26664,"y":-19045},{"t":1412,"d":false,"x":27204,"y":18265},{"t":1413,"d":false,"x":-26664,"y":-19045},{"t":1414,"d":false,"x":27219,"y":18243},{"t":1415,"d":false,"x":27458,"y":17882},{"t":1416,"d":false,"x":-26844,"y":-18791},{"y":-16257,"d":false,"t":1417,"x":-28450},{"y":18153,"d":false,"t":1418,"x":27279},{"y":17744,"d":false,"t":1419,"x":27547},{"y":-18791,"d":false,"t":1420,"x":-26844},{"y":17764,"d":false,"t":1421,"x":27534},{"y":-18791,"d":false,"t":1422,"x":-26844},{"y":17739,"d":false,"t":1423,"x":27550},{"y":-15691,"d":false,"t":1424,"x":-28766},{"y":17669,"d":false,"t":1425,"x":27595},{"y":-18791,"d":false,"t":1426,"x":-26844},{"y":17643,"d":false,"t":1427,"x":27611},{"y":-18791,"d":false,"t":1428,"x":-26844},{"y":17618,"d":false,"t":1429,"x":27628},{"y":-15691,"d":false,"t":1430,"x":-28766},{"y":17546,"d":false,"t":1431,"x":27673},{"y":-18791,"d":false,"t":1432,"x":-26844},{"y":17520,"d":false,"t":1433,"x":27690},{"y":-15691,"d":false,"t":1434,"x":-28766},{"y":17448,"d":false,"t":1435,"x":27735},{"y":-18791,"d":false,"t":1436,"x":-26844},{"y":-16257,"d":false,"t":1437,"x":-28450},{"y":18354,"d":false,"t":1438,"x":27144},{"y":-19045,"d":false,"t":1439,"x":-26664},{"y":18287,"d":false,"t":1440,"x":27189},{"y":-19045,"d":false,"t":1441,"x":-26664},{"y":18265,"d":false,"t":1442,"x":27204},{"y":-16257,"d":false,"t":1443,"x":-28450},{"y":18243,"d":false,"t":1444,"x":27219},{"y":-19045,"d":false,"t":1445,"x":-26664},{"y":18176,"d":false,"t":1446,"x":27264},{"y":-19045,"d":false,"t":1447,"x":-26664},{"y":18153,"d":false,"t":1448,"x":27279},{"y":17744,"d":false,"t":1449,"x":27547},{"y":-18791,"d":false,"t":1450,"x":-26844},{"y":17764,"d":false,"t":1451,"x":27534},{"y":-17592,"d":false,"t":1452,"x":-27644},{"t":1453,"d":false,"y":17739,"x":27550},{"t":1454,"d":false,"y":-17592,"x":-27644},{"t":1455,"d":false,"y":17714,"x":27566},{"t":1456,"d":false,"y":-17592,"x":-27644},{"t":1457,"d":false,"y":17643,"x":27611},{"t":1458,"d":false,"y":-17592,"x":-27644},{"t":1459,"d":false,"y":17618,"x":27628},{"t":1460,"d":false,"y":-17592,"x":-27644},{"t":1461,"d":false,"y":17592,"x":27644},{"t":1462,"d":false,"y":-17592,"x":-27644},{"t":1463,"d":false,"y":17520,"x":27690},{"t":1464,"d":false,"y":-17592,"x":-27644},{"t":1465,"d":false,"y":17494,"x":27707},{"t":1466,"d":false,"y":-17592,"x":-27644},{"t":1467,"d":false,"y":-16257,"x":-28450},{"t":1468,"d":false,"y":18462,"x":27071},{"t":1469,"d":false,"y":-19045,"x":-26664},{"t":1470,"d":false,"y":18396,"x":27115},{"t":1471,"d":false,"y":-19045,"x":-26664},{"t":1472,"d":false,"y":18441,"x":27085},{"t":1473,"d":false,"y":-19045,"x":-26664},{"t":1474,"d":false,"y":18375,"x":27130},{"t":1475,"d":false,"y":-16257,"x":-28450},{"t":1476,"d":false,"y":18354,"x":27144},{"t":1477,"d":false,"y":-19045,"x":-26664},{"t":1478,"d":false,"y":18287,"x":27189},{"t":1479,"d":false,"y":-19045,"x":-26664},{"t":1480,"d":false,"y":18332,"x":27159},{"t":1481,"d":false,"y":-19045,"x":-26664},{"t":1482,"d":false,"y":18265,"x":27204},{"t":1483,"d":false,"y":-16257,"x":-28450},{"t":1484,"d":false,"y":18243,"x":27219},{"t":1485,"d":false,"y":-19045,"x":-26664},{"t":1486,"d":false,"y":18176,"x":27264},{"t":1487,"d":false,"y":-19045,"x":-26664},{"t":1488,"d":false,"y":18221,"x":27234},{"x":-28450,"y":-16257,"d":false,"t":1489},{"x":27279,"y":18153,"d":false,"t":1490},{"x":27547,"y":17744,"d":false,"t":1491},{"x":-26844,"y":-18791,"d":false,"t":1492},{"x":-26664,"y":-19045,"d":false,"t":1493},{"x":27339,"y":18062,"d":false,"t":1494},{"x":27534,"y":17764,"d":false,"t":1495},{"x":-27644,"y":-17592,"d":false,"t":1496},{"x":27505,"y":17809,"d":false,"t":1497},{"x":-27644,"y":-17592,"d":false,"t":1498},{"x":27611,"y":17643,"d":false,"t":1499},{"x":-27644,"y":-17592,"d":false,"t":1500},{"x":27615,"y":17637,"d":false,"t":1501},{"x":-27644,"y":-17592,"d":false,"t":1502},{"x":27619,"y":17631,"d":false,"t":1503},{"x":-27644,"y":-17592,"d":false,"t":1504},{"x":27623,"y":17625,"d":false,"t":1505},{"x":-27644,"y":-17592,"d":false,"t":1506},{"x":27627,"y":17619,"d":false,"t":1507},{"x":-27644,"y":-17592,"d":false,"t":1508},{"x":27679,"y":17537,"d":false,"t":1509},{"x":-27644,"y":-17592,"d":false,"t":1510},{"x":27684,"y":17530,"d":false,"t":1511},{"x":-27644,"y":-17592,"d":false,"t":1512},{"x":27720,"y":17473,"d":false,"t":1513},{"x":-27644,"y":-17592,"d":false,"t":1514},{"x":27694,"y":17514,"d":false,"t":1515},{"x":-27644,"y":-17592,"d":false,"t":1516},{"x":27749,"y":17426,"d":false,"t":1517},{"x":-27644,"y":-17592,"d":false,"t":1518},{"x":27755,"y":17417,"d":false,"t":1519},{"x":-27644,"y":-17592,"d":false,"t":1520},{"x":27761,"y":17407,"d":false,"t":1521},{"x":-27644,"y":-17592,"d":false,"t":1522},{"x":27799,"y":17346,"d":false,"t":1523},{"x":-27644,"y":-17592,"d":false,"t":1524},{"d":false,"t":1525,"x":27858,"y":17251},{"d":false,"t":1526,"x":-28766,"y":-15691},{"d":false,"t":1527,"x":27898,"y":17186},{"d":false,"t":1528,"x":-27644,"y":-17592},{"d":false,"t":1529,"x":27906,"y":17173},{"d":false,"t":1530,"x":-27644,"y":-17592},{"d":false,"t":1531,"x":27881,"y":17214},{"d":false,"t":1532,"x":28268,"y":16571},{"d":false,"t":1533,"x":-27563,"y":-17719},{"d":false,"t":1534,"x":28249,"y":16603},{"d":false,"t":1535,"x":-28450,"y":-16257},{"d":false,"t":1536,"x":28262,"y":16581},{"d":false,"t":1537,"x":-27563,"y":-17719},{"d":false,"t":1538,"x":28276,"y":16558},{"d":false,"t":1539,"x":-28450,"y":-16257},{"d":false,"t":1540,"x":28378,"y":16382},{"d":false,"t":1541,"x":-28450,"y":-16257},{"d":false,"t":1542,"x":28393,"y":16356},{"d":false,"t":1543,"x":-28450,"y":-16257},{"d":false,"t":1544,"x":28409,"y":16328},{"d":false,"t":1545,"x":-28450,"y":-16257},{"d":false,"t":1546,"x":28425,"y":16300},{"d":false,"t":1547,"x":-28450,"y":-16257},{"d":false,"t":1548,"x":28500,"y":16168},{"d":false,"t":1549,"x":28766,"y":15691},{"d":false,"t":1550,"x":-28644,"y":-15913},{"d":false,"t":1551,"x":28824,"y":15584},{"d":false,"t":1552,"x":-28644,"y":-15913},{"d":false,"t":1553,"x":28881,"y":15477},{"d":false,"t":1554,"x":-31086,"y":10362},{"d":false,"t":1555,"x":28972,"y":15306},{"d":false,"t":1556,"x":-32268,"y":5694},{"d":false,"t":1557,"x":29144,"y":14977},{"d":false,"t":1558,"x":-32767,"y":0},{"d":false,"t":1559,"x":29200,"y":14868},{"d":false,"t":1560,"x":-32543,"y":-3829},{"y":14760,"x":29254,"d":false,"t":1561},{"y":-6039,"x":-32206,"d":false,"t":1562},{"y":14654,"x":29308,"d":false,"t":1563},{"y":-7947,"x":-31789,"d":false,"t":1564},{"y":14496,"x":29386,"d":false,"t":1565},{"y":-9774,"x":-31275,"d":false,"t":1566},{"y":14392,"x":29437,"d":false,"t":1567},{"y":13914,"x":29666,"d":false,"t":1568},{"y":-11328,"x":-30747,"d":false,"t":1569},{"y":13814,"x":29713,"d":false,"t":1570},{"y":-11328,"x":-30747,"d":false,"t":1571},{"y":13657,"x":29785,"d":false,"t":1572},{"y":-12715,"x":-30199,"d":false,"t":1573},{"y":13657,"x":29785,"d":false,"t":1574},{"y":-12715,"x":-30199,"d":false,"t":1575},{"y":13500,"x":29857,"d":false,"t":1576},{"y":-12715,"x":-30199,"d":false,"t":1577},{"y":13392,"x":29905,"d":false,"t":1578},{"y":-12715,"x":-30199,"d":false,"t":1579},{"y":13332,"x":29932,"d":false,"t":1580},{"y":-12715,"x":-30199,"d":false,"t":1581},{"y":13051,"x":30056,"d":false,"t":1582},{"y":12489,"x":30293,"d":false,"t":1583},{"y":-13559,"x":-29830,"d":false,"t":1584},{"y":12031,"x":30478,"d":false,"t":1585},{"y":11402,"x":30719,"d":false,"t":1586},{"y":-12767,"x":-30177,"d":false,"t":1587},{"y":11004,"x":30864,"d":false,"t":1588},{"y":10201,"x":31139,"d":false,"t":1589},{"y":9391,"x":31392,"d":false,"t":1590},{"y":-11702,"x":-30606,"d":false,"t":1591},{"y":8984,"x":31511,"d":false,"t":1592},{"y":8168,"x":31733,"d":false,"t":1593},{"y":-11328,"x":-30747,"d":false,"t":1594},{"y":7758,"x":31835,"d":false,"t":1595},{"y":7094,"x":31990,"d":false,"t":1596},{"d":false,"x":-31086,"t":1597,"y":-10362},{"d":false,"x":-32110,"t":1598,"y":-6529},{"d":false,"x":-32030,"t":1599,"y":-6911},{"d":false,"x":-31974,"t":1600,"y":-7164},{"d":false,"x":-31887,"t":1601,"y":-7542},{"d":false,"x":-31827,"t":1602,"y":-7792},{"d":false,"x":31757,"t":1603,"y":8072},{"d":false,"x":31857,"t":1604,"y":7667},{"d":false,"x":32002,"t":1605,"y":7038},{"d":false,"x":32105,"t":1606,"y":6555},{"d":false,"x":-32225,"t":1607,"y":-5933},{"d":false,"x":-32110,"t":1608,"y":-6531},{"d":false,"x":-31993,"t":1609,"y":-7079},{"d":false,"x":-31867,"t":1610,"y":-7626},{"d":false,"x":31764,"t":1611,"y":8043},{"d":false,"x":31867,"t":1612,"y":7626},{"d":false,"x":31993,"t":1613,"y":7079},{"d":false,"x":32110,"t":1614,"y":6531},{"d":false,"x":-32212,"t":1615,"y":-6006},{"d":false,"x":-32110,"t":1616,"y":-6531},{"d":false,"x":-31993,"t":1617,"y":-7079},{"d":false,"x":-31867,"t":1618,"y":-7626},{"d":false,"x":31732,"t":1619,"y":8171},{"d":false,"x":31867,"t":1620,"y":7626},{"d":false,"x":31993,"t":1621,"y":7079},{"d":false,"x":32110,"t":1622,"y":6531},{"d":false,"x":32216,"t":1623,"y":5981},{"d":false,"x":-32310,"t":1624,"y":-5453},{"d":false,"x":-32216,"t":1625,"y":-5981},{"d":false,"x":-32110,"t":1626,"y":-6531},{"d":false,"x":-31993,"t":1627,"y":-7079},{"d":false,"x":-31867,"t":1628,"y":-7626},{"d":false,"x":31732,"t":1629,"y":8171},{"d":false,"x":31867,"t":1630,"y":7626},{"d":false,"x":31993,"t":1631,"y":7079},{"d":false,"x":32110,"t":1632,"y":6531},{"x":32216,"t":1633,"d":false,"y":5981},{"x":-32314,"t":1634,"d":false,"y":-5431},{"x":-32216,"t":1635,"d":false,"y":-5981},{"x":-32110,"t":1636,"d":false,"y":-6531},{"x":-31993,"t":1637,"d":false,"y":-7079},{"x":-31874,"t":1638,"d":false,"y":-7596},{"x":-18651,"t":1639,"d":false,"y":-26941},{"x":-19273,"t":1640,"d":false,"y":-26500},{"x":-19437,"t":1641,"d":false,"y":-26379},{"x":-18563,"t":1642,"d":false,"y":-27001},{"x":-29071,"t":1643,"d":false,"y":-15117},{"x":-29308,"t":1644,"d":false,"y":-14654},{"x":-29308,"t":1645,"d":false,"y":-14654},{"x":-31910,"t":1646,"d":false,"y":-7446},{"x":-32767,"t":1647,"d":false,"y":0},{"x":-32767,"t":1648,"d":false,"y":0},{"x":-32767,"t":1649,"d":false,"y":0},{"x":-32767,"t":1650,"d":false,"y":0},{"x":-32767,"t":1651,"d":false,"y":0},{"x":-32767,"t":1652,"d":false,"y":0},{"x":-32767,"t":1653,"d":false,"y":0},{"x":-32767,"t":1654,"d":false,"y":0},{"x":-32767,"t":1655,"d":false,"y":0},{"x":-32767,"t":1656,"d":false,"y":0},{"x":-32767,"t":1657,"d":false,"y":0},{"x":-32767,"t":1658,"d":false,"y":0},{"x":-32767,"t":1659,"d":false,"y":0},{"x":-32767,"t":1660,"d":false,"y":0},{"x":-32767,"t":1661,"d":false,"y":0},{"x":-32767,"t":1662,"d":false,"y":0},{"x":-32767,"t":1663,"d":false,"y":0},{"x":-32767,"t":1664,"d":false,"y":0},{"x":-32767,"t":1665,"d":false,"y":0},{"x":-32767,"t":1666,"d":false,"y":0},{"x":-32767,"t":1667,"d":false,"y":0},{"x":-32767,"t":1668,"d":false,"y":0},{"d":false,"t":1669,"x":-32767,"y":0},{"d":false,"t":1670,"x":-32767,"y":0},{"d":false,"t":1671,"x":-32767,"y":0},{"d":false,"t":1672,"x":-32767,"y":0},{"d":false,"t":1673,"x":-32767,"y":0},{"d":false,"t":1674,"x":-32767,"y":0},{"d":false,"t":1675,"x":-32767,"y":0},{"d":false,"t":1676,"x":-32767,"y":0},{"d":false,"t":1677,"x":-32767,"y":0},{"d":false,"t":1678,"x":-32767,"y":0},{"d":false,"t":1679,"x":-32767,"y":0},{"d":false,"t":1680,"x":-32767,"y":0},{"d":false,"t":1681,"x":-32767,"y":0},{"d":false,"t":1682,"x":-32767,"y":0},{"d":false,"t":1683,"x":-32767,"y":0},{"d":false,"t":1684,"x":-32767,"y":0},{"d":false,"t":1685,"x":-32767,"y":0},{"d":false,"t":1686,"x":-9498,"y":-31360},{"d":false,"t":1687,"x":-8788,"y":-31566},{"d":false,"t":1688,"x":-8242,"y":-31714},{"d":false,"t":1689,"x":-7525,"y":-31891},{"d":false,"t":1690,"x":-6804,"y":-32053},{"d":false,"t":1691,"x":-6082,"y":-32198},{"d":false,"t":1692,"x":-5387,"y":-32321},{"d":false,"t":1693,"x":-4659,"y":-32434},{"d":false,"t":1694,"x":-3932,"y":-32530},{"d":false,"t":1695,"x":-3225,"y":-32608},{"d":false,"t":1696,"x":-2513,"y":-32670},{"d":false,"t":1697,"x":-1788,"y":-32718},{"d":false,"t":1698,"x":-1074,"y":-32749},{"d":false,"t":1699,"x":-358,"y":-32765},{"d":false,"t":1700,"x":-23170,"y":-23170},{"d":false,"t":1701,"x":-23170,"y":-23170},{"d":false,"t":1702,"x":-23170,"y":-23170},{"d":false,"t":1703,"x":-23170,"y":-23170},{"d":false,"t":1704,"x":-23170,"y":-23170},{"d":false,"x":-23170,"y":-23170,"t":1705},{"d":false,"x":-23170,"y":-23170,"t":1706},{"d":false,"x":-23170,"y":-23170,"t":1707},{"d":false,"x":-23170,"y":-23170,"t":1708},{"d":false,"x":-23170,"y":-23170,"t":1709},{"d":false,"x":-23170,"y":-23170,"t":1710},{"d":false,"x":-23170,"y":-23170,"t":1711},{"d":false,"x":-23170,"y":-23170,"t":1712},{"d":false,"x":-23170,"y":-23170,"t":1713},{"d":false,"x":-23170,"y":-23170,"t":1714},{"d":false,"x":-23170,"y":-23170,"t":1715},{"d":false,"x":-23170,"y":-23170,"t":1716},{"d":false,"x":-23170,"y":-23170,"t":1717},{"d":false,"x":-23170,"y":-23170,"t":1718},{"d":false,"x":-23170,"y":-23170,"t":1719},{"d":false,"x":-23170,"y":-23170,"t":1720},{"d":false,"x":-23170,"y":-23170,"t":1721},{"d":false,"x":-23170,"y":-23170,"t":1722},{"d":false,"x":-23170,"y":-23170,"t":1723},{"d":false,"x":-23170,"y":-23170,"t":1724},{"d":false,"x":-23170,"y":-23170,"t":1725},{"d":false,"x":-23170,"y":-23170,"t":1726},{"d":false,"x":-23170,"y":-23170,"t":1727},{"d":false,"x":-23170,"y":-23170,"t":1728},{"d":false,"x":-23170,"y":-23170,"t":1729},{"d":false,"x":-23170,"y":-23170,"t":1730},{"d":false,"x":-23170,"y":-23170,"t":1731},{"d":false,"x":-23170,"y":-23170,"t":1732},{"d":false,"x":16911,"y":-28066,"t":1733},{"d":false,"x":17592,"y":-27644,"t":1734},{"d":false,"x":18134,"y":-27291,"t":1735},{"d":false,"x":18670,"y":-26928,"t":1736},{"d":false,"x":19315,"y":-26469,"t":1737},{"d":false,"x":19918,"y":-26019,"t":1738},{"d":false,"x":20426,"y":-25622,"t":1739},{"d":false,"x":21012,"y":-25143,"t":1740},{"y":-24726,"x":21501,"t":1741,"d":false},{"y":-24221,"x":22068,"t":1742,"d":false},{"y":-23787,"x":22535,"t":1743,"d":false},{"y":-23259,"x":23080,"t":1744,"d":false},{"y":-22718,"x":23613,"t":1745,"d":false},{"y":-22166,"x":24132,"t":1746,"d":false},{"y":-21691,"x":24559,"t":1747,"d":false},{"y":-21117,"x":25055,"t":1748,"d":false},{"y":-20535,"x":25534,"t":1749,"d":false},{"y":-20030,"x":25932,"t":1750,"d":false},{"y":-19431,"x":26384,"t":1751,"d":false},{"y":-18910,"x":26760,"t":1752,"d":false},{"y":-18258,"x":27209,"t":1753,"d":false},{"y":-17719,"x":27563,"t":1754,"d":false},{"y":-23170,"x":-23170,"t":1755,"d":false},{"y":-23170,"x":-23170,"t":1756,"d":false},{"y":-23170,"x":-23170,"t":1757,"d":false},{"y":-23170,"x":-23170,"t":1758,"d":false},{"y":-23170,"x":-23170,"t":1759,"d":false},{"y":-23170,"x":-23170,"t":1760,"d":false},{"y":-23170,"x":-23170,"t":1761,"d":false},{"y":-23170,"x":-23170,"t":1762,"d":false},{"y":-23170,"x":-23170,"t":1763,"d":false},{"y":-23170,"x":-23170,"t":1764,"d":false},{"y":-23170,"x":-23170,"t":1765,"d":false},{"y":-23170,"x":-23170,"t":1766,"d":false},{"y":-23170,"x":-23170,"t":1767,"d":false},{"y":-23170,"x":-23170,"t":1768,"d":false},{"y":-23170,"x":-23170,"t":1769,"d":false},{"y":-23170,"x":-23170,"t":1770,"d":false},{"y":-23170,"x":-23170,"t":1771,"d":false},{"y":-23170,"x":-23170,"t":1772,"d":false},{"y":-23170,"x":-23170,"t":1773,"d":false},{"y":-23170,"x":-23170,"t":1774,"d":false},{"y":-23170,"x":-23170,"t":1775,"d":false},{"y":-23170,"x":-23170,"t":1776,"d":false},{"d":false,"t":1777,"x":-23170,"y":-23170},{"d":false,"t":1778,"x":-23170,"y":-23170},{"d":false,"t":1779,"x":-23170,"y":-23170},{"d":false,"t":1780,"x":-23170,"y":-23170},{"d":false,"t":1781,"x":-23170,"y":-23170},{"d":false,"t":1782,"x":-23170,"y":-23170},{"d":false,"t":1783,"x":-23170,"y":-23170},{"d":false,"t":1784,"x":-23170,"y":-23170},{"d":false,"t":1785,"x":25069,"y":-21101},{"d":false,"t":1786,"x":25552,"y":-20513},{"d":false,"t":1787,"x":26019,"y":-19918},{"d":false,"t":1788,"x":26406,"y":-19401},{"d":false,"t":1789,"x":26785,"y":-18875},{"d":false,"t":1790,"x":27209,"y":-18258},{"d":false,"t":1791,"x":27644,"y":-17592},{"d":false,"t":1792,"x":27986,"y":-17043},{"d":false,"t":1793,"x":28316,"y":-16488},{"d":false,"t":1794,"x":28711,"y":-15791},{"d":false,"t":1795,"x":29016,"y":-15224},{"d":false,"t":1796,"x":29379,"y":-14510},{"d":false,"t":1797,"x":29725,"y":-13788},{"d":false,"t":1798,"x":29958,"y":-13275},{"d":false,"t":1799,"x":30273,"y":-12539},{"d":false,"t":1800,"x":30569,"y":-11799},{"d":false,"t":1801,"x":30768,"y":-11270},{"d":false,"t":1802,"x":31013,"y":-10577},{"d":false,"t":1803,"x":31260,"y":-9824},{"d":false,"t":1804,"x":31472,"y":-9120},{"d":false,"t":1805,"x":31625,"y":-8576},{"d":false,"t":1806,"x":31810,"y":-7863},{"d":false,"t":1807,"x":31978,"y":-7146},{"d":false,"t":1808,"x":32131,"y":-6426},{"d":false,"t":1809,"x":32267,"y":-5705},{"d":false,"t":1810,"x":-23170,"y":-23170},{"d":false,"t":1811,"x":-23170,"y":-23170},{"d":false,"t":1812,"x":-23170,"y":-23170},{"x":32498,"d":false,"y":4193,"t":1813},{"x":-8339,"d":false,"y":31688,"t":1814},{"x":-4193,"d":false,"y":32498,"t":1815},{"x":-4802,"d":false,"y":32413,"t":1816},{"x":-4238,"d":false,"y":32492,"t":1817},{"x":-4861,"d":false,"y":32404,"t":1818},{"x":-2044,"d":false,"y":32703,"t":1819},{"x":-2335,"d":false,"y":32684,"t":1820},{"x":-2721,"d":false,"y":32654,"t":1821},{"x":-1636,"d":false,"y":32726,"t":1822},{"x":-1023,"d":false,"y":32751,"t":1823},{"x":-1170,"d":false,"y":32746,"t":1824},{"x":-1364,"d":false,"y":32739,"t":1825},{"x":-1636,"d":false,"y":32726,"t":1826},{"x":-1023,"d":false,"y":32751,"t":1827},{"x":0,"d":false,"y":32767,"t":1828},{"x":0,"d":false,"y":32767,"t":1829},{"x":0,"d":false,"y":32767,"t":1830},{"x":0,"d":false,"y":32767,"t":1831},{"x":0,"d":false,"y":32767,"t":1832},{"x":0,"d":false,"y":32767,"t":1833},{"x":0,"d":false,"y":32767,"t":1834},{"x":0,"d":false,"y":32767,"t":1835},{"x":0,"d":false,"y":32767,"t":1836},{"x":0,"d":false,"y":32767,"t":1837},{"x":0,"d":false,"y":32767,"t":1838},{"x":22623,"d":false,"y":-23704,"t":1839},{"x":-5110,"d":false,"y":32366,"t":1840},{"x":-6426,"d":false,"y":32131,"t":1841},{"x":22474,"d":false,"y":-23845,"t":1842},{"x":-11021,"d":false,"y":30858,"t":1843},{"x":-9416,"d":false,"y":31385,"t":1844},{"x":22254,"d":false,"y":-24051,"t":1845},{"x":-15913,"d":false,"y":28644,"t":1846},{"x":-21984,"d":false,"y":24298,"t":1847},{"x":21993,"d":false,"y":-24290,"t":1848},{"t":1849,"y":24298,"d":false,"x":-21984},{"t":1850,"y":-24293,"d":false,"x":21989},{"t":1851,"y":24298,"d":false,"x":-21984},{"t":1852,"y":24490,"d":false,"x":-21769},{"t":1853,"y":-24529,"d":false,"x":21726},{"t":1854,"y":24490,"d":false,"x":-21769},{"t":1855,"y":24762,"d":false,"x":-21460},{"t":1856,"y":-24729,"d":false,"x":21498},{"t":1857,"y":-24568,"d":false,"x":21682},{"t":1858,"y":24490,"d":false,"x":-21769},{"t":1859,"y":24762,"d":false,"x":-21460},{"t":1860,"y":-24769,"d":false,"x":21452},{"t":1861,"y":24762,"d":false,"x":-21460},{"t":1862,"y":-24773,"d":false,"x":21447},{"t":1863,"y":-32491,"d":false,"x":4247},{"t":1864,"y":-32454,"d":false,"x":4521},{"t":1865,"y":-32413,"d":false,"x":4804},{"t":1866,"y":-32373,"d":false,"x":5069},{"t":1867,"y":-32328,"d":false,"x":5343},{"t":1868,"y":-32282,"d":false,"x":5617},{"t":1869,"y":-32233,"d":false,"x":5891},{"t":1870,"y":-32182,"d":false,"x":6165},{"t":1871,"y":-32125,"d":false,"x":6452},{"t":1872,"y":-32072,"d":false,"x":6713},{"t":1873,"y":-32014,"d":false,"x":6986},{"t":1874,"y":-31950,"d":false,"x":7274},{"t":1875,"y":-31886,"d":false,"x":7547},{"t":1876,"y":-31820,"d":false,"x":7819},{"t":1877,"y":-31764,"d":false,"x":8043},{"t":1878,"y":-31694,"d":false,"x":8315},{"t":1879,"y":-31622,"d":false,"x":8587},{"t":1880,"y":-31542,"d":false,"x":8875},{"t":1881,"y":-31465,"d":false,"x":9146},{"t":1882,"y":-31379,"d":false,"x":9434},{"t":1883,"y":-31297,"d":false,"x":9704},{"t":1884,"y":-31233,"d":false,"x":9910},{"y":-31133,"t":1885,"x":10218,"d":false},{"y":-31044,"t":1886,"x":10485,"d":false},{"y":-30953,"t":1887,"x":10751,"d":false},{"y":-30852,"t":1888,"x":11038,"d":false},{"y":-30770,"t":1889,"x":11264,"d":false},{"y":-30672,"t":1890,"x":11528,"d":false},{"y":-30563,"t":1891,"x":11813,"d":false},{"y":-30452,"t":1892,"x":12098,"d":false},{"y":-30371,"t":1893,"x":12300,"d":false},{"y":-30244,"t":1894,"x":12608,"d":false},{"y":-30135,"t":1895,"x":12866,"d":false},{"y":-30039,"t":1896,"x":13090,"d":false},{"y":-29903,"t":1897,"x":13398,"d":false},{"y":-29787,"t":1898,"x":13653,"d":false},{"y":-29672,"t":1899,"x":13902,"d":false},{"y":-29539,"t":1900,"x":14182,"d":false},{"y":-29417,"t":1901,"x":14432,"d":false},{"y":-29294,"t":1902,"x":14682,"d":false},{"y":-29154,"t":1903,"x":14958,"d":false},{"y":-29040,"t":1904,"x":15178,"d":false},{"y":-28879,"t":1905,"x":15481,"d":false},{"y":-28777,"t":1906,"x":15671,"d":false},{"y":-28627,"t":1907,"x":15942,"d":false},{"y":-28488,"t":1908,"x":16190,"d":false},{"y":-28334,"t":1909,"x":16459,"d":false},{"y":-28207,"t":1910,"x":16674,"d":false},{"y":-28030,"t":1911,"x":16971,"d":false},{"y":-27899,"t":1912,"x":17185,"d":false},{"y":-27716,"t":1913,"x":17479,"d":false},{"y":-27561,"t":1914,"x":17723,"d":false},{"y":-27424,"t":1915,"x":17934,"d":false},{"y":-27253,"t":1916,"x":18192,"d":false},{"y":-27091,"t":1917,"x":18433,"d":false},{"y":-26948,"t":1918,"x":18640,"d":false},{"y":-26725,"t":1919,"x":18959,"d":false},{"y":-26578,"t":1920,"x":19164,"d":false},{"y":-26430,"d":false,"t":1921,"x":19368},{"y":-26230,"d":false,"t":1922,"x":19638},{"y":-26045,"d":false,"t":1923,"x":19884},{"y":-25865,"d":false,"t":1924,"x":20117},{"y":-25682,"d":false,"t":1925,"x":20349},{"y":-25497,"d":false,"t":1926,"x":20581},{"y":32767,"d":false,"t":1927,"x":0},{"y":32767,"d":false,"t":1928,"x":0},{"y":32767,"d":false,"t":1929,"x":0},{"y":32767,"d":false,"t":1930,"x":0},{"y":32767,"d":false,"t":1931,"x":0},{"y":32767,"d":false,"t":1932,"x":0},{"y":32767,"d":false,"t":1933,"x":0},{"y":32767,"d":false,"t":1934,"x":0},{"y":32767,"d":false,"t":1935,"x":0},{"y":32767,"d":false,"t":1936,"x":0},{"y":32767,"d":false,"t":1937,"x":0},{"y":32767,"d":false,"t":1938,"x":0},{"y":32767,"d":false,"t":1939,"x":0},{"y":32767,"d":false,"t":1940,"x":0},{"y":32767,"d":false,"t":1941,"x":0},{"y":32767,"d":false,"t":1942,"x":0},{"y":32767,"d":false,"t":1943,"x":0},{"y":32767,"d":false,"t":1944,"x":0},{"y":32767,"d":false,"t":1945,"x":0},{"y":32767,"d":false,"t":1946,"x":0},{"y":32767,"d":false,"t":1947,"x":0},{"y":32767,"d":false,"t":1948,"x":0},{"y":32767,"d":false,"t":1949,"x":0},{"y":32767,"d":false,"t":1950,"x":0},{"y":32767,"d":false,"t":1951,"x":0},{"y":32767,"d":false,"t":1952,"x":0},{"y":29308,"d":false,"t":1953,"x":-14654},{"y":29508,"d":false,"t":1954,"x":-14245},{"y":29071,"d":false,"t":1955,"x":-15117},{"y":29026,"d":false,"t":1956,"x":-15204},{"x":11876,"d":false,"y":30539,"t":1957},{"x":6426,"d":false,"y":32131,"t":1958},{"x":6188,"d":false,"y":32177,"t":1959},{"x":5862,"d":false,"y":32238,"t":1960},{"x":5387,"d":false,"y":32321,"t":1961},{"x":3260,"d":false,"y":32604,"t":1962},{"x":2513,"d":false,"y":32670,"t":1963},{"x":2967,"d":false,"y":32632,"t":1964},{"x":3619,"d":false,"y":32567,"t":1965},{"x":1092,"d":false,"y":32749,"t":1966},{"x":1259,"d":false,"y":32743,"t":1967},{"x":1488,"d":false,"y":32733,"t":1968},{"x":1818,"d":false,"y":32717,"t":1969},{"x":1092,"d":false,"y":32749,"t":1970},{"x":0,"d":false,"y":32767,"t":1971},{"x":0,"d":false,"y":32767,"t":1972},{"x":0,"d":false,"y":32767,"t":1973},{"x":0,"d":false,"y":32767,"t":1974},{"x":0,"d":false,"y":32767,"t":1975},{"x":0,"d":false,"y":32767,"t":1976},{"x":0,"d":false,"y":32767,"t":1977},{"x":0,"d":false,"y":32767,"t":1978},{"x":0,"d":false,"y":32767,"t":1979},{"x":0,"d":false,"y":32767,"t":1980},{"x":0,"d":false,"y":32767,"t":1981},{"x":0,"d":false,"y":32767,"t":1982},{"x":0,"d":false,"y":32767,"t":1983},{"x":0,"d":false,"y":32767,"t":1984},{"x":0,"d":false,"y":32767,"t":1985},{"x":0,"d":false,"y":32767,"t":1986},{"x":-17173,"d":false,"y":27906,"t":1987},{"x":-16123,"d":false,"y":28526,"t":1988},{"x":-15791,"d":false,"y":28711,"t":1989},{"x":-17366,"d":false,"y":27786,"t":1990},{"x":-20361,"d":false,"y":25673,"t":1991},{"x":-20589,"d":false,"y":25491,"t":1992},{"x":-20749,"t":1993,"d":false,"y":25360},{"x":-21106,"t":1994,"d":false,"y":25064},{"x":-20663,"t":1995,"d":false,"y":25431},{"x":-21166,"t":1996,"d":false,"y":25014},{"x":-22225,"t":1997,"d":false,"y":24077},{"x":-22094,"t":1998,"d":false,"y":24198},{"x":-22568,"t":1999,"d":false,"y":23756},{"x":-22457,"t":2000,"d":false,"y":23861},{"x":-22296,"t":2001,"d":false,"y":24011},{"x":-22745,"t":2002,"d":false,"y":23587},{"x":-22692,"t":2003,"d":false,"y":23638},{"x":-22625,"t":2004,"d":false,"y":23702},{"x":-22535,"t":2005,"d":false,"y":23787},{"x":-23170,"t":2006,"d":false,"y":23170},{"x":-23170,"t":2007,"d":false,"y":23170},{"x":19717,"t":2008,"d":false,"y":-26171},{"x":-22225,"t":2009,"d":false,"y":24077},{"x":-22729,"t":2010,"d":false,"y":23603},{"x":19419,"t":2011,"d":false,"y":-26393},{"x":-22262,"t":2012,"d":false,"y":24043},{"x":19377,"t":2013,"d":false,"y":-26423},{"x":-22262,"t":2014,"d":false,"y":24043},{"x":-22141,"t":2015,"d":false,"y":24154},{"x":19062,"t":2016,"d":false,"y":-26652},{"x":-21647,"t":2017,"d":false,"y":24599},{"x":19062,"t":2018,"d":false,"y":-26652},{"x":-21075,"t":2019,"d":false,"y":25090},{"x":19062,"t":2020,"d":false,"y":-26652},{"x":-21075,"t":2021,"d":false,"y":25090},{"x":-21417,"t":2022,"d":false,"y":24799},{"x":18743,"t":2023,"d":false,"y":-26877},{"x":19004,"t":2024,"d":false,"y":-26693},{"x":-21075,"t":2025,"d":false,"y":25090},{"x":-20749,"t":2026,"d":false,"y":25360},{"x":18642,"t":2027,"d":false,"y":-26947},{"x":-20195,"t":2028,"d":false,"y":25804},{"t":2029,"x":-20304,"d":false,"y":25718},{"t":2030,"x":18319,"d":false,"y":-27168},{"t":2031,"x":18684,"d":false,"y":-26918},{"t":2032,"x":-19476,"d":false,"y":26350},{"t":2033,"x":-19660,"d":false,"y":26214},{"t":2034,"x":18299,"d":false,"y":-27182},{"t":2035,"x":-19660,"d":false,"y":26214},{"t":2036,"x":-18896,"d":false,"y":26770},{"t":2037,"x":18007,"d":false,"y":-27375},{"t":2038,"x":18488,"d":false,"y":-27053},{"t":2039,"x":18946,"d":false,"y":-26735},{"t":2040,"x":19354,"d":false,"y":-26440},{"t":2041,"x":19762,"d":false,"y":-26137},{"t":2042,"x":20287,"d":false,"y":-25732},{"t":2043,"x":20691,"d":false,"y":-25408},{"t":2044,"x":21146,"d":false,"y":-25030},{"t":2045,"x":21493,"d":false,"y":-24733},{"t":2046,"x":21944,"d":false,"y":-24334},{"t":2047,"x":22338,"d":false,"y":-23973},{"t":2048,"x":22783,"d":false,"y":-23550},{"t":2049,"x":23170,"d":false,"y":-23170},{"t":2050,"x":23500,"d":false,"y":-22835},{"t":2051,"x":23884,"d":false,"y":-22433},{"t":2052,"x":24159,"d":false,"y":-22136},{"t":2053,"x":24590,"d":false,"y":-21657},{"t":2054,"x":24863,"d":false,"y":-21343},{"t":2055,"x":25191,"d":false,"y":-20954},{"t":2056,"x":25519,"d":false,"y":-20554},{"t":2057,"x":25745,"d":false,"y":-20270},{"t":2058,"x":26015,"d":false,"y":-19922},{"t":2059,"x":26299,"d":false,"y":-19546},{"t":2060,"x":26526,"d":false,"y":-19237},{"t":2061,"x":26906,"d":false,"y":-18701},{"t":2062,"x":27132,"d":false,"y":-18372},{"t":2063,"x":27358,"d":false,"y":-18034},{"t":2064,"x":27639,"d":false,"y":-17600},{"x":27953,"y":-17096,"d":false,"t":2065},{"x":28175,"y":-16729,"d":false,"t":2066},{"x":28450,"y":-16257,"d":false,"t":2067},{"x":28668,"y":-15870,"d":false,"t":2068},{"x":28990,"y":-15272,"d":false,"t":2069},{"x":29203,"y":-14862,"d":false,"t":2070},{"x":29439,"y":-14389,"d":false,"t":2071},{"x":29621,"y":-14010,"d":false,"t":2072},{"x":29876,"y":-13458,"d":false,"t":2073},{"x":30104,"y":-12940,"d":false,"t":2074},{"x":30299,"y":-12476,"d":false,"t":2075},{"x":30490,"y":-12003,"d":false,"t":2076},{"x":30686,"y":-11490,"d":false,"t":2077},{"x":30852,"y":-11039,"d":false,"t":2078},{"x":31071,"y":-10405,"d":false,"t":2079},{"x":31255,"y":-9839,"d":false,"t":2080},{"x":31405,"y":-9349,"d":false,"t":2081},{"x":31588,"y":-8709,"d":false,"t":2082},{"x":31762,"y":-8052,"d":false,"t":2083},{"x":31850,"y":-7698,"d":false,"t":2084},{"x":32008,"y":-7011,"d":false,"t":2085},{"x":32119,"y":-6486,"d":false,"t":2086},{"x":-26600,"y":19134,"d":false,"t":2087},{"x":-26589,"y":19150,"d":false,"t":2088},{"x":-26653,"y":19061,"d":false,"t":2089},{"x":-26585,"y":19155,"d":false,"t":2090},{"x":-26572,"y":19172,"d":false,"t":2091},{"x":-26640,"y":19078,"d":false,"t":2092},{"x":-26628,"y":19095,"d":false,"t":2093},{"x":-26554,"y":19198,"d":false,"t":2094},{"x":-26626,"y":19098,"d":false,"t":2095},{"x":-26613,"y":19116,"d":false,"t":2096},{"x":-26599,"y":19136,"d":false,"t":2097},{"x":-26610,"y":19120,"d":false,"t":2098},{"x":-26595,"y":19141,"d":false,"t":2099},{"x":-26580,"y":19162,"d":false,"t":2100},{"t":2101,"x":-26664,"d":false,"y":19045},{"t":2102,"x":-26575,"d":false,"y":19169},{"t":2103,"x":-26558,"d":false,"y":19193},{"t":2104,"x":-26648,"d":false,"y":19067},{"t":2105,"x":-26632,"d":false,"y":19090},{"t":2106,"x":-26531,"d":false,"y":19229},{"t":2107,"x":-26630,"d":false,"y":19093},{"t":2108,"x":-26611,"d":false,"y":19119},{"t":2109,"x":-5387,"d":false,"y":32321},{"t":2110,"x":-4861,"d":false,"y":32404},{"t":2111,"x":-16064,"d":false,"y":28559},{"t":2112,"x":-16257,"d":false,"y":28450},{"t":2113,"x":-16858,"d":false,"y":28097},{"t":2114,"x":-16257,"d":false,"y":28450},{"t":2115,"x":-15913,"d":false,"y":28644},{"t":2116,"x":-20977,"d":false,"y":25172},{"t":2117,"x":-20698,"d":false,"y":25402},{"t":2118,"x":-20339,"d":false,"y":25691},{"t":2119,"x":-20617,"d":false,"y":25468},{"t":2120,"x":23467,"d":false,"y":-22869},{"t":2121,"x":23879,"d":false,"y":-22439},{"t":2122,"x":24229,"d":false,"y":-22059},{"t":2123,"x":24630,"d":false,"y":-21611},{"t":2124,"x":25023,"d":false,"y":-21155},{"t":2125,"x":25360,"d":false,"y":-20749},{"t":2126,"x":25740,"d":false,"y":-20276},{"t":2127,"x":26067,"d":false,"y":-19855},{"t":2128,"x":26489,"d":false,"y":-19287},{"t":2129,"x":26803,"d":false,"y":-18848},{"t":2130,"x":27112,"d":false,"y":-18402},{"t":2131,"x":27395,"d":false,"y":-17978},{"t":2132,"x":27745,"d":false,"y":-17433},{"t":2133,"x":28032,"d":false,"y":-16967},{"t":2134,"x":28366,"d":false,"y":-16403},{"t":2135,"x":28585,"d":false,"y":-16018},{"t":2136,"x":28902,"d":false,"y":-15439},{"d":false,"t":2137,"x":29158,"y":-14950},{"d":false,"t":2138,"x":29406,"y":-14456},{"d":false,"t":2139,"x":29645,"y":-13958},{"d":false,"t":2140,"x":29855,"y":-13503},{"d":false,"t":2141,"x":30124,"y":-12893},{"d":false,"t":2142,"x":30276,"y":-12532},{"d":false,"t":2143,"x":30525,"y":-11912},{"d":false,"t":2144,"x":30691,"y":-11478},{"d":false,"t":2145,"x":30881,"y":-10958},{"d":false,"t":2146,"x":31048,"y":-10474},{"d":false,"t":2147,"x":31244,"y":-9873},{"d":false,"t":2148,"x":31406,"y":-9347},{"d":false,"t":2149,"x":31581,"y":-8738},{"d":false,"t":2150,"x":31683,"y":-8357},{"d":false,"t":2151,"x":31811,"y":-7859},{"d":false,"t":2152,"x":31957,"y":-7240},{"d":false,"t":2153,"x":32061,"y":-6763},{"d":false,"t":2154,"x":32164,"y":-6258},{"d":false,"t":2155,"x":32254,"y":-5773},{"d":false,"t":2156,"x":32361,"y":-5143},{"d":false,"t":2157,"x":32438,"y":-4634},{"d":false,"t":2158,"x":32504,"y":-4141},{"d":false,"t":2159,"x":32565,"y":-3632},{"d":false,"t":2160,"x":32617,"y":-3136},{"d":false,"t":2161,"x":32661,"y":-2628},{"d":false,"t":2162,"x":32698,"y":-2130},{"d":false,"t":2163,"x":32732,"y":-1505},{"d":false,"t":2164,"x":32752,"y":-1004},{"d":false,"t":2165,"x":32763,"y":-502},{"d":false,"t":2166,"x":32767,"y":0},{"d":false,"t":2167,"x":32763,"y":500},{"d":false,"t":2168,"x":32752,"y":1004},{"d":false,"t":2169,"x":32738,"y":1380},{"d":false,"t":2170,"x":32713,"y":1880},{"d":false,"t":2171,"x":32681,"y":2379},{"d":false,"t":2172,"x":-30583,"y":11763},{"y":2397,"d":false,"x":32679,"t":2173},{"y":7368,"d":false,"x":-31928,"t":2174},{"y":2407,"d":false,"x":32679,"t":2175},{"y":4982,"d":false,"x":-32386,"t":2176},{"y":2416,"d":false,"x":32678,"t":2177},{"y":2513,"d":false,"x":-32670,"t":2178},{"y":2289,"d":false,"x":32687,"t":2179},{"y":0,"d":false,"x":-32767,"t":2180},{"y":2298,"d":false,"x":32686,"t":2181},{"y":0,"d":false,"x":-32767,"t":2182},{"y":2298,"d":false,"x":32686,"t":2183},{"y":0,"d":false,"x":-32767,"t":2184},{"y":2298,"d":false,"x":32686,"t":2185},{"y":-2513,"d":false,"x":-32670,"t":2186},{"y":2298,"d":false,"x":32686,"t":2187},{"y":-2513,"d":false,"x":-32670,"t":2188},{"y":2298,"d":false,"x":32686,"t":2189},{"y":-2513,"d":false,"x":-32670,"t":2190},{"y":2298,"d":false,"x":32686,"t":2191},{"y":-2513,"d":false,"x":-32670,"t":2192},{"y":2298,"d":false,"x":32686,"t":2193},{"y":0,"d":false,"x":-32767,"t":2194},{"y":2298,"d":false,"x":32686,"t":2195},{"y":-2513,"d":false,"x":-32670,"t":2196},{"y":2298,"d":false,"x":32686,"t":2197},{"y":-2513,"d":false,"x":-32670,"t":2198},{"y":2298,"d":false,"x":32686,"t":2199},{"y":-2513,"d":false,"x":-32670,"t":2200},{"y":2298,"d":false,"x":32686,"t":2201},{"y":-2513,"d":false,"x":-32670,"t":2202},{"y":2298,"d":false,"x":32686,"t":2203},{"y":-2513,"d":false,"x":-32670,"t":2204},{"y":2298,"d":false,"x":32686,"t":2205},{"y":-2513,"d":false,"x":-32670,"t":2206},{"y":2298,"d":false,"x":32686,"t":2207},{"y":-2513,"d":false,"x":-32670,"t":2208},{"x":32686,"y":2298,"t":2209,"d":false},{"x":3156,"y":32615,"t":2210,"d":false},{"x":3619,"y":32567,"t":2211,"d":false},{"x":2839,"y":32644,"t":2212,"d":false},{"x":3430,"y":32587,"t":2213,"d":false},{"x":1056,"y":32750,"t":2214,"d":false},{"x":-23170,"y":23170,"t":2215,"d":false},{"x":-23170,"y":23170,"t":2216,"d":false},{"x":9935,"y":31225,"t":2217,"d":false},{"x":10362,"y":31086,"t":2218,"d":false},{"x":5387,"y":32321,"t":2219,"d":false},{"x":4982,"y":32386,"t":2220,"d":false},{"x":4427,"y":32467,"t":2221,"d":false},{"x":5387,"y":32321,"t":2222,"d":false},{"x":2180,"y":32694,"t":2223,"d":false},{"x":2513,"y":32670,"t":2224,"d":false},{"x":1488,"y":32733,"t":2225,"d":false},{"x":1818,"y":32717,"t":2226,"d":false},{"x":-14654,"y":29308,"t":2227,"d":false},{"x":-14215,"y":29523,"t":2228,"d":false},{"x":-14138,"y":29560,"t":2229,"d":false},{"x":-14654,"y":29308,"t":2230,"d":false},{"x":-14654,"y":29308,"t":2231,"d":false},{"x":-19804,"y":26105,"t":2232,"d":false},{"x":-20469,"y":25587,"t":2233,"d":false},{"x":-20035,"y":25928,"t":2234,"d":false},{"x":-20304,"y":25718,"t":2235,"d":false},{"x":-19660,"y":26214,"t":2236,"d":false},{"x":-21873,"y":24397,"t":2237,"d":false},{"x":-21711,"y":24542,"t":2238,"d":false},{"x":-22094,"y":24198,"t":2239,"d":false},{"x":-21920,"y":24356,"t":2240,"d":false},{"x":-21679,"y":24570,"t":2241,"d":false},{"x":-22296,"y":24011,"t":2242,"d":false},{"x":-11380,"y":30727,"t":2243,"d":false},{"x":-10765,"y":30948,"t":2244,"d":false},{"y":30747,"x":-11328,"t":2245,"d":false},{"y":30681,"x":-11505,"t":2246,"d":false},{"y":32438,"x":-4634,"t":2247,"d":false},{"y":32321,"x":-5387,"t":2248,"d":false},{"y":32404,"x":-4861,"t":2249,"d":false},{"y":32624,"x":-3058,"t":2250,"d":false},{"y":32684,"x":-2335,"t":2251,"d":false},{"y":32654,"x":-2721,"t":2252,"d":false},{"y":32604,"x":-3260,"t":2253,"d":false},{"y":28937,"x":-15373,"t":2254,"d":false},{"y":29104,"x":-15054,"t":2255,"d":false},{"y":29071,"x":-15117,"t":2256,"d":false},{"y":28450,"x":-16257,"t":2257,"d":false},{"y":28644,"x":-15913,"t":2258,"d":false},{"y":25587,"x":-20469,"t":2259,"d":false},{"y":25865,"x":-20117,"t":2260,"d":false},{"y":25691,"x":-20339,"t":2261,"d":false},{"y":26064,"x":-19858,"t":2262,"d":false},{"y":25865,"x":-20117,"t":2263,"d":false},{"y":26423,"x":-19377,"t":2264,"d":false},{"y":24043,"x":-22262,"t":2265,"d":false},{"y":24599,"x":-21647,"t":2266,"d":false},{"y":24246,"x":-22041,"t":2267,"d":false},{"y":24419,"x":-21849,"t":2268,"d":false},{"y":24660,"x":-21577,"t":2269,"d":false},{"y":24077,"x":-22225,"t":2270,"d":false},{"y":24356,"x":-21920,"t":2271,"d":false},{"y":30050,"x":13065,"t":2272,"d":false},{"y":30199,"x":12715,"t":2273,"d":false},{"y":29693,"x":13857,"t":2274,"d":false},{"y":30246,"x":12603,"t":2275,"d":false},{"y":-32396,"x":4917,"t":2276,"d":false},{"y":31789,"x":7947,"t":2277,"d":false},{"y":31789,"x":7947,"t":2278,"d":false},{"y":-32545,"x":3812,"t":2279,"d":false},{"y":32767,"x":0,"t":2280,"d":false},{"y":-32575,"t":2281,"x":3538,"d":false},{"y":32767,"t":2282,"x":0,"d":false},{"y":-32607,"t":2283,"x":3231,"d":false},{"y":32767,"t":2284,"x":0,"d":false},{"y":-32607,"t":2285,"x":3231,"d":false},{"y":32514,"t":2286,"x":-4064,"d":false},{"y":-32607,"t":2287,"x":3231,"d":false},{"y":32514,"t":2288,"x":-4064,"d":false},{"y":-32607,"t":2289,"x":3231,"d":false},{"y":32514,"t":2290,"x":-4064,"d":false},{"y":-32609,"t":2291,"x":3217,"d":false},{"y":32767,"t":2292,"x":0,"d":false},{"y":-32609,"t":2293,"x":3217,"d":false},{"y":32514,"t":2294,"x":-4064,"d":false},{"y":-32609,"t":2295,"x":3217,"d":false},{"y":32514,"t":2296,"x":-4064,"d":false},{"y":-32609,"t":2297,"x":3217,"d":false},{"y":32514,"t":2298,"x":-4064,"d":false},{"y":-32610,"t":2299,"x":3203,"d":false},{"y":32514,"t":2300,"x":-4064,"d":false},{"y":-32610,"t":2301,"x":3203,"d":false},{"y":32767,"t":2302,"x":0,"d":false},{"y":-32610,"t":2303,"x":3203,"d":false},{"y":32514,"t":2304,"x":-4064,"d":false},{"y":-32610,"t":2305,"x":3203,"d":false},{"y":32514,"t":2306,"x":-4064,"d":false},{"y":-32611,"t":2307,"x":3189,"d":false},{"y":32514,"t":2308,"x":-4064,"d":false},{"y":-32611,"t":2309,"x":3189,"d":false},{"y":32514,"t":2310,"x":-4064,"d":false},{"y":-32611,"t":2311,"x":3189,"d":false},{"y":32767,"t":2312,"x":0,"d":false},{"y":-32611,"t":2313,"x":3189,"d":false},{"y":32514,"t":2314,"x":-4064,"d":false},{"y":-32613,"t":2315,"x":3175,"d":false},{"y":32514,"t":2316,"x":-4064,"d":false},{"d":false,"t":2317,"x":3175,"y":-32613},{"d":false,"t":2318,"x":-4064,"y":32514},{"d":false,"t":2319,"x":3175,"y":-32613},{"d":false,"t":2320,"x":-4064,"y":32514},{"d":false,"t":2321,"x":3175,"y":-32613},{"d":false,"t":2322,"x":0,"y":32767},{"d":false,"t":2323,"x":3161,"y":-32614},{"d":false,"t":2324,"x":-4064,"y":32514},{"d":false,"t":2325,"x":3161,"y":-32614},{"d":false,"t":2326,"x":-4064,"y":32514},{"d":false,"t":2327,"x":3161,"y":-32614},{"d":false,"t":2328,"x":-4064,"y":32514},{"d":false,"t":2329,"x":3161,"y":-32614},{"d":false,"t":2330,"x":0,"y":32767},{"d":false,"t":2331,"x":3147,"y":-32616},{"d":false,"t":2332,"x":-4064,"y":32514},{"d":false,"t":2333,"x":3147,"y":-32616},{"d":false,"t":2334,"x":-4064,"y":32514},{"d":false,"t":2335,"x":3147,"y":-32616},{"d":false,"t":2336,"x":-4064,"y":32514},{"d":false,"t":2337,"x":3147,"y":-32616},{"d":false,"t":2338,"x":0,"y":32767},{"d":false,"t":2339,"x":3147,"y":-32616},{"d":false,"t":2340,"x":-4064,"y":32514},{"d":false,"t":2341,"x":3147,"y":-32616},{"d":false,"t":2342,"x":-4064,"y":32514},{"d":false,"t":2343,"x":3147,"y":-32616},{"d":false,"t":2344,"x":-4064,"y":32514},{"d":false,"t":2345,"x":3147,"y":-32616},{"d":false,"t":2346,"x":-4064,"y":32514},{"d":false,"t":2347,"x":3147,"y":-32616},{"d":false,"t":2348,"x":0,"y":32767},{"d":false,"t":2349,"x":3147,"y":-32616},{"d":false,"t":2350,"x":-4064,"y":32514},{"d":false,"t":2351,"x":3147,"y":-32616},{"d":false,"t":2352,"x":-4064,"y":32514},{"t":2353,"x":3147,"d":false,"y":-32616},{"t":2354,"x":-4064,"d":false,"y":32514},{"t":2355,"x":3147,"d":false,"y":-32616},{"t":2356,"x":0,"d":false,"y":32767},{"t":2357,"x":3147,"d":false,"y":-32616},{"t":2358,"x":-4064,"d":false,"y":32514},{"t":2359,"x":3147,"d":false,"y":-32616},{"t":2360,"x":-4064,"d":false,"y":32514},{"t":2361,"x":3147,"d":false,"y":-32616},{"t":2362,"x":-4064,"d":false,"y":32514},{"t":2363,"x":3147,"d":false,"y":-32616},{"t":2364,"x":-4064,"d":false,"y":32514},{"t":2365,"x":23170,"d":false,"y":23170},{"t":2366,"x":0,"d":false,"y":32767},{"t":2367,"x":-23170,"d":false,"y":-23170},{"t":2368,"x":23170,"d":false,"y":23170},{"t":2369,"x":-23170,"d":false,"y":-23170},{"t":2370,"x":23170,"d":false,"y":23170},{"t":2371,"x":-23170,"d":false,"y":-23170},{"t":2372,"x":23170,"d":false,"y":23170},{"t":2373,"x":0,"d":false,"y":32767},{"t":2374,"x":-23170,"d":false,"y":-23170},{"t":2375,"x":23170,"d":false,"y":23170},{"t":2376,"x":-23170,"d":false,"y":-23170},{"t":2377,"x":23170,"d":false,"y":23170},{"t":2378,"x":-23170,"d":false,"y":-23170},{"t":2379,"x":23170,"d":false,"y":23170},{"t":2380,"x":0,"d":false,"y":32767},{"t":2381,"x":23170,"d":false,"y":23170},{"t":2382,"x":0,"d":false,"y":32767},{"t":2383,"x":23170,"d":false,"y":23170},{"t":2384,"x":0,"d":false,"y":32767},{"t":2385,"x":23170,"d":false,"y":23170},{"t":2386,"x":-1345,"d":false,"y":-32739},{"t":2387,"x":0,"d":false,"y":32767},{"t":2388,"x":23170,"d":false,"y":23170},{"x":-2090,"y":-32700,"d":false,"t":2389},{"x":23170,"y":23170,"d":false,"t":2390},{"x":-1951,"y":-32709,"d":false,"t":2391},{"x":23170,"y":23170,"d":false,"t":2392},{"x":0,"y":32767,"d":true,"t":2393},{"x":-2819,"y":-32645,"d":false,"t":2394},{"x":23170,"y":23170,"d":true,"t":2395},{"x":-2721,"y":-32654,"d":false,"t":2396},{"x":23170,"y":23170,"d":true,"t":2397},{"x":-2607,"y":-32663,"d":false,"t":2398},{"x":-1364,"y":-32739,"d":false,"t":2399},{"x":-151,"y":-32767,"d":false,"t":2400},{"x":1052,"y":-32750,"d":false,"t":2401},{"x":-32746,"y":1170,"d":false,"t":2402},{"x":-32726,"y":1636,"d":false,"t":2403},{"x":1671,"y":-32724,"d":false,"t":2404},{"x":-27906,"y":17173,"d":false,"t":2405},{"x":-27264,"y":18176,"d":false,"t":2406},{"x":-27264,"y":18176,"d":false,"t":2407},{"x":-27264,"y":18176,"d":false,"t":2408},{"x":32767,"y":0,"d":false,"t":2409},{"x":-32767,"y":0,"d":false,"t":2410},{"x":32767,"y":0,"d":false,"t":2411},{"x":-32767,"y":0,"d":false,"t":2412},{"x":32767,"y":0,"d":false,"t":2413},{"x":20663,"y":25431,"d":false,"t":2414},{"x":10682,"y":30977,"d":false,"t":2415},{"x":11099,"y":30830,"d":false,"t":2416},{"x":10362,"y":31086,"d":false,"t":2417},{"x":0,"y":0,"d":false,"u":1,"t":2418},{"x":32733,"y":1488,"d":false,"t":2419},{"x":32717,"y":1818,"d":false,"t":2420},{"x":28508,"y":16155,"d":false,"t":2421},{"x":28644,"y":15913,"d":false,"t":2422},{"x":28526,"y":16123,"d":false,"t":2423},{"x":28711,"y":15791,"d":false,"t":2424},{"t":2425,"x":28559,"y":16064,"d":false},{"t":2426,"x":25673,"y":20361,"d":false},{"t":2427,"x":25491,"y":20589,"d":false},{"t":2428,"x":25360,"y":20749,"d":false},{"t":2429,"x":25064,"y":21106,"d":false},{"t":2430,"x":25431,"y":20663,"d":false},{"t":2431,"x":24397,"y":21873,"d":false},{"t":2432,"x":24077,"y":22225,"d":false},{"t":2433,"x":24198,"y":22094,"d":false},{"t":2434,"x":24356,"y":21920,"d":false},{"t":2435,"x":23861,"y":22457,"d":false},{"t":2436,"x":24011,"y":22296,"d":false},{"t":2437,"x":24011,"y":22296,"d":false},{"t":2438,"x":24114,"y":22185,"d":false},{"t":2439,"x":23702,"y":22625,"d":false},{"t":2440,"x":23787,"y":22535,"d":false},{"t":2441,"x":23905,"y":22411,"d":false},{"t":2442,"x":23170,"y":23170,"d":false},{"t":2443,"x":23170,"y":23170,"d":false},{"t":2444,"x":23170,"y":23170,"d":false},{"t":2445,"x":23170,"y":23170,"d":false},{"t":2446,"x":23822,"y":22499,"d":false},{"t":2447,"x":23954,"y":22358,"d":false},{"t":2448,"x":23170,"y":23170,"d":false},{"t":2449,"x":23170,"y":23170,"d":false},{"t":2450,"x":23170,"y":23170,"d":false},{"t":2451,"x":23170,"y":23170,"d":false},{"t":2452,"x":23170,"y":23170,"d":false},{"t":2453,"x":23170,"y":23170,"d":false},{"t":2454,"x":23170,"y":23170,"d":false},{"t":2455,"x":23170,"y":23170,"d":false},{"t":2456,"x":23170,"y":23170,"d":false},{"t":2457,"x":23170,"y":23170,"d":false},{"t":2458,"x":23905,"y":22411,"d":false},{"t":2459,"x":23170,"y":23170,"d":false},{"t":2460,"x":23170,"y":23170,"d":false},{"x":23170,"t":2461,"y":23170,"d":false},{"x":23170,"t":2462,"y":23170,"d":false},{"x":23170,"t":2463,"y":23170,"d":false},{"x":22358,"t":2464,"y":23954,"d":false},{"x":23170,"t":2465,"y":23170,"d":false},{"x":23170,"t":2466,"y":23170,"d":false},{"x":23170,"t":2467,"y":23170,"d":false},{"x":23170,"t":2468,"y":23170,"d":false},{"x":23170,"t":2469,"y":23170,"d":false},{"x":24011,"t":2470,"y":22296,"d":false},{"x":23170,"t":2471,"y":23170,"d":false},{"x":23170,"t":2472,"y":23170,"d":false},{"x":23170,"t":2473,"y":23170,"d":false},{"x":23170,"t":2474,"y":23170,"d":false},{"x":23170,"t":2475,"y":23170,"d":false},{"x":23170,"t":2476,"y":23170,"d":false},{"x":23170,"t":2477,"y":23170,"d":false},{"x":23170,"t":2478,"y":23170,"d":false},{"x":23170,"t":2479,"y":23170,"d":false},{"x":23170,"t":2480,"y":23170,"d":false},{"x":23170,"t":2481,"y":23170,"d":false},{"x":23170,"t":2482,"y":23170,"d":false},{"x":23170,"t":2483,"y":23170,"d":false},{"x":23170,"t":2484,"y":23170,"d":false},{"x":23170,"t":2485,"y":23170,"d":false},{"x":23170,"t":2486,"y":23170,"d":false},{"x":22296,"t":2487,"y":24011,"d":false},{"x":23170,"t":2488,"y":23170,"d":false},{"x":23170,"t":2489,"y":23170,"d":false},{"x":23170,"t":2490,"y":23170,"d":false},{"x":23170,"t":2491,"y":23170,"d":false},{"x":23170,"t":2492,"y":23170,"d":false},{"x":24077,"t":2493,"y":22225,"d":false},{"x":23170,"t":2494,"y":23170,"d":false},{"x":23170,"t":2495,"y":23170,"d":false},{"x":23170,"t":2496,"y":23170,"d":false},{"t":2497,"x":23170,"y":23170,"d":false},{"t":2498,"x":23170,"y":23170,"d":false},{"t":2499,"x":22745,"y":23587,"d":false},{"t":2500,"x":23170,"y":23170,"d":false},{"t":2501,"x":23170,"y":23170,"d":false},{"t":2502,"x":23170,"y":23170,"d":false},{"t":2503,"x":23170,"y":23170,"d":false},{"t":2504,"x":23170,"y":23170,"d":false},{"t":2505,"x":23170,"y":23170,"d":false},{"t":2506,"x":23170,"y":23170,"d":false},{"t":2507,"x":23170,"y":23170,"d":false},{"t":2508,"x":23170,"y":23170,"d":false},{"t":2509,"x":23170,"y":23170,"d":false},{"t":2510,"x":23170,"y":23170,"d":false},{"t":2511,"x":23170,"y":23170,"d":false},{"t":2512,"x":23170,"y":23170,"d":false},{"t":2513,"x":23170,"y":23170,"d":false},{"t":2514,"x":23170,"y":23170,"d":false},{"t":2515,"x":23170,"y":23170,"d":false},{"t":2516,"x":23170,"y":23170,"d":false},{"t":2517,"x":23170,"y":23170,"d":false},{"t":2518,"x":23170,"y":23170,"d":false},{"t":2519,"x":23170,"y":23170,"d":false},{"t":2520,"x":23170,"y":23170,"d":false},{"t":2521,"x":23170,"y":23170,"d":false},{"t":2522,"x":23170,"y":23170,"d":false},{"t":2523,"x":23170,"y":23170,"d":false},{"t":2524,"x":23170,"y":23170,"d":false},{"t":2563,"x":-32704,"y":2030,"d":false},{"t":2564,"x":-32673,"y":2479,"d":false},{"t":2565,"x":-32643,"y":2853,"d":false},{"t":2566,"x":-32597,"y":3329,"d":false},{"t":2567,"x":29308,"y":14654,"d":false},{"t":2568,"x":-32589,"y":3412,"d":false},{"t":2569,"x":29308,"y":-14654,"d":false},{"t":2570,"x":-32584,"y":3461,"d":false},{"x":32767,"t":2571,"y":0,"d":false},{"x":-32590,"t":2572,"y":3405,"d":false},{"x":31086,"t":2573,"y":-10362,"d":false},{"x":-32586,"t":2574,"y":3443,"d":false},{"x":32767,"t":2575,"y":0,"d":false},{"x":-32590,"t":2576,"y":3397,"d":false},{"x":32767,"t":2577,"y":0,"d":false},{"x":-32583,"t":2578,"y":3464,"d":false},{"x":31086,"t":2579,"y":-10362,"d":false},{"x":-32591,"t":2580,"y":3389,"d":false},{"x":32767,"t":2581,"y":0,"d":false},{"x":-32584,"t":2582,"y":3458,"d":false},{"x":32767,"t":2583,"y":0,"d":false},{"x":-32591,"t":2584,"y":3395,"d":false},{"x":31086,"t":2585,"y":-10362,"d":false},{"x":-32585,"t":2586,"y":3452,"d":false},{"x":32767,"t":2587,"y":0,"d":false},{"x":-32590,"t":2588,"y":3401,"d":false},{"x":32767,"t":2589,"y":0,"d":false},{"x":-32584,"t":2590,"y":3460,"d":false},{"x":31086,"t":2591,"y":-10362,"d":false},{"x":-32593,"t":2592,"y":3377,"d":false},{"x":32767,"t":2593,"y":0,"d":false},{"x":-32583,"t":2594,"y":3469,"d":false},{"x":32767,"t":2595,"y":0,"d":false},{"x":-32590,"t":2596,"y":3398,"d":false},{"x":32767,"t":2597,"y":0,"d":false},{"x":-32598,"t":2598,"y":3323,"d":false},{"x":31086,"t":2599,"y":-10362,"d":false},{"x":-32591,"t":2600,"y":3388,"d":false},{"x":32767,"t":2601,"y":0,"d":false},{"x":-32599,"t":2602,"y":3310,"d":false},{"x":32767,"t":2603,"y":0,"d":false},{"x":-32591,"t":2604,"y":3395,"d":false},{"x":31086,"t":2605,"y":-10362,"d":false},{"x":-32581,"t":2606,"y":3485,"d":false},{"d":false,"x":32767,"y":0,"t":2607},{"d":false,"x":-32573,"y":3560,"t":2608},{"d":false,"x":32767,"y":0,"t":2609},{"d":false,"x":-23170,"y":-23170,"t":2610},{"d":false,"x":-23170,"y":-23170,"t":2611},{"d":false,"x":23170,"y":23170,"t":2612},{"d":false,"x":-23170,"y":-23170,"t":2613},{"d":false,"x":23170,"y":23170,"t":2614},{"d":false,"x":-23170,"y":-23170,"t":2615},{"d":false,"x":23170,"y":23170,"t":2616},{"d":false,"x":-23170,"y":-23170,"t":2617},{"d":false,"x":23170,"y":23170,"t":2618},{"d":false,"x":-23170,"y":-23170,"t":2619},{"d":false,"x":23170,"y":23170,"t":2620},{"d":false,"x":-23170,"y":-23170,"t":2621},{"d":false,"x":23170,"y":23170,"t":2622},{"d":false,"x":-23170,"y":-23170,"t":2623},{"d":false,"x":5967,"y":-32219,"t":2624},{"d":false,"x":-23170,"y":-23170,"t":2625},{"d":false,"x":10825,"y":-30927,"t":2626},{"d":false,"x":11505,"y":-30681,"t":2627},{"d":false,"x":-23170,"y":-23170,"t":2628},{"d":false,"x":-23170,"y":-23170,"t":2629},{"d":false,"x":13065,"y":-30050,"t":2630},{"d":false,"x":14027,"y":-29613,"t":2631},{"d":false,"x":-23170,"y":-23170,"t":2632},{"d":false,"x":-23170,"y":-23170,"t":2633},{"d":false,"x":25972,"y":-19978,"t":2634},{"d":false,"x":-23170,"y":-23170,"t":2635},{"d":false,"x":-23170,"y":-23170,"t":2636},{"d":false,"x":32480,"y":-4331,"t":2637},{"d":false,"x":-23170,"y":-23170,"t":2638},{"d":false,"x":-23170,"y":-23170,"t":2639},{"d":false,"x":1170,"y":-32746,"t":2640},{"d":false,"x":-23170,"y":-23170,"t":2641},{"d":false,"x":-23170,"y":-23170,"t":2642},{"x":10362,"t":2643,"y":-31086,"d":false},{"x":-23170,"t":2644,"y":-23170,"d":false},{"x":19273,"t":2645,"y":-26500,"d":false},{"x":-23170,"t":2646,"y":-23170,"d":false},{"x":-23170,"t":2647,"y":-23170,"d":false},{"x":-23170,"t":2648,"y":-23170,"d":false},{"x":32767,"t":2649,"y":0,"d":false},{"x":-23170,"t":2650,"y":-23170,"d":false},{"x":31928,"t":2651,"y":7368,"d":false},{"x":31987,"t":2652,"y":7108,"d":false},{"x":32131,"t":2653,"y":6426,"d":false},{"x":23170,"t":2654,"y":23170,"d":false},{"x":-23170,"t":2655,"y":-23170,"d":false},{"x":23170,"t":2656,"y":23170,"d":false},{"x":-23170,"t":2657,"y":-23170,"d":false},{"x":23170,"t":2658,"y":23170,"d":false},{"x":-23170,"t":2659,"y":-23170,"d":false},{"x":23170,"t":2660,"y":23170,"d":false},{"x":-23170,"t":2661,"y":-23170,"d":false},{"x":23170,"t":2662,"y":23170,"d":false},{"x":-23170,"t":2663,"y":-23170,"d":false},{"x":23170,"t":2664,"y":23170,"d":false},{"x":-23170,"t":2665,"y":-23170,"d":false},{"x":23170,"t":2666,"y":23170,"d":false},{"x":-23170,"t":2667,"y":-23170,"d":false},{"x":23170,"t":2668,"y":23170,"d":false},{"x":-23170,"t":2669,"y":-23170,"d":false},{"x":23170,"t":2670,"y":23170,"d":false},{"x":-23170,"t":2671,"y":-23170,"d":false},{"x":23170,"t":2672,"y":23170,"d":false},{"x":-23170,"t":2673,"y":-23170,"d":false},{"x":23170,"t":2674,"y":23170,"d":false},{"x":-32477,"t":2675,"y":4347,"d":false},{"x":18176,"t":2676,"y":-27264,"d":false},{"x":0,"t":2677,"y":32767,"d":false},{"x":32206,"t":2678,"y":-6039,"d":false},{"d":false,"x":-32493,"t":2679,"y":4227},{"d":false,"x":32206,"t":2680,"y":-6039},{"d":false,"x":-32489,"t":2681,"y":4261},{"d":false,"x":32206,"t":2682,"y":-6039},{"d":false,"x":-32480,"t":2683,"y":4331},{"d":false,"x":-32395,"t":2684,"y":4921},{"d":false,"x":32404,"t":2685,"y":-4861},{"d":false,"x":-32386,"t":2686,"y":4982},{"d":false,"x":32404,"t":2687,"y":-4861},{"d":false,"x":-32373,"t":2688,"y":5067},{"d":false,"x":32404,"t":2689,"y":-4861},{"d":false,"x":-32363,"t":2690,"y":5132},{"d":false,"x":32404,"t":2691,"y":-4861},{"d":false,"x":-32348,"t":2692,"y":5222},{"d":false,"x":32404,"t":2693,"y":-4861},{"d":false,"x":-32337,"t":2694,"y":5291},{"d":false,"x":32131,"t":2695,"y":-6426},{"d":false,"x":-32321,"t":2696,"y":5387},{"d":false,"x":32404,"t":2697,"y":-4861},{"d":false,"x":-32305,"t":2698,"y":5486},{"d":false,"x":-32194,"t":2699,"y":6103},{"d":false,"x":32321,"t":2700,"y":-5387},{"d":false,"x":-32177,"t":2701,"y":6188},{"d":false,"x":32321,"t":2702,"y":-5387},{"d":false,"x":-32177,"t":2703,"y":6188},{"d":false,"x":32321,"t":2704,"y":-5387},{"d":false,"x":-32177,"t":2705,"y":6188},{"d":false,"x":32078,"t":2706,"y":-6683},{"d":false,"x":-32177,"t":2707,"y":6188},{"d":false,"x":32321,"t":2708,"y":-5387},{"d":false,"x":-32177,"t":2709,"y":6188},{"d":false,"x":32078,"t":2710,"y":-6683},{"d":false,"x":-32177,"t":2711,"y":6188},{"d":false,"x":32321,"t":2712,"y":-5387},{"d":false,"x":-32177,"t":2713,"y":6188},{"d":false,"x":32078,"t":2714,"y":-6683},{"x":-32177,"d":false,"y":6188,"t":2715},{"x":32078,"d":false,"y":-6683,"t":2716},{"x":-32177,"d":false,"y":6188,"t":2717},{"x":32321,"d":false,"y":-5387,"t":2718},{"x":-32177,"d":false,"y":6188,"t":2719},{"x":32078,"d":false,"y":-6683,"t":2720},{"x":-32177,"d":false,"y":6188,"t":2721},{"x":32321,"d":false,"y":-5387,"t":2722},{"x":-32177,"d":false,"y":6188,"t":2723},{"x":32078,"d":false,"y":-6683,"t":2724},{"x":-32177,"d":false,"y":6188,"t":2725},{"x":32078,"d":false,"y":-6683,"t":2726},{"x":-32177,"d":false,"y":6188,"t":2727},{"x":32321,"d":false,"y":-5387,"t":2728},{"x":-32177,"d":false,"y":6188,"t":2729},{"x":32078,"d":false,"y":-6683,"t":2730},{"x":-32149,"d":false,"y":6335,"t":2731},{"x":32078,"d":false,"y":-6683,"t":2732},{"x":-32085,"d":false,"y":6650,"t":2733},{"x":-31896,"d":false,"y":7505,"t":2734},{"x":32257,"d":false,"y":-5760,"t":2735},{"x":-31799,"d":false,"y":7905,"t":2736},{"x":-23170,"d":false,"y":-23170,"t":2737},{"x":-23170,"d":false,"y":-23170,"t":2738},{"x":-23170,"d":false,"y":-23170,"t":2739},{"x":-23170,"d":false,"y":-23170,"t":2740},{"x":-23170,"d":false,"y":-23170,"t":2741},{"x":-23170,"d":false,"y":-23170,"t":2742},{"x":-23170,"d":false,"y":-23170,"t":2743},{"x":-23170,"d":false,"y":-23170,"t":2744},{"x":-23170,"d":false,"y":-23170,"t":2745},{"x":-23170,"d":false,"y":-23170,"t":2746},{"x":-23170,"d":false,"y":-23170,"t":2747},{"x":-23170,"d":false,"y":-23170,"t":2748},{"x":-23170,"d":false,"y":-23170,"t":2749},{"x":-23170,"d":false,"y":-23170,"t":2750},{"d":false,"x":-23170,"y":-23170,"t":2751},{"d":false,"x":-23170,"y":-23170,"t":2752},{"d":false,"x":-23170,"y":-23170,"t":2753},{"d":false,"x":-23170,"y":-23170,"t":2754},{"d":false,"x":-23170,"y":-23170,"t":2755},{"d":false,"x":-23170,"y":-23170,"t":2756},{"d":false,"x":-23170,"y":-23170,"t":2757},{"d":false,"x":-26724,"y":18960,"t":2758},{"d":false,"x":-26279,"y":19573,"t":2759},{"d":false,"x":-25797,"y":20204,"t":2760},{"d":false,"x":-25392,"y":20710,"t":2761},{"d":false,"x":-24904,"y":21295,"t":2762},{"d":false,"x":-24400,"y":21870,"t":2763},{"d":false,"x":-23966,"y":22345,"t":2764},{"d":false,"x":-23439,"y":22898,"t":2765},{"d":false,"x":-22898,"y":23439,"t":2766},{"d":false,"x":-22435,"y":23882,"t":2767},{"d":false,"x":-21870,"y":24400,"t":2768},{"d":false,"x":-21295,"y":24904,"t":2769},{"d":false,"x":-20799,"y":25320,"t":2770},{"d":false,"x":-20204,"y":25797,"t":2771},{"d":false,"x":-19689,"y":26192,"t":2772},{"d":false,"x":-19079,"y":26639,"t":2773},{"d":false,"x":-18548,"y":27012,"t":2774},{"d":false,"x":-17883,"y":27457,"t":2775},{"d":false,"x":-17253,"y":27857,"t":2776},{"d":false,"x":-16700,"y":28192,"t":2777},{"d":false,"x":-16005,"y":28592,"t":2778},{"d":false,"x":-15438,"y":28902,"t":2779},{"d":false,"x":-14726,"y":29272,"t":2780},{"d":false,"x":-14220,"y":29521,"t":2781},{"d":false,"x":-13491,"y":29861,"t":2782},{"d":false,"x":-12756,"y":30182,"t":2783},{"d":false,"x":-12231,"y":30399,"t":2784},{"d":false,"x":-11486,"y":30688,"t":2785},{"d":false,"x":-23170,"y":-23170,"t":2786},{"t":2787,"y":-23170,"x":-23170,"d":false},{"t":2788,"y":-23170,"x":-23170,"d":false},{"t":2789,"y":-23170,"x":-23170,"d":false},{"t":2790,"y":-23170,"x":-23170,"d":false},{"t":2791,"y":-23170,"x":-23170,"d":false},{"t":2792,"y":-23170,"x":-23170,"d":false},{"t":2793,"y":-23170,"x":-23170,"d":false},{"t":2794,"y":-23170,"x":-23170,"d":false},{"t":2795,"y":-23170,"x":-23170,"d":false},{"t":2796,"y":-23170,"x":-23170,"d":false},{"t":2797,"y":-23170,"x":-23170,"d":false},{"t":2798,"y":-23170,"x":-23170,"d":false},{"t":2799,"y":-23170,"x":-23170,"d":false},{"t":2800,"y":-23170,"x":-23170,"d":false},{"t":2801,"y":-23170,"x":-23170,"d":false},{"t":2802,"y":-23170,"x":-23170,"d":false},{"t":2803,"y":-23170,"x":-23170,"d":false},{"t":2804,"y":-23170,"x":-23170,"d":false},{"t":2805,"y":-23170,"x":-23170,"d":false},{"t":2806,"y":-23170,"x":-23170,"d":false},{"t":2807,"y":-23170,"x":-23170,"d":false},{"t":2808,"y":-23170,"x":-23170,"d":false},{"t":2809,"y":-23170,"x":-23170,"d":false},{"t":2810,"y":-23170,"x":-23170,"d":false},{"t":2811,"y":-23170,"x":-23170,"d":false},{"t":2812,"y":-23170,"x":-23170,"d":false},{"t":2813,"y":-23170,"x":-23170,"d":false},{"t":2814,"y":-23170,"x":-23170,"d":false},{"t":2815,"y":-23170,"x":-23170,"d":false},{"t":2816,"y":-23170,"x":-23170,"d":false},{"t":2817,"y":26343,"x":-19487,"d":false},{"t":2818,"y":26724,"x":-18960,"d":false},{"t":2819,"y":27236,"x":-18217,"d":false},{"t":2820,"y":27592,"x":-17673,"d":false},{"t":2821,"y":27937,"x":-17123,"d":false},{"t":2822,"y":28349,"x":-16432,"d":false},{"y":28669,"d":false,"x":-15867,"t":2823},{"y":29051,"d":false,"x":-15157,"t":2824},{"y":29344,"d":false,"x":-14582,"t":2825},{"y":29693,"d":false,"x":-13857,"t":2826},{"y":29928,"d":false,"x":-13341,"t":2827},{"y":30246,"d":false,"x":-12603,"t":2828},{"y":30546,"d":false,"x":-11859,"t":2829},{"y":30747,"d":false,"x":-11328,"t":2830},{"y":30994,"d":false,"x":-10632,"t":2831},{"y":31243,"d":false,"x":-9876,"t":2832},{"y":31458,"d":false,"x":-9168,"t":2833},{"y":-13134,"d":false,"x":30020,"t":2834},{"y":-5760,"d":false,"x":32257,"t":2835},{"y":-5387,"d":false,"x":32321,"t":2836},{"y":-6426,"d":false,"x":32131,"t":2837},{"y":-5694,"d":false,"x":32268,"t":2838},{"y":-2254,"d":false,"x":32689,"t":2839},{"y":-2613,"d":false,"x":32663,"t":2840},{"y":-3107,"d":false,"x":32619,"t":2841},{"y":-1924,"d":false,"x":32710,"t":2842},{"y":-1129,"d":false,"x":32748,"t":2843},{"y":-1310,"d":false,"x":32741,"t":2844},{"y":-1559,"d":false,"x":32730,"t":2845},{"y":0,"d":false,"x":32767,"t":2846},{"y":0,"d":false,"x":32767,"t":2847},{"y":0,"d":false,"x":32767,"t":2848},{"y":0,"d":false,"x":32767,"t":2849},{"y":0,"d":false,"x":32767,"t":2850},{"y":0,"d":false,"x":32767,"t":2851},{"y":0,"d":false,"x":32767,"t":2852},{"y":0,"d":false,"x":32767,"t":2853},{"y":0,"d":false,"x":32767,"t":2854},{"y":-15829,"d":false,"x":28690,"t":2855},{"y":-16858,"d":false,"x":28097,"t":2856},{"y":-16670,"d":false,"x":28210,"t":2857},{"y":-15913,"d":false,"x":28644,"t":2858},{"t":2859,"x":28097,"d":false,"y":-16858},{"t":2860,"x":25402,"d":false,"y":-20698},{"t":2861,"x":25172,"d":false,"y":-20977},{"t":2862,"x":25468,"d":false,"y":-20617},{"t":2863,"x":25172,"d":false,"y":-20977},{"t":2864,"x":25587,"d":false,"y":-20469},{"t":2865,"x":24011,"d":false,"y":-22296},{"t":2866,"x":24114,"d":false,"y":-22185},{"t":2867,"x":24246,"d":false,"y":-22041},{"t":2868,"x":23787,"d":false,"y":-22535},{"t":2869,"x":23905,"d":false,"y":-22411},{"t":2870,"x":24077,"d":false,"y":-22225},{"t":2871,"x":23620,"d":false,"y":-22711},{"t":2872,"x":23170,"d":false,"y":-23170},{"t":2873,"x":23728,"d":false,"y":-22598},{"t":2874,"x":23822,"d":false,"y":-22499},{"t":2875,"x":23954,"d":false,"y":-22358},{"t":2876,"x":23170,"d":false,"y":-23170},{"t":2877,"x":23170,"d":false,"y":-23170},{"t":2878,"x":23170,"d":false,"y":-23170},{"t":2879,"x":23170,"d":false,"y":-23170},{"t":2880,"x":23861,"d":false,"y":-22457},{"t":2881,"x":23170,"d":false,"y":-23170},{"t":2882,"x":23170,"d":false,"y":-23170},{"t":2883,"x":23170,"d":false,"y":-23170},{"t":2884,"x":23170,"d":false,"y":-23170},{"t":2885,"x":23170,"d":false,"y":-23170},{"t":2886,"x":23170,"d":false,"y":-23170},{"t":2887,"x":23170,"d":false,"y":-23170},{"t":2888,"x":23170,"d":false,"y":-23170},{"t":2889,"x":23170,"d":false,"y":-23170},{"t":2890,"x":23170,"d":false,"y":-23170},{"t":2891,"x":23170,"d":false,"y":-23170},{"t":2892,"x":23954,"d":false,"y":-22358},{"t":2893,"x":23170,"d":false,"y":-23170},{"t":2894,"x":31553,"d":false,"y":8835},{"y":9002,"x":31506,"d":false,"t":2895},{"y":9246,"x":31436,"d":false,"t":2896},{"y":9636,"x":31318,"d":false,"t":2897},{"y":10362,"x":31086,"d":false,"t":2898},{"y":5387,"x":32321,"d":false,"t":2899},{"y":8020,"x":-31770,"d":false,"t":2900},{"y":8456,"x":-31657,"d":false,"t":2901},{"y":-3619,"x":32567,"d":false,"t":2902},{"y":8365,"x":-31681,"d":false,"t":2903},{"y":-7108,"x":31987,"d":false,"t":2904},{"y":-6426,"x":32131,"d":false,"t":2905},{"y":7922,"x":-31795,"d":false,"t":2906},{"y":8370,"x":-31680,"d":false,"t":2907},{"y":-7108,"x":31987,"d":false,"t":2908},{"y":8350,"x":-31685,"d":false,"t":2909},{"y":-23170,"x":23170,"d":false,"t":2910},{"y":8476,"x":-31652,"d":false,"t":2911},{"y":23170,"x":-23170,"d":false,"t":2912},{"y":-23170,"x":23170,"d":false,"t":2913},{"y":23170,"x":-23170,"d":false,"t":2914},{"y":-23170,"x":23170,"d":false,"t":2915},{"y":-3260,"x":32604,"d":false,"t":2916},{"y":-23170,"x":23170,"d":false,"t":2917},{"y":23170,"x":-23170,"d":false,"t":2918},{"y":-23170,"x":23170,"d":false,"t":2919},{"y":23170,"x":-23170,"d":false,"t":2920},{"y":-23170,"x":23170,"d":false,"t":2921},{"y":23170,"x":-23170,"d":false,"t":2922},{"y":-23170,"x":23170,"d":false,"t":2923},{"y":23170,"x":-23170,"d":false,"t":2924},{"y":-23170,"x":23170,"d":false,"t":2925},{"y":-23170,"x":23170,"d":false,"t":2926},{"y":23170,"x":-23170,"d":false,"t":2927},{"y":-23170,"x":23170,"d":false,"t":2928},{"y":23170,"x":-23170,"d":false,"t":2929},{"y":-23170,"x":23170,"d":false,"t":2930},{"t":2931,"y":23170,"d":false,"x":-23170},{"t":2932,"y":-23170,"d":false,"x":23170},{"t":2933,"y":23170,"d":false,"x":-23170},{"t":2934,"y":-23170,"d":false,"x":23170},{"t":2935,"y":23170,"d":false,"x":-23170},{"t":2936,"y":-23170,"d":false,"x":23170},{"t":2937,"y":23170,"d":false,"x":-23170},{"t":2938,"y":-23170,"d":false,"x":23170},{"t":2939,"y":23170,"d":false,"x":-23170},{"t":2940,"y":-23170,"d":false,"x":23170},{"t":2941,"y":-23170,"d":false,"x":23170},{"t":2942,"y":-23170,"d":false,"x":23170},{"t":2943,"y":-23170,"d":false,"x":23170},{"t":2944,"y":-23170,"d":false,"x":23170},{"t":2945,"y":-23170,"d":false,"x":23170},{"t":2946,"y":-23170,"d":false,"x":23170},{"t":2947,"y":-23170,"d":false,"x":23170},{"t":2948,"y":-23170,"d":false,"x":23170},{"t":2949,"y":7619,"d":false,"x":-31869},{"t":2950,"y":-23170,"d":true,"x":23170},{"t":2951,"y":7243,"d":false,"x":-31956},{"t":2952,"y":-23170,"d":true,"x":23170},{"t":2953,"y":7422,"d":false,"x":-31915},{"t":2954,"y":-23170,"d":true,"x":23170},{"t":2955,"y":7476,"d":false,"x":-31903},{"t":2956,"y":-23170,"d":true,"x":23170},{"t":2957,"y":-23170,"d":true,"x":23170},{"t":2958,"y":6943,"d":false,"x":-32023},{"t":2959,"y":7824,"d":false,"x":-31819},{"t":2960,"y":8684,"d":false,"x":-31595},{"t":2961,"y":9348,"d":false,"x":-31405},{"t":2962,"y":10204,"d":false,"x":-31138},{"t":2963,"y":10552,"d":false,"x":-31022},{"t":2964,"y":10933,"d":false,"x":-30889},{"t":2965,"y":11377,"d":false,"x":-30728},{"t":2966,"y":11763,"d":false,"x":-30583},{"d":false,"x":-30394,"t":2967,"y":12243},{"d":false,"x":-30288,"t":2968,"y":12503},{"d":false,"x":-30084,"t":2969,"y":12986},{"d":false,"x":-29929,"t":2970,"y":13338},{"d":false,"x":-29751,"t":2971,"y":13731},{"d":false,"x":-29566,"t":2972,"y":14126},{"d":false,"x":-29308,"t":2973,"y":14654},{"d":false,"x":-29086,"t":2974,"y":15090},{"d":false,"x":-28741,"t":2975,"y":15736},{"d":false,"x":-28503,"t":2976,"y":16163},{"d":false,"x":-28184,"t":2977,"y":16714},{"d":false,"x":-27903,"t":2978,"y":17179},{"d":false,"x":-27595,"t":2979,"y":17669},{"d":false,"x":-27297,"t":2980,"y":18125},{"d":false,"x":-26992,"t":2981,"y":18577},{"d":false,"x":-26627,"t":2982,"y":19097},{"d":false,"x":-26305,"t":2983,"y":19538},{"d":false,"x":-25976,"t":2984,"y":19973},{"d":false,"x":-25704,"t":2985,"y":20322},{"d":false,"x":-25404,"t":2986,"y":20696},{"d":false,"x":-24956,"t":2987,"y":21234},{"d":false,"x":-24599,"t":2988,"y":21647},{"d":false,"x":-24241,"t":2989,"y":22047},{"d":false,"x":-23819,"t":2990,"y":22502},{"d":false,"x":-23550,"t":2991,"y":22783},{"d":false,"x":-23115,"t":2992,"y":23224},{"d":false,"x":-22672,"t":2993,"y":23657},{"d":false,"x":-22221,"t":2994,"y":24082},{"d":false,"x":-21817,"t":2995,"y":24448},{"d":false,"x":-21406,"t":2996,"y":24809},{"d":false,"x":-20934,"t":2997,"y":25208},{"d":false,"x":-20509,"t":2998,"y":25555},{"d":false,"x":-20026,"t":2999,"y":25935},{"d":false,"x":-19643,"t":3000,"y":26227},{"d":false,"x":-19149,"t":3001,"y":26589},{"d":false,"x":-18629,"t":3002,"y":26957},{"d":false,"t":3003,"x":-18302,"y":27179},{"d":false,"t":3004,"x":-17719,"y":27563},{"d":false,"t":3005,"x":-17179,"y":27903},{"d":false,"t":3006,"x":-16762,"y":28155},{"d":false,"t":3007,"x":-16210,"y":28477},{"d":false,"t":3008,"x":-15783,"y":28716},{"d":false,"t":3009,"x":-15220,"y":29017},{"d":false,"t":3010,"x":-14741,"y":29264},{"d":false,"t":3011,"x":-14215,"y":29523},{"d":false,"t":3012,"x":-13773,"y":29732},{"d":false,"t":3013,"x":-13237,"y":29974},{"d":false,"t":3014,"x":-12657,"y":30224},{"d":false,"t":3015,"x":-12245,"y":30393},{"d":false,"t":3016,"x":-11697,"y":30608},{"d":false,"t":3017,"x":-11145,"y":30813},{"d":false,"t":3018,"x":-10624,"y":30997},{"d":false,"t":3019,"x":-10165,"y":31150},{"d":false,"t":3020,"x":-9736,"y":31287},{"d":false,"t":3021,"x":-9305,"y":31418},{"d":false,"t":3022,"x":-8872,"y":31543},{"d":false,"t":3023,"x":-8436,"y":31662},{"d":false,"t":3024,"x":-8102,"y":31750},{"d":false,"t":3025,"x":-7663,"y":31858},{"d":false,"t":3026,"x":-7224,"y":31961},{"d":false,"t":3027,"x":-6783,"y":32057},{"d":false,"t":3028,"x":-6342,"y":32147},{"d":false,"t":3029,"x":-5900,"y":32231},{"d":false,"t":3030,"x":-5458,"y":32309},{"d":false,"t":3031,"x":-5032,"y":32378},{"d":false,"t":3032,"x":-4588,"y":32444},{"d":false,"t":3033,"x":-4159,"y":32502},{"d":false,"t":3034,"x":-3714,"y":32556},{"d":false,"t":3035,"x":-3282,"y":32602},{"d":false,"t":3036,"x":-2839,"y":32644},{"d":false,"t":3037,"x":-2404,"y":32679},{"d":false,"t":3038,"x":-1969,"y":32708},{"x":-1527,"d":false,"t":3039,"y":32731},{"x":-1092,"d":false,"t":3040,"y":32749},{"x":-655,"d":false,"t":3041,"y":32760},{"x":-218,"d":false,"t":3042,"y":32766},{"x":218,"d":false,"t":3043,"y":32766},{"x":11505,"d":false,"t":3044,"y":-30681},{"x":219,"d":false,"t":3045,"y":32766},{"x":9774,"d":false,"t":3046,"y":-31275},{"x":221,"d":false,"t":3047,"y":32766},{"x":6039,"d":false,"t":3048,"y":-32206},{"x":221,"d":false,"t":3049,"y":32766},{"x":6039,"d":false,"t":3050,"y":-32206},{"x":443,"d":false,"t":3051,"y":32764},{"x":4064,"d":false,"t":3052,"y":-32514},{"x":666,"d":false,"t":3053,"y":32760},{"x":2044,"d":false,"t":3054,"y":-32703},{"x":999,"d":false,"t":3055,"y":32752},{"x":2044,"d":false,"t":3056,"y":-32703},{"x":1221,"d":false,"t":3057,"y":32744},{"x":0,"d":false,"t":3058,"y":32767},{"x":0,"d":false,"t":3059,"y":32767},{"x":0,"d":false,"t":3060,"y":32767},{"x":0,"d":false,"t":3061,"y":32767},{"x":0,"d":false,"t":3062,"y":32767},{"x":0,"d":false,"t":3063,"y":32767},{"x":0,"d":false,"t":3064,"y":32767},{"x":0,"d":false,"t":3065,"y":32767},{"x":0,"d":false,"t":3066,"y":-32767},{"x":0,"d":false,"t":3067,"y":32767},{"x":0,"d":false,"t":3068,"y":-32767},{"x":0,"d":false,"t":3069,"y":32767},{"x":0,"d":false,"t":3070,"y":-32767},{"x":0,"d":false,"t":3071,"y":32767},{"x":0,"d":false,"t":3072,"y":-32767},{"x":0,"d":false,"t":3073,"y":32767},{"x":0,"d":false,"t":3074,"y":-32767},{"t":3075,"x":0,"y":32767,"d":false},{"t":3076,"x":0,"y":-32767,"d":false},{"t":3077,"x":0,"y":32767,"d":false},{"t":3078,"x":0,"y":-32767,"d":false},{"t":3079,"x":0,"y":32767,"d":false},{"t":3080,"x":0,"y":32767,"d":false},{"t":3081,"x":0,"y":-32767,"d":false},{"t":3082,"x":0,"y":-32767,"d":false},{"t":3083,"x":0,"y":32767,"d":false},{"t":3084,"x":0,"y":-32767,"d":false},{"t":3085,"x":0,"y":32767,"d":false},{"t":3086,"x":0,"y":-32767,"d":false},{"t":3087,"x":0,"y":32767,"d":false},{"t":3088,"x":0,"y":-32767,"d":false},{"t":3089,"x":0,"y":32767,"d":false},{"t":3090,"x":0,"y":-32767,"d":false},{"t":3091,"x":0,"y":32767,"d":true},{"t":3092,"x":0,"y":-32767,"d":false},{"t":3093,"x":0,"y":32767,"d":true},{"t":3094,"x":0,"y":-32767,"d":false},{"t":3095,"x":0,"y":32767,"d":true},{"t":3096,"x":0,"y":-32767,"d":false},{"t":3097,"x":0,"y":32767,"d":true},{"t":3098,"x":0,"y":-32767,"d":false},{"t":3099,"x":0,"y":-32767,"d":false},{"t":3100,"x":0,"y":-32767,"d":false},{"t":3101,"x":0,"y":-32767,"d":false},{"t":3102,"x":7921,"y":31795,"d":false},{"t":3103,"x":-1170,"y":-32746,"d":false},{"t":3104,"x":-1364,"y":-32739,"d":false},{"t":3105,"x":8400,"y":31672,"d":false},{"t":3106,"x":-2721,"y":-32654,"d":false},{"t":3107,"x":8670,"y":31599,"d":false},{"t":3108,"x":-11505,"y":-30681,"d":false},{"t":3109,"x":8881,"y":31540,"d":false},{"t":3110,"x":-11505,"y":-30681,"d":false},{"y":31450,"x":9197,"d":false,"t":3111},{"y":-31789,"x":-7947,"d":false,"t":3112},{"y":31379,"x":9436,"d":false,"t":3113},{"y":-30681,"x":-11505,"d":false,"t":3114},{"y":31316,"x":9644,"d":false,"t":3115},{"y":-31789,"x":-7947,"d":false,"t":3116},{"y":31241,"x":9883,"d":false,"t":3117},{"y":-30681,"x":-11505,"d":false,"t":3118},{"y":31131,"x":10225,"d":false,"t":3119},{"y":-31789,"x":-7947,"d":false,"t":3120},{"y":31051,"x":10464,"d":false,"t":3121},{"y":-30681,"x":-11505,"d":false,"t":3122},{"y":30982,"x":10668,"d":false,"t":3123},{"y":-30681,"x":-11505,"d":false,"t":3124},{"y":30899,"x":10906,"d":false,"t":3125},{"y":30653,"x":11580,"d":false,"t":3126},{"y":-31086,"x":-10362,"d":false,"t":3127},{"y":30562,"x":11816,"d":false,"t":3128},{"y":-31086,"x":-10362,"d":false,"t":3129},{"y":30470,"x":12052,"d":false,"t":3130},{"y":-31086,"x":-10362,"d":false,"t":3131},{"y":30376,"x":12287,"d":false,"t":3132},{"y":-29830,"x":-13559,"d":false,"t":3133},{"y":30280,"x":12522,"d":false,"t":3134},{"y":-30794,"x":-11198,"d":false,"t":3135},{"y":30141,"x":12853,"d":false,"t":3136},{"y":-29830,"x":-13559,"d":false,"t":3137},{"y":30041,"x":13086,"d":false,"t":3138},{"y":-29830,"x":-13559,"d":false,"t":3139},{"y":29938,"x":13319,"d":false,"t":3140},{"y":-29830,"x":-13559,"d":false,"t":3141},{"y":29834,"x":13551,"d":false,"t":3142},{"y":-29830,"x":-13559,"d":false,"t":3143},{"y":29728,"x":13782,"d":false,"t":3144},{"y":-29830,"x":-13559,"d":false,"t":3145},{"y":29576,"x":14105,"d":false,"t":3146},{"d":false,"x":-13559,"t":3147,"y":-29830},{"d":false,"x":14334,"t":3148,"y":29465},{"d":false,"x":-13559,"t":3149,"y":-29830},{"d":false,"x":14563,"t":3150,"y":29353},{"d":false,"x":-13559,"t":3151,"y":-29830},{"d":false,"x":14790,"t":3152,"y":29239},{"d":false,"x":-15289,"t":3153,"y":-28981},{"d":false,"x":-15017,"t":3154,"y":-29123},{"d":false,"x":-14699,"t":3155,"y":-29285},{"d":false,"x":-14426,"t":3156,"y":-29420},{"d":false,"x":-14150,"t":3157,"y":-29554},{"d":false,"x":-13875,"t":3158,"y":-29684},{"d":false,"x":-13645,"t":3159,"y":-29791},{"d":false,"x":-13319,"t":3160,"y":-29938},{"d":false,"x":-12990,"t":3161,"y":-30082},{"d":false,"x":-12715,"t":3162,"y":-30199},{"d":false,"x":-12424,"t":3163,"y":-30320},{"d":false,"x":-12052,"t":3164,"y":-30470},{"d":false,"x":-11854,"t":3165,"y":-30548},{"d":false,"x":-11480,"t":3166,"y":-30690},{"d":false,"x":-11243,"t":3167,"y":-30778},{"d":false,"x":-10941,"t":3168,"y":-30886},{"d":false,"x":-10566,"t":3169,"y":-31017},{"d":false,"x":-10123,"t":3170,"y":-31164},{"d":false,"x":-9676,"t":3171,"y":-31306},{"d":false,"x":-9227,"t":3172,"y":-31441},{"d":false,"x":-8746,"t":3173,"y":-31578},{"d":false,"x":32677,"t":3174,"y":2421},{"d":false,"x":32644,"t":3175,"y":2839},{"d":false,"x":32587,"t":3176,"y":3430},{"d":false,"x":32750,"t":3177,"y":1056},{"d":false,"x":32745,"t":3178,"y":1213},{"d":false,"x":32736,"t":3179,"y":1423},{"d":false,"x":32722,"t":3180,"y":1722},{"d":false,"x":32750,"t":3181,"y":1056},{"d":false,"x":32745,"t":3182,"y":1213},{"y":0,"t":3183,"d":false,"x":32767},{"y":0,"t":3184,"d":false,"x":32767},{"y":0,"t":3185,"d":false,"x":32767},{"y":0,"t":3186,"d":false,"x":32767},{"y":0,"t":3187,"d":false,"x":32767},{"y":0,"t":3188,"d":false,"x":32767},{"y":0,"t":3189,"d":false,"x":32767},{"y":0,"t":3190,"d":false,"x":32767},{"y":0,"t":3191,"d":false,"x":32767},{"y":0,"t":3192,"d":false,"x":32767},{"y":0,"t":3193,"d":false,"x":32767},{"y":0,"t":3194,"d":false,"x":32767},{"y":0,"t":3195,"d":false,"x":32767},{"y":0,"t":3196,"d":false,"x":32767},{"y":0,"t":3197,"d":false,"x":32767},{"y":0,"t":3198,"d":false,"x":32767},{"y":0,"t":3199,"d":false,"x":32767},{"y":0,"t":3200,"d":false,"x":32767},{"y":0,"t":3201,"d":false,"x":32767},{"y":0,"t":3202,"d":false,"x":32767},{"y":0,"t":3203,"d":false,"x":32767},{"y":0,"t":3204,"d":false,"x":32767},{"y":0,"t":3205,"d":false,"x":32767},{"y":0,"t":3206,"d":false,"x":32767},{"y":0,"t":3207,"d":false,"x":32767},{"y":0,"t":3208,"d":false,"x":32767},{"y":0,"t":3209,"d":false,"x":32767},{"y":0,"t":3210,"d":false,"x":32767},{"y":0,"t":3211,"d":false,"x":32767},{"y":0,"t":3212,"d":false,"x":32767},{"y":0,"t":3213,"d":false,"x":32767},{"y":0,"t":3214,"d":false,"x":32767},{"y":0,"t":3215,"d":false,"x":32767},{"y":0,"t":3216,"d":false,"x":32767},{"y":0,"t":3217,"d":false,"x":32767},{"y":0,"t":3218,"d":false,"x":32767},{"t":3219,"d":false,"y":0,"x":32767},{"t":3220,"d":false,"y":0,"x":32767},{"t":3221,"d":false,"y":0,"x":32767},{"t":3222,"d":false,"y":0,"x":32767},{"t":3223,"d":false,"y":0,"x":32767},{"t":3224,"d":false,"y":0,"x":32767},{"t":3225,"d":false,"y":0,"x":32767},{"t":3226,"d":false,"y":0,"x":32767},{"t":3227,"d":false,"y":0,"x":32767},{"t":3228,"d":false,"y":0,"x":32767},{"t":3229,"d":false,"y":15028,"x":29117},{"t":3230,"d":false,"y":15913,"x":28644},{"t":3231,"d":false,"y":15606,"x":28812},{"t":3232,"d":false,"y":15791,"x":28711},{"t":3233,"d":false,"y":15331,"x":28959},{"t":3234,"d":false,"y":20361,"x":25673},{"t":3235,"d":false,"y":19978,"x":25972},{"t":3236,"d":false,"y":20195,"x":25804},{"t":3237,"d":false,"y":20469,"x":25587},{"t":3238,"d":false,"y":20663,"x":25431},{"t":3239,"d":false,"y":21166,"x":25014},{"t":3240,"d":false,"y":22225,"x":24077},{"t":3241,"d":false,"y":22094,"x":24198},{"t":3249,"d":false,"y":-2247,"x":32690},{"t":3250,"d":false,"y":-1799,"x":32718},{"t":3251,"d":false,"y":-1251,"x":32743},{"t":3252,"d":false,"y":-802,"x":32757},{"t":3253,"d":false,"y":-347,"x":32765},{"t":3254,"d":false,"y":117,"x":32767},{"t":3255,"d":false,"y":587,"x":32762},{"t":3256,"d":false,"y":1068,"x":32750},{"t":3257,"d":false,"y":1434,"x":32736},{"t":3258,"d":false,"y":1931,"x":32710},{"t":3259,"d":false,"y":2430,"x":32677},{"t":3260,"d":false,"y":2944,"x":32634},{"t":3261,"d":false,"y":3469,"x":32583},{"x":32553,"y":3742,"d":false,"t":3262},{"x":32484,"y":4297,"d":false,"t":3263},{"x":32409,"y":4830,"d":false,"t":3264},{"x":-32342,"y":-5262,"d":false,"t":3265},{"x":-32414,"y":-4797,"d":false,"t":3266},{"x":-32481,"y":-4322,"d":false,"t":3267},{"x":-32543,"y":-3821,"d":false,"t":3268},{"x":-32596,"y":-3340,"d":false,"t":3269},{"x":-32645,"y":-2821,"d":false,"t":3270},{"x":-32685,"y":-2315,"d":false,"t":3271},{"x":-32718,"y":-1787,"d":false,"t":3272},{"x":-32743,"y":-1243,"d":false,"t":3273},{"x":-32760,"y":-700,"d":false,"t":3274},{"x":-32767,"y":-141,"d":false,"t":3275},{"x":-32764,"y":429,"d":false,"t":3276},{"x":-32751,"y":1010,"d":false,"t":3277},{"x":-32728,"y":1600,"d":false,"t":3278},{"x":-32692,"y":2219,"d":false,"t":3279},{"x":-32644,"y":2832,"d":false,"t":3280},{"x":-32583,"y":3469,"d":false,"t":3281},{"x":-32526,"y":3970,"d":false,"t":3282},{"x":-32441,"y":4612,"d":false,"t":3283},{"x":-32334,"y":5311,"d":false,"t":3284},{"x":-32246,"y":5820,"d":false,"t":3285},{"x":32767,"y":0,"d":false,"t":3286},{"x":-32244,"y":5833,"d":false,"t":3287},{"x":32514,"y":-4064,"d":false,"t":3288},{"x":-32246,"y":5818,"d":false,"t":3289},{"x":32514,"y":-4064,"d":false,"t":3290},{"x":32767,"y":0,"d":false,"t":3291},{"x":-32353,"y":5190,"d":false,"t":3292},{"x":31789,"y":-7947,"d":false,"t":3293},{"x":-32363,"y":5129,"d":false,"t":3294},{"x":31789,"y":-7947,"d":false,"t":3295},{"x":-32369,"y":5092,"d":false,"t":3296},{"x":-23170,"y":-23170,"d":false,"t":3297},{"t":3298,"d":false,"x":31506,"y":9002},{"t":3299,"d":false,"x":-23170,"y":-23170},{"t":3300,"d":false,"x":14654,"y":-29308},{"t":3301,"d":false,"x":-23170,"y":-23170},{"t":3302,"d":false,"x":26664,"y":-19045},{"t":3303,"d":false,"x":-23170,"y":-23170},{"t":3304,"d":false,"x":-23170,"y":-23170},{"t":3305,"d":false,"x":31086,"y":10362},{"t":3306,"d":false,"x":-23170,"y":-23170},{"t":3307,"d":false,"x":-23170,"y":-23170},{"t":3308,"d":false,"x":27644,"y":17592},{"t":3309,"d":false,"x":-23170,"y":-23170},{"t":3310,"d":false,"x":26500,"y":19273},{"t":3311,"d":false,"x":-23170,"y":-23170},{"t":3312,"d":false,"x":25587,"y":20469},{"t":3313,"d":false,"x":-23170,"y":-23170},{"t":3314,"d":false,"x":25587,"y":20469},{"t":3315,"d":false,"x":-23170,"y":-23170},{"t":3316,"d":false,"x":24356,"y":21920},{"t":3317,"d":false,"x":-23170,"y":-23170},{"t":3318,"d":false,"x":24356,"y":21920},{"t":3319,"d":false,"x":-23170,"y":-23170},{"t":3320,"d":false,"x":-23170,"y":-23170},{"t":3321,"d":false,"x":23170,"y":23170},{"t":3322,"d":false,"x":-23170,"y":-23170},{"t":3323,"d":false,"x":23170,"y":23170},{"t":3324,"d":false,"x":-23170,"y":-23170},{"t":3325,"d":false,"x":23170,"y":23170},{"t":3326,"d":false,"x":-23170,"y":-23170},{"t":3327,"d":false,"x":23170,"y":23170},{"t":3328,"d":false,"x":-23170,"y":-23170},{"t":3329,"d":false,"x":-23170,"y":-23170},{"t":3330,"d":false,"x":-1924,"y":-32710},{"t":3331,"d":false,"x":-23170,"y":-23170},{"t":3332,"d":false,"x":2513,"y":-32670},{"t":3333,"d":false,"x":-23170,"y":-23170},{"d":false,"x":7947,"t":3334,"y":-31789},{"d":false,"x":-23170,"t":3335,"y":-23170},{"d":false,"x":7688,"t":3336,"y":-31852},{"d":false,"x":-23170,"t":3337,"y":-23170},{"d":false,"x":-23170,"t":3338,"y":-23170},{"d":false,"x":16417,"t":3339,"y":-28357},{"d":false,"x":16064,"t":3340,"y":-28559},{"d":false,"x":16510,"t":3341,"y":-28303},{"d":false,"x":15913,"t":3342,"y":-28644},{"d":false,"x":16858,"t":3343,"y":-28097},{"d":false,"x":14654,"t":3344,"y":-29308},{"d":false,"x":0,"t":3345,"y":32767},{"d":false,"x":0,"t":3346,"y":-32767},{"d":false,"x":0,"t":3347,"y":32767},{"d":false,"x":0,"t":3348,"y":-32767},{"d":false,"x":0,"t":3349,"y":32767},{"d":false,"x":0,"t":3350,"y":-32767},{"d":false,"x":0,"t":3351,"y":32767},{"d":false,"x":0,"t":3352,"y":-32767},{"d":false,"x":0,"t":3353,"y":32767},{"d":false,"x":0,"t":3354,"y":-32767},{"d":false,"x":0,"t":3355,"y":32767},{"d":false,"x":0,"t":3356,"y":-32767},{"d":false,"x":0,"t":3357,"y":32767},{"d":false,"x":0,"t":3358,"y":-32767},{"d":false,"x":0,"t":3359,"y":32767},{"d":false,"x":0,"t":3360,"y":-32767},{"d":false,"x":0,"t":3361,"y":32767},{"d":false,"x":0,"t":3362,"y":-32767},{"d":false,"x":0,"t":3363,"y":32767},{"d":false,"x":0,"t":3364,"y":-32767},{"d":false,"x":32514,"t":3365,"y":4064},{"d":false,"x":-32558,"t":3366,"y":3697},{"d":false,"x":32703,"t":3367,"y":2044},{"d":false,"x":-32538,"t":3368,"y":3867},{"d":false,"x":32767,"t":3369,"y":0},{"y":3551,"d":false,"t":3370,"x":-32574},{"y":-2180,"d":false,"t":3371,"x":32694},{"y":3591,"d":false,"t":3372,"x":-32570},{"y":-2180,"d":false,"t":3373,"x":32694},{"y":3632,"d":false,"t":3374,"x":-32565},{"y":-2180,"d":false,"t":3375,"x":32694},{"y":3674,"d":false,"t":3376,"x":-32560},{"y":-2180,"d":false,"t":3377,"x":32694},{"y":3717,"d":false,"t":3378,"x":-32555},{"y":-2180,"d":false,"t":3379,"x":32694},{"y":3761,"d":false,"t":3380,"x":-32550},{"y":-4331,"d":false,"t":3381,"x":32480},{"y":3806,"d":false,"t":3382,"x":-32545},{"y":-2180,"d":false,"t":3383,"x":32694},{"y":3836,"d":false,"t":3384,"x":-32542},{"y":-4331,"d":false,"t":3385,"x":32480},{"y":3883,"d":false,"t":3386,"x":-32536},{"y":-4331,"d":false,"t":3387,"x":32480},{"y":3931,"d":false,"t":3388,"x":-32530},{"y":-4331,"d":false,"t":3389,"x":32480},{"y":3980,"d":false,"t":3390,"x":-32524},{"y":-4331,"d":false,"t":3391,"x":32480},{"y":4013,"d":false,"t":3392,"x":-32520},{"y":4595,"d":false,"t":3393,"x":-32443},{"y":-3430,"d":false,"t":3394,"x":32587},{"y":4674,"d":false,"t":3395,"x":-32432},{"y":-3430,"d":false,"t":3396,"x":32587},{"y":4714,"d":false,"t":3397,"x":-32426},{"y":-3430,"d":false,"t":3398,"x":32587},{"y":4776,"d":false,"t":3399,"x":-32417},{"y":-5110,"d":false,"t":3400,"x":32366},{"y":4839,"d":false,"t":3401,"x":-32408},{"y":-3430,"d":false,"t":3402,"x":32587},{"y":4904,"d":false,"t":3403,"x":-32398},{"y":-5110,"d":false,"t":3404,"x":32366},{"y":4949,"d":false,"t":3405,"x":-32391},{"y":-5110,"t":3406,"x":32366,"d":false},{"y":5017,"t":3407,"x":-32381,"d":false},{"y":-5110,"t":3408,"x":32366,"d":false},{"y":5087,"t":3409,"x":-32370,"d":false},{"y":-5110,"t":3410,"x":32366,"d":false},{"y":5159,"t":3411,"x":-32358,"d":false},{"y":5793,"t":3412,"x":-32251,"d":false},{"y":-4238,"t":3413,"x":32492,"d":false},{"y":5793,"t":3414,"x":-32251,"d":false},{"y":-5614,"t":3415,"x":32282,"d":false},{"y":5793,"t":3416,"x":-32251,"d":false},{"y":-5614,"t":3417,"x":32282,"d":false},{"y":5820,"t":3418,"x":-32246,"d":false},{"y":-5614,"t":3419,"x":32282,"d":false},{"y":5848,"t":3420,"x":-32241,"d":false},{"y":-5614,"t":3421,"x":32282,"d":false},{"y":5848,"t":3422,"x":-32241,"d":false},{"y":-5614,"t":3423,"x":32282,"d":false},{"y":5876,"t":3424,"x":-32236,"d":false},{"y":-5614,"t":3425,"x":32282,"d":false},{"y":5904,"t":3426,"x":-32231,"d":false},{"y":-16257,"t":3427,"x":28450,"d":false},{"y":6058,"t":3428,"x":-32202,"d":false},{"y":-7947,"t":3429,"x":31789,"d":false},{"y":6029,"t":3430,"x":-32208,"d":false},{"y":-7947,"t":3431,"x":31789,"d":false},{"y":6058,"t":3432,"x":-32202,"d":false},{"y":-7947,"t":3433,"x":31789,"d":false},{"y":6087,"t":3434,"x":-32197,"d":false},{"y":-7947,"t":3435,"x":31789,"d":false},{"y":6087,"t":3436,"x":-32197,"d":false},{"y":-7947,"t":3437,"x":31789,"d":false},{"y":6116,"t":3438,"x":-32191,"d":false},{"y":-4064,"t":3439,"x":32514,"d":false},{"y":6146,"t":3440,"x":-32185,"d":false},{"y":-7947,"t":3441,"x":31789,"d":false},{"y":6146,"d":false,"x":-32185,"t":3442},{"y":-4064,"d":false,"x":32514,"t":3443},{"y":6176,"d":false,"x":-32180,"t":3444},{"y":-7947,"d":false,"x":31789,"t":3445},{"y":6206,"d":false,"x":-32174,"t":3446},{"y":-4064,"d":false,"x":32514,"t":3447},{"y":6206,"d":false,"x":-32174,"t":3448},{"y":-7947,"d":false,"x":31789,"t":3449},{"y":6237,"d":false,"x":-32168,"t":3450},{"y":-4064,"d":false,"x":32514,"t":3451},{"y":6267,"d":false,"x":-32162,"t":3452},{"y":-7947,"d":false,"x":31789,"t":3453},{"y":6299,"d":false,"x":-32156,"t":3454},{"y":-7947,"d":false,"x":31789,"t":3455},{"y":6299,"d":false,"x":-32156,"t":3456},{"y":-4064,"d":false,"x":32514,"t":3457},{"y":6330,"d":false,"x":-32150,"t":3458},{"y":-7947,"d":false,"x":31789,"t":3459},{"y":6362,"d":false,"x":-32144,"t":3460},{"y":-4064,"d":false,"x":32514,"t":3461},{"y":6394,"d":false,"x":-32137,"t":3462},{"y":-7947,"d":false,"x":31789,"t":3463},{"y":6394,"d":false,"x":-32137,"t":3464},{"y":-7947,"d":false,"x":31789,"t":3465},{"y":6394,"d":false,"x":-32137,"t":3466},{"y":-4064,"d":false,"x":32514,"t":3467},{"y":6394,"d":false,"x":-32137,"t":3468},{"y":-7947,"d":false,"x":31789,"t":3469},{"y":6394,"d":false,"x":-32137,"t":3470},{"y":23170,"d":false,"x":23170,"t":3471},{"y":23170,"d":false,"x":23170,"t":3472},{"y":23170,"d":false,"x":23170,"t":3473},{"y":23170,"d":false,"x":23170,"t":3474},{"y":23170,"d":false,"x":23170,"t":3475},{"y":23170,"d":false,"x":23170,"t":3476},{"y":23170,"d":false,"x":23170,"t":3477},{"t":3478,"x":23170,"y":23170,"d":false},{"t":3479,"x":23170,"y":23170,"d":false},{"t":3480,"x":23170,"y":23170,"d":false},{"t":3481,"x":23170,"y":23170,"d":false},{"t":3482,"x":23170,"y":23170,"d":false},{"t":3483,"x":23170,"y":23170,"d":false},{"t":3484,"x":23170,"y":23170,"d":false},{"t":3485,"x":23170,"y":23170,"d":false},{"t":3486,"x":23170,"y":23170,"d":false},{"t":3487,"x":23170,"y":23170,"d":false},{"t":3488,"x":23170,"y":23170,"d":false},{"t":3489,"x":23170,"y":-23170,"d":false},{"t":3490,"x":23170,"y":-23170,"d":false},{"t":3491,"x":23170,"y":-23170,"d":false},{"t":3492,"x":23170,"y":-23170,"d":false},{"t":3493,"x":23170,"y":-23170,"d":false},{"t":3494,"x":23170,"y":-23170,"d":false},{"t":3495,"x":23170,"y":23170,"d":false},{"t":3496,"x":23170,"y":23170,"d":false},{"t":3497,"x":23170,"y":23170,"d":false},{"t":3498,"x":23170,"y":23170,"d":false},{"t":3499,"x":23170,"y":23170,"d":false},{"t":3500,"x":23170,"y":23170,"d":false},{"t":3501,"x":23170,"y":23170,"d":false},{"t":3502,"x":23170,"y":23170,"d":false},{"t":3503,"x":23170,"y":23170,"d":false},{"t":3504,"x":23170,"y":23170,"d":false},{"t":3505,"x":23170,"y":23170,"d":false},{"t":3506,"x":23170,"y":23170,"d":false},{"t":3507,"x":23170,"y":23170,"d":false},{"t":3508,"x":0,"y":32767,"d":false},{"t":3509,"x":0,"y":32767,"d":false},{"t":3510,"x":0,"y":32767,"d":false},{"t":3511,"x":0,"y":32767,"d":false},{"t":3512,"x":0,"y":32767,"d":false},{"t":3513,"x":23170,"y":23170,"d":false},{"y":23170,"x":23170,"d":false,"t":3514},{"y":23170,"x":23170,"d":false,"t":3515},{"y":23170,"x":23170,"d":false,"t":3516},{"y":23170,"x":23170,"d":false,"t":3517},{"y":23170,"x":23170,"d":false,"t":3518},{"y":23170,"x":23170,"d":false,"t":3519},{"y":23170,"x":23170,"d":false,"t":3520},{"y":0,"x":32767,"d":false,"t":3521},{"y":0,"x":32767,"d":false,"t":3522},{"y":0,"x":32767,"d":false,"t":3523},{"y":0,"x":32767,"d":false,"t":3524},{"y":0,"x":32767,"d":false,"t":3525},{"y":0,"x":32767,"d":false,"t":3526},{"y":0,"x":32767,"d":false,"t":3527},{"y":0,"x":32767,"d":false,"t":3528},{"y":0,"x":32767,"d":false,"t":3529},{"y":0,"x":32767,"d":false,"t":3530},{"y":0,"x":32767,"d":false,"t":3531},{"y":0,"x":32767,"d":false,"t":3532},{"y":0,"x":32767,"d":false,"t":3533},{"y":0,"x":32767,"d":false,"t":3534},{"y":0,"x":32767,"d":false,"t":3535},{"y":0,"x":32767,"d":false,"t":3536},{"y":0,"x":32767,"d":false,"t":3537},{"y":0,"x":32767,"d":false,"t":3538},{"y":0,"x":32767,"d":false,"t":3539},{"y":0,"x":32767,"d":false,"t":3540},{"y":0,"x":32767,"d":false,"t":3541},{"y":0,"x":32767,"d":false,"t":3542},{"y":0,"x":32767,"d":false,"t":3543},{"y":0,"x":32767,"d":false,"t":3544},{"y":0,"x":32767,"d":false,"t":3545},{"y":32707,"x":1977,"d":false,"t":3546},{"y":32749,"x":1074,"d":false,"t":3547},{"y":32767,"x":0,"d":false,"t":3548},{"y":32755,"x":-895,"d":false,"t":3549},{"d":false,"t":3550,"x":-1788,"y":32718},{"d":false,"t":3551,"x":-2870,"y":32641},{"d":false,"t":3552,"x":2156,"y":32696},{"d":false,"t":3553,"x":16049,"y":28567},{"d":false,"t":3554,"x":15544,"y":28845},{"d":false,"t":3555,"x":14910,"y":29178},{"d":false,"t":3556,"x":14397,"y":29435},{"d":false,"t":3557,"x":13752,"y":29742},{"d":false,"t":3558,"x":13100,"y":30034},{"d":false,"t":3559,"x":12500,"y":30289},{"d":false,"t":3560,"x":11838,"y":30554},{"d":false,"t":3561,"x":11224,"y":30785},{"d":false,"t":3562,"x":10602,"y":31004},{"d":false,"t":3563,"x":9928,"y":31227},{"d":false,"t":3564,"x":9298,"y":31420},{"d":false,"t":3565,"x":8662,"y":31601},{"d":false,"t":3566,"x":7872,"y":31807},{"d":false,"t":3567,"x":11417,"y":30714},{"d":false,"t":3568,"x":10889,"y":30905},{"d":false,"t":3569,"x":10266,"y":31117},{"d":false,"t":3570,"x":9636,"y":31318},{"d":false,"t":3571,"x":9002,"y":31506},{"d":false,"t":3572,"x":8363,"y":31682},{"d":false,"t":3573,"x":7872,"y":31807},{"d":false,"t":3574,"x":7227,"y":31960},{"d":false,"t":3575,"x":6580,"y":32099},{"d":false,"t":3576,"x":5932,"y":32226},{"d":false,"t":3577,"x":-5283,"y":-32338},{"d":false,"t":3578,"x":-5932,"y":-32226},{"d":false,"t":3579,"x":-6580,"y":-32099},{"d":false,"t":3580,"x":-7193,"y":-31968},{"d":false,"t":3581,"x":-7834,"y":-31817},{"d":false,"t":3582,"x":-8473,"y":-31653},{"d":false,"t":3583,"x":-8960,"y":-31518},{"d":false,"t":3584,"x":-9591,"y":-31332},{"d":false,"t":3585,"x":-5439,"y":-32312},{"d":false,"t":3586,"y":-32202,"x":-6058},{"d":false,"t":3587,"y":-32106,"x":-6549},{"d":false,"t":3588,"y":-31968,"x":-7193},{"d":false,"t":3589,"y":-31817,"x":-7834},{"d":false,"t":3590,"y":-31653,"x":-8473},{"d":false,"t":3591,"y":-31518,"x":-8960},{"d":false,"t":3592,"y":-31376,"x":-9445},{"d":false,"t":3593,"y":-31180,"x":-10074},{"d":false,"t":3594,"y":-30972,"x":-10696},{"d":false,"t":3595,"y":-30804,"x":-11172},{"d":false,"t":3596,"y":-30554,"x":-11838},{"d":false,"t":3597,"y":-30368,"x":-12307},{"d":false,"t":3598,"y":-30093,"x":-12965},{"d":false,"t":3599,"y":-29890,"x":-13426},{"d":false,"t":3600,"y":-29652,"x":-13944},{"d":false,"t":3601,"y":-29340,"x":-14590},{"d":false,"t":3602,"y":-29048,"x":-15162},{"d":false,"t":3603,"y":28778,"x":15668},{"d":false,"t":3604,"y":29113,"x":15037},{"d":false,"t":3605,"y":29403,"x":14461},{"d":false,"t":3606,"y":29713,"x":13813},{"d":false,"t":3607,"y":29949,"x":13293},{"d":false,"t":3608,"y":30289,"x":12500},{"d":false,"t":3609,"y":30533,"x":11892},{"d":false,"t":3610,"y":30733,"x":11365},{"d":false,"t":3611,"y":30955,"x":10746},{"d":false,"t":3612,"y":31212,"x":9975},{"d":false,"t":3613,"y":31407,"x":9342},{"d":false,"t":3614,"y":31560,"x":8811},{"d":false,"t":3615,"y":31731,"x":8173},{"d":false,"t":3616,"y":31925,"x":7380},{"d":false,"t":3617,"y":32068,"x":6734},{"d":false,"t":3618,"y":32191,"x":6116},{"d":false,"t":3619,"y":32308,"x":5465},{"d":false,"t":3620,"y":32434,"x":4656},{"d":false,"t":3621,"y":32519,"x":4025},{"t":3622,"x":3372,"y":32593,"d":false},{"t":3623,"x":9044,"y":31494,"d":false},{"t":3624,"x":8403,"y":31671,"d":false},{"t":3625,"x":7909,"y":31798,"d":false},{"t":3626,"x":7262,"y":31952,"d":false},{"t":3627,"x":6612,"y":32093,"d":false},{"t":3628,"x":5961,"y":32220,"d":false},{"t":3629,"x":-5309,"y":-32334,"d":false},{"t":3630,"x":-5961,"y":-32220,"d":false},{"t":3631,"x":-6612,"y":-32093,"d":false},{"t":3632,"x":-7227,"y":-31960,"d":false},{"t":3633,"x":-7872,"y":-31807,"d":false},{"t":3634,"x":-8363,"y":-31682,"d":false},{"t":3635,"x":-9002,"y":-31506,"d":false},{"t":3636,"x":-2734,"y":-32653,"d":false},{"t":3637,"x":-3388,"y":-32591,"d":false},{"t":3638,"x":-4025,"y":-32519,"d":false},{"t":3639,"x":-4679,"y":-32431,"d":false},{"t":3640,"x":-5152,"y":-32359,"d":false},{"t":3641,"x":-5805,"y":-32249,"d":false},{"t":3642,"x":-6457,"y":-32124,"d":false},{"t":3643,"x":-7074,"y":-31994,"d":false},{"t":3644,"x":-7568,"y":-31881,"d":false},{"t":3645,"x":-8212,"y":-31721,"d":false},{"t":3646,"x":-8853,"y":-31548,"d":false},{"t":3647,"x":-9342,"y":-31407,"d":false},{"t":3648,"x":-9975,"y":-31212,"d":false},{"t":3649,"x":-10507,"y":-31037,"d":false},{"t":3650,"x":-11133,"y":-30818,"d":false},{"t":3651,"x":-11752,"y":-30587,"d":false},{"t":3652,"x":-12281,"y":-30379,"d":false},{"t":3653,"x":-12752,"y":-30184,"d":false},{"t":3654,"x":-13413,"y":-29896,"d":false},{"t":3655,"x":13874,"y":29685,"d":false},{"t":3656,"x":13413,"y":29896,"d":false},{"t":3657,"x":12614,"y":30242,"d":false},{"d":false,"y":30512,"t":3658,"x":11946},{"d":false,"y":30694,"t":3659,"x":11470},{"d":false,"y":30920,"t":3660,"x":10846},{"d":false,"y":31197,"t":3661,"x":10022},{"d":false,"y":31394,"t":3662,"x":9386},{"d":false,"y":31579,"t":3663,"x":8745},{"d":false,"y":31711,"t":3664,"x":8251},{"d":false,"y":31909,"t":3665,"x":7451},{"d":false,"y":32054,"t":3666,"x":6799},{"d":false,"y":32185,"t":3667,"x":6146},{"d":false,"y":32304,"t":3668,"x":5492},{"d":false,"y":32428,"t":3669,"x":4702},{"d":false,"y":32516,"t":3670,"x":4044},{"d":false,"y":32590,"t":3671,"x":3405},{"d":false,"y":32652,"t":3672,"x":2748},{"d":false,"y":32709,"t":3673,"x":1943},{"d":false,"y":31336,"t":3674,"x":9579},{"d":false,"y":31537,"t":3675,"x":8895},{"d":false,"y":31671,"t":3676,"x":8403},{"d":false,"y":31836,"t":3677,"x":7757},{"d":false,"y":31987,"t":3678,"x":7108},{"d":false,"y":32118,"t":3679,"x":6489},{"d":false,"y":32244,"t":3680,"x":5833},{"d":false,"y":-32355,"t":3681,"x":-5177},{"d":false,"y":-32244,"t":3682,"x":-5833},{"d":false,"y":-32124,"t":3683,"x":-6457},{"d":false,"y":-31987,"t":3684,"x":-7108},{"d":false,"y":-31836,"t":3685,"x":-7757},{"d":false,"y":-31671,"t":3686,"x":-8403},{"d":false,"y":23170,"t":3687,"x":23170},{"d":false,"y":23170,"t":3688,"x":23170},{"d":false,"y":23170,"t":3689,"x":23170},{"d":false,"y":23170,"t":3690,"x":23170},{"d":false,"y":23170,"t":3691,"x":23170},{"d":false,"y":23170,"t":3692,"x":23170},{"d":false,"y":23170,"t":3693,"x":23170},{"d":false,"t":3694,"x":23170,"y":23170},{"d":false,"t":3695,"x":23170,"y":23170},{"d":false,"t":3696,"x":23170,"y":23170},{"d":false,"t":3697,"x":23170,"y":23170},{"d":false,"t":3698,"x":32767,"y":0},{"d":false,"t":3699,"x":32767,"y":0},{"d":false,"t":3700,"x":32767,"y":0},{"d":false,"t":3701,"x":32767,"y":0},{"d":false,"t":3702,"x":32767,"y":0},{"d":false,"t":3703,"x":32767,"y":0},{"d":false,"t":3704,"x":32767,"y":0},{"d":false,"t":3705,"x":32767,"y":0},{"d":false,"t":3711,"x":-23170,"y":-23170},{"d":false,"t":3712,"x":23170,"y":23170},{"d":false,"t":3713,"x":-23170,"y":-23170},{"d":false,"t":3714,"x":23170,"y":23170},{"d":false,"t":3715,"x":-23170,"y":-23170},{"d":false,"t":3716,"x":23170,"y":23170},{"d":false,"t":3717,"x":-23170,"y":-23170},{"d":false,"t":3718,"x":23170,"y":23170},{"d":false,"t":3719,"x":-23170,"y":-23170},{"d":false,"t":3720,"x":23170,"y":23170},{"d":false,"t":3721,"x":-23170,"y":-23170},{"d":false,"t":3722,"x":23170,"y":23170},{"d":false,"t":3723,"x":-23170,"y":-23170},{"d":false,"t":3724,"x":23170,"y":23170},{"d":false,"t":3725,"x":-23170,"y":-23170},{"d":false,"t":3726,"x":23170,"y":23170},{"d":false,"t":3727,"x":-23170,"y":-23170},{"d":false,"t":3728,"x":23170,"y":23170},{"d":false,"t":3729,"x":-23170,"y":-23170},{"d":false,"t":3730,"x":23170,"y":23170},{"d":false,"t":3731,"x":-23170,"y":-23170},{"d":false,"t":3732,"x":23170,"y":23170},{"d":false,"t":3733,"x":-23170,"y":-23170},{"d":false,"t":3734,"x":23170,"y":23170},{"x":-23170,"d":false,"y":-23170,"t":3735},{"x":23170,"d":false,"y":23170,"t":3736},{"x":-23170,"d":false,"y":-23170,"t":3737},{"x":23170,"d":false,"y":23170,"t":3738},{"x":-23170,"d":false,"y":-23170,"t":3739},{"x":23170,"d":false,"y":23170,"t":3740},{"x":21679,"d":false,"y":-24570,"t":3857},{"x":21324,"d":false,"y":-24879,"t":3858},{"x":11380,"d":false,"y":-30727,"t":3859},{"x":10765,"d":false,"y":-30948,"t":3860},{"x":11328,"d":false,"y":-30747,"t":3861},{"x":6226,"d":false,"y":-32170,"t":3862},{"x":5967,"d":false,"y":-32219,"t":3863},{"x":5614,"d":false,"y":-32282,"t":3864},{"x":4861,"d":false,"y":-32404,"t":3865},{"x":3058,"d":false,"y":-32624,"t":3866},{"x":2335,"d":false,"y":-32684,"t":3867},{"x":2721,"d":false,"y":-32654,"t":3868},{"x":3260,"d":false,"y":-32604,"t":3869},{"x":-13907,"d":false,"y":-29669,"t":3870},{"x":-13799,"d":false,"y":-29720,"t":3871},{"x":-13653,"d":false,"y":-29787,"t":3872},{"x":-14088,"d":false,"y":-29584,"t":3873},{"x":-13952,"d":false,"y":-29648,"t":3874},{"x":-19377,"d":false,"y":-26423,"t":3875},{"x":-19978,"d":false,"y":-25972,"t":3876},{"x":-19476,"d":false,"y":-26350,"t":3877},{"x":-19660,"d":false,"y":-26214,"t":3878},{"x":-19904,"d":false,"y":-26029,"t":3879},{"x":-19045,"d":false,"y":-26664,"t":3880},{"x":-30246,"d":false,"y":-12603,"t":3881},{"x":-29881,"d":false,"y":-13446,"t":3882},{"x":-30020,"d":false,"y":-13134,"t":3883},{"x":-26539,"d":false,"y":-19218,"t":3884},{"x":-26456,"d":false,"y":-19333,"t":3885},{"x":-25928,"d":false,"y":-20035,"t":3886},{"d":false,"t":3887,"y":-19437,"x":-26379},{"d":false,"t":3888,"y":-19660,"x":-26214},{"d":false,"t":3889,"y":-10682,"x":-30977},{"d":false,"t":3890,"y":-9987,"x":-31208},{"d":false,"t":3891,"y":-10362,"x":-31086},{"d":false,"t":3892,"y":-10906,"x":-30899},{"d":false,"t":3893,"y":-4331,"x":-32480},{"d":false,"t":3894,"y":-4982,"x":-32386},{"d":false,"t":3895,"y":-4427,"x":-32467},{"d":false,"t":3896,"y":-5387,"x":-32321},{"d":false,"t":3897,"y":13857,"x":-29693},{"d":false,"t":3898,"y":13731,"x":-29751},{"d":false,"t":3899,"y":14138,"x":-29560},{"d":false,"t":3900,"y":14027,"x":-29613},{"d":false,"t":3901,"y":19524,"x":-26315},{"d":false,"t":3902,"y":19660,"x":-26214},{"d":false,"t":3903,"y":19146,"x":-26592},{"d":false,"t":3904,"y":19273,"x":-26500},{"d":false,"t":3905,"y":20117,"x":-25865},{"d":false,"t":3906,"y":19377,"x":-26423},{"d":false,"t":3907,"y":19660,"x":-26214},{"d":false,"t":3908,"y":18176,"x":-27264},{"d":false,"t":3909,"y":20469,"x":-25587},{"d":false,"t":3910,"y":23170,"x":-23170},{"d":false,"t":3911,"y":23847,"x":-22472},{"d":false,"t":3912,"y":23515,"x":-22820},{"d":false,"t":3913,"y":23111,"x":-23228},{"d":false,"t":3914,"y":22814,"x":-23520},{"d":false,"t":3915,"y":22446,"x":-23871},{"d":false,"t":3916,"y":22065,"x":-24224},{"d":false,"t":3917,"y":21739,"x":-24517},{"d":false,"t":3918,"y":21335,"x":-24870},{"d":false,"t":3919,"y":21049,"x":-25112},{"d":false,"t":3920,"y":20621,"x":-25465},{"d":false,"t":3921,"y":20316,"x":-25709},{"d":false,"t":3922,"y":19862,"x":-26061},{"d":false,"y":19476,"x":-26350,"t":3923},{"d":false,"y":18997,"x":-26698,"t":3924},{"d":false,"y":18563,"x":-27001,"t":3925},{"d":false,"y":18206,"x":-27244,"t":3926},{"d":false,"y":17746,"x":-27546,"t":3927},{"d":false,"y":17210,"x":-27883,"t":3928},{"d":false,"y":16819,"x":-28121,"t":3929},{"d":false,"y":16476,"x":-28323,"t":3930},{"d":false,"y":15960,"x":-28618,"t":3931},{"d":false,"y":15427,"x":-28908,"t":3932},{"d":false,"y":14878,"x":-29195,"t":3933},{"d":false,"y":14483,"x":-29392,"t":3934},{"d":false,"y":13904,"x":-29671,"t":3935},{"d":false,"y":13308,"x":-29943,"t":3936},{"d":false,"y":12925,"x":-30110,"t":3937},{"d":false,"y":12297,"x":-30372,"t":3938},{"d":false,"y":11783,"x":-30575,"t":3939},{"d":false,"y":11307,"x":-30754,"t":3940},{"d":false,"y":10729,"x":-30961,"t":3941},{"d":false,"y":10037,"x":-31192,"t":3942},{"d":false,"y":9516,"x":-31355,"t":3943},{"d":false,"y":8835,"x":-31553,"t":3944},{"d":false,"y":8323,"x":-31692,"t":3945},{"d":false,"y":7757,"x":-31836,"t":3946},{"d":false,"y":7022,"x":-32006,"t":3947},{"d":false,"y":6458,"x":-32124,"t":3948},{"d":false,"y":5685,"x":-32270,"t":3949},{"d":false,"y":5110,"x":-32366,"t":3950},{"d":false,"y":-4466,"x":32461,"t":3951},{"d":false,"y":-5021,"x":32380,"t":3952},{"d":false,"y":-5815,"x":32247,"t":3953},{"d":false,"y":-6426,"x":32131,"t":3954},{"d":false,"y":-7223,"x":31961,"t":3955},{"d":false,"y":23170,"x":23170,"t":3956},{"d":false,"y":23170,"x":23170,"t":3957},{"d":false,"y":-8499,"x":31646,"t":3958},{"x":23170,"y":23170,"d":false,"t":3959},{"x":23170,"y":23170,"d":false,"t":3960},{"x":31227,"y":-9928,"d":false,"t":3961},{"x":23170,"y":23170,"d":false,"t":3962},{"x":23170,"y":23170,"d":false,"t":3963},{"x":30784,"y":-11227,"d":false,"t":3964},{"x":23170,"y":23170,"d":false,"t":3965},{"x":30436,"y":-12138,"d":false,"t":3966},{"x":23170,"y":23170,"d":false,"t":3967},{"x":23170,"y":23170,"d":false,"t":3968},{"x":29965,"y":-13257,"d":false,"t":3969},{"x":23170,"y":23170,"d":false,"t":3970},{"x":23170,"y":23170,"d":false,"t":3971},{"x":29380,"y":-14509,"d":false,"t":3972},{"x":23170,"y":23170,"d":false,"t":3973},{"x":23170,"y":23170,"d":false,"t":3974},{"x":28937,"y":-15373,"d":false,"t":3975},{"x":0,"y":32767,"d":false,"t":3976},{"x":0,"y":32767,"d":false,"t":3977},{"x":28937,"y":-15373,"d":false,"t":3978},{"x":0,"y":32767,"d":false,"t":3979},{"x":28703,"y":-15805,"d":false,"t":3980},{"x":0,"y":32767,"d":false,"t":3981},{"x":0,"y":32767,"d":false,"t":3982},{"x":0,"y":32767,"d":false,"t":3983},{"x":-28821,"y":15589,"d":false,"t":3984},{"x":0,"y":32767,"d":false,"t":3985},{"x":0,"y":32767,"d":false,"t":3986},{"x":-29486,"y":14291,"d":false,"t":3987},{"x":0,"y":32767,"d":false,"t":3988},{"x":0,"y":32767,"d":false,"t":3989},{"x":-30061,"y":13039,"d":false,"t":3990},{"x":23170,"y":23170,"d":false,"t":3991},{"x":-30192,"y":12732,"d":false,"t":3992},{"x":23170,"y":23170,"d":false,"t":3993},{"x":0,"y":32767,"d":false,"t":3994},{"t":3995,"d":false,"y":11981,"x":-30498},{"t":3996,"d":false,"y":23170,"x":23170},{"t":3997,"d":false,"y":23170,"x":23170},{"t":3998,"d":false,"y":11981,"x":-30498},{"t":3999,"d":false,"y":23170,"x":23170},{"t":4000,"d":false,"y":32767,"x":0},{"t":4001,"d":false,"y":11227,"x":-30784},{"t":4002,"d":false,"y":5207,"x":-32351},{"t":4003,"d":false,"y":4665,"x":-32433},{"t":4004,"d":false,"y":4243,"x":-32491},{"t":4005,"d":false,"y":3829,"x":-32543},{"t":4006,"d":false,"y":3395,"x":-32591},{"t":4007,"d":false,"y":2967,"x":-32632},{"t":4008,"d":false,"y":2408,"x":-32678},{"t":4009,"d":false,"y":1958,"x":-32708},{"t":4010,"d":false,"y":1509,"x":-32732},{"t":4011,"d":false,"y":1053,"x":-32750},{"t":4012,"d":false,"y":589,"x":-32762},{"t":4013,"d":false,"y":118,"x":-32767},{"t":4014,"d":false,"y":-357,"x":-32765},{"t":4015,"d":false,"y":-840,"x":-32756},{"t":4016,"d":false,"y":-1329,"x":-32740},{"t":4017,"d":false,"y":-1824,"x":-32716},{"t":4018,"d":false,"y":-2196,"x":-32693},{"t":4019,"d":false,"y":-2711,"x":-32655},{"t":4020,"d":false,"y":-3224,"x":-32608},{"t":4021,"d":false,"y":3742,"x":32553},{"t":4022,"d":false,"y":3260,"x":32604},{"t":4023,"d":false,"y":2773,"x":32649},{"t":4024,"d":false,"y":2163,"x":32696},{"t":4025,"d":false,"y":1668,"x":32725},{"t":4026,"d":false,"y":1165,"x":32746},{"t":4027,"d":false,"y":647,"x":32761},{"t":4028,"d":false,"y":131,"x":32767},{"t":4029,"d":false,"y":-395,"x":32765},{"t":4030,"d":false,"y":-928,"x":32754},{"x":32734,"t":4031,"y":-1476,"d":false},{"x":32713,"t":4032,"y":-1885,"d":false},{"x":32676,"t":4033,"y":-2441,"d":false},{"x":32629,"t":4034,"y":-3004,"d":false},{"x":32573,"t":4035,"y":-3558,"d":false},{"x":32510,"t":4036,"y":-4098,"d":false},{"x":32435,"t":4037,"y":-4653,"d":false},{"x":32354,"t":4038,"y":-5188,"d":false},{"x":32260,"t":4039,"y":-5741,"d":false},{"x":32162,"t":4040,"y":-6269,"d":false},{"x":-32050,"t":4041,"y":6819,"d":false},{"x":-32162,"t":4042,"y":6269,"d":false},{"x":-32260,"t":4043,"y":5741,"d":false},{"x":-32354,"t":4044,"y":5188,"d":false},{"x":-32438,"t":4045,"y":4634,"d":false},{"x":-32510,"t":4046,"y":4098,"d":false},{"x":-32575,"t":4047,"y":3544,"d":false},{"x":-32629,"t":4048,"y":3004,"d":false},{"x":-32675,"t":4049,"y":2451,"d":false},{"x":-32711,"t":4050,"y":1908,"d":false},{"x":-32739,"t":4051,"y":1364,"d":false},{"x":-32757,"t":4052,"y":819,"d":false},{"x":-32766,"t":4053,"y":273,"d":false},{"x":-32766,"t":4054,"y":-273,"d":false},{"x":-23170,"t":4055,"y":23170,"d":false},{"x":32767,"t":4056,"y":0,"d":false},{"x":-23170,"t":4057,"y":23170,"d":false},{"x":32767,"t":4058,"y":0,"d":false},{"x":-23170,"t":4059,"y":23170,"d":false},{"x":32767,"t":4060,"y":0,"d":false},{"x":32767,"t":4061,"y":0,"d":false},{"x":-23170,"t":4062,"y":23170,"d":false},{"x":32767,"t":4063,"y":0,"d":false},{"x":-23170,"t":4064,"y":23170,"d":false},{"x":32767,"t":4065,"y":0,"d":false},{"x":-23170,"t":4066,"y":23170,"d":false},{"t":4067,"x":32767,"y":0,"d":false},{"t":4068,"x":32767,"y":0,"d":false},{"t":4069,"x":-23170,"y":23170,"d":false},{"t":4070,"x":32767,"y":0,"d":false},{"t":4071,"x":-23170,"y":23170,"d":false},{"t":4072,"x":32767,"y":0,"d":false},{"t":4073,"x":-23170,"y":23170,"d":false},{"t":4074,"x":32767,"y":0,"d":false},{"t":4075,"x":-23170,"y":23170,"d":false},{"t":4076,"x":32767,"y":0,"d":false},{"t":4077,"x":32767,"y":0,"d":false},{"t":4078,"x":23170,"y":-23170,"d":false},{"t":4079,"x":32767,"y":0,"d":false},{"t":4080,"x":23170,"y":-23170,"d":false},{"t":4081,"x":-32680,"y":2384,"d":false},{"t":4082,"x":23170,"y":-23170,"d":false},{"t":4083,"x":32767,"y":0,"d":false},{"t":4084,"x":-32685,"y":2314,"d":false},{"t":4085,"x":23170,"y":-23170,"d":false},{"t":4086,"x":-32719,"y":1777,"d":false},{"t":4087,"x":23170,"y":-23170,"d":false},{"t":4088,"x":32767,"y":0,"d":false},{"t":4089,"x":23170,"y":-23170,"d":false},{"t":4090,"x":-32687,"y":2291,"d":false},{"t":4091,"x":-32723,"y":1690,"d":false},{"t":4092,"x":23170,"y":-23170,"d":false},{"t":4093,"x":32767,"y":0,"d":true},{"t":4094,"x":-32672,"y":2489,"d":false},{"t":4095,"x":32767,"y":0,"d":true},{"t":4096,"x":-32685,"y":2324,"d":false},{"t":4097,"x":32767,"y":0,"d":true},{"t":4098,"x":-32094,"y":6608,"d":false},{"t":4099,"x":-32321,"y":5387,"d":false},{"t":4100,"x":-32521,"y":4005,"d":false},{"t":4101,"x":-32650,"y":2761,"d":false},{"t":4102,"x":-32734,"y":1473,"d":false},{"y":166,"t":4103,"d":false,"x":-32767},{"y":-1175,"t":4104,"d":false,"x":-32746},{"y":-2539,"t":4105,"d":false,"x":-32668},{"y":-3260,"t":4106,"d":false,"x":-32604},{"y":-3829,"t":4107,"d":false,"x":-32543},{"y":4560,"t":4108,"d":false,"x":32448},{"y":3932,"t":4109,"d":false,"x":32530},{"y":3064,"t":4110,"d":false,"x":32623},{"y":23170,"t":4111,"d":false,"x":-23170},{"y":23170,"t":4112,"d":false,"x":-23170},{"y":3260,"t":4113,"d":false,"x":32604},{"y":23170,"t":4114,"d":false,"x":-23170},{"y":23170,"t":4115,"d":false,"x":-23170},{"y":23170,"t":4116,"d":false,"x":-23170},{"y":3997,"t":4117,"d":false,"x":32522},{"y":23170,"t":4118,"d":false,"x":-23170},{"y":23170,"t":4119,"d":false,"x":-23170},{"y":32767,"t":4120,"d":false,"x":0},{"y":4153,"t":4121,"d":false,"x":32503},{"y":23170,"t":4122,"d":false,"x":-23170},{"y":23170,"t":4123,"d":false,"x":-23170},{"y":32767,"t":4124,"d":false,"x":0},{"y":4153,"t":4125,"d":false,"x":32503},{"y":23170,"t":4126,"d":false,"x":-23170},{"y":32767,"t":4127,"d":false,"x":0},{"y":3797,"t":4128,"d":false,"x":32546},{"y":23170,"t":4129,"d":false,"x":-23170},{"y":3459,"t":4130,"d":false,"x":32584},{"y":23170,"t":4131,"d":false,"x":-23170},{"y":23170,"t":4132,"d":false,"x":-23170},{"y":32767,"t":4133,"d":false,"x":0},{"y":3619,"t":4134,"d":false,"x":32567},{"y":23170,"t":4135,"d":false,"x":-23170},{"y":32767,"t":4136,"d":false,"x":0},{"y":3459,"t":4137,"d":false,"x":32584},{"y":23170,"t":4138,"d":false,"x":-23170},{"x":-23170,"t":4139,"y":23170,"d":false},{"x":-23170,"t":4140,"y":23170,"d":false},{"x":32522,"t":4141,"y":3997,"d":false},{"x":-23170,"t":4142,"y":23170,"d":false},{"x":-23170,"t":4143,"y":23170,"d":false},{"x":-23170,"t":4144,"y":23170,"d":false},{"x":-23170,"t":4145,"y":23170,"d":false},{"x":32400,"t":4146,"y":4887,"d":false},{"x":-23170,"t":4147,"y":23170,"d":false},{"x":-23170,"t":4148,"y":23170,"d":false},{"x":32369,"t":4149,"y":5092,"d":false},{"x":-23170,"t":4150,"y":23170,"d":false},{"x":-23170,"t":4151,"y":23170,"d":false},{"x":32764,"t":4152,"y":429,"d":false},{"x":32767,"t":4153,"y":-143,"d":false},{"x":32759,"t":4154,"y":-715,"d":false},{"x":32742,"t":4155,"y":-1287,"d":false},{"x":32714,"t":4156,"y":-1857,"d":false},{"x":32677,"t":4157,"y":-2426,"d":false},{"x":32630,"t":4158,"y":-2992,"d":false},{"x":32572,"t":4159,"y":-3571,"d":false},{"x":32505,"t":4160,"y":-4134,"d":false},{"x":32426,"t":4161,"y":-4714,"d":false},{"x":32340,"t":4162,"y":-5271,"d":false},{"x":32241,"t":4163,"y":-5849,"d":false},{"x":32736,"t":4164,"y":1430,"d":false},{"x":32756,"t":4165,"y":855,"d":false},{"x":32766,"t":4166,"y":285,"d":false},{"x":32766,"t":4167,"y":-285,"d":false},{"x":32756,"t":4168,"y":-855,"d":false},{"x":32736,"t":4169,"y":-1423,"d":false},{"x":32706,"t":4170,"y":-1999,"d":false},{"x":32666,"t":4171,"y":-2568,"d":false},{"x":32617,"t":4172,"y":-3133,"d":false},{"x":32556,"t":4173,"y":-3713,"d":false},{"x":32487,"t":4174,"y":-4275,"d":false},{"d":false,"t":4175,"x":32406,"y":-4854},{"d":false,"t":4176,"x":-32317,"y":5410},{"d":false,"t":4177,"x":-32409,"y":4833},{"d":false,"t":4178,"x":-32487,"y":4275},{"d":false,"t":4179,"x":-30875,"y":10974},{"d":false,"t":4180,"x":-31086,"y":10362},{"d":false,"t":4181,"x":-31308,"y":9669},{"d":false,"t":4182,"x":-31428,"y":9271},{"d":false,"t":4183,"x":-31642,"y":8513},{"d":false,"t":4184,"x":-31846,"y":7715},{"d":false,"t":4185,"x":-32030,"y":6912},{"d":false,"t":4186,"x":-32196,"y":6091},{"d":false,"t":4187,"x":-32359,"y":5156},{"d":false,"t":4188,"x":23170,"y":23170},{"d":false,"t":4189,"x":23170,"y":23170},{"d":false,"t":4190,"x":23170,"y":23170},{"d":false,"t":4191,"x":23170,"y":23170},{"d":false,"t":4192,"x":23170,"y":23170},{"d":false,"t":4193,"x":23170,"y":23170},{"d":false,"t":4194,"x":23170,"y":23170},{"d":false,"t":4195,"x":23170,"y":23170},{"d":false,"t":4196,"x":23170,"y":23170},{"d":false,"t":4197,"x":23170,"y":23170},{"d":false,"t":4198,"x":23170,"y":23170},{"d":false,"t":4199,"x":23170,"y":23170},{"d":false,"t":4200,"x":23170,"y":23170},{"d":false,"t":4201,"x":23170,"y":23170},{"d":false,"t":4202,"x":23170,"y":23170},{"d":false,"t":4203,"x":23170,"y":23170},{"d":false,"t":4204,"x":23170,"y":23170},{"d":false,"t":4205,"x":23170,"y":23170},{"d":false,"t":4206,"x":-31380,"y":9432},{"d":false,"t":4207,"x":-31587,"y":8714},{"d":false,"t":4208,"x":-31778,"y":7990},{"d":false,"t":4209,"x":-31952,"y":7262},{"d":false,"t":4210,"x":-32074,"y":6705},{"x":-23170,"y":23170,"d":false,"t":4211},{"x":-23170,"y":23170,"d":false,"t":4212},{"x":-23170,"y":23170,"d":false,"t":4213},{"x":-23170,"y":23170,"d":false,"t":4214},{"x":-23170,"y":23170,"d":false,"t":4215},{"x":-32608,"y":3227,"d":false,"t":4216},{"x":-32667,"y":2552,"d":false,"t":4217},{"x":-32713,"y":1874,"d":false,"t":4218},{"x":-32745,"y":1188,"d":false,"t":4219},{"x":32763,"y":-509,"d":false,"t":4220},{"x":32745,"y":-1188,"d":false,"t":4221},{"x":32714,"y":-1865,"d":false,"t":4222},{"x":32667,"y":-2552,"d":false,"t":4223},{"x":-32767,"y":0,"d":false,"t":4224},{"x":32667,"y":-2552,"d":false,"t":4225},{"x":-32767,"y":0,"d":false,"t":4226},{"x":32667,"y":-2552,"d":false,"t":4227},{"x":32606,"y":-3244,"d":false,"t":4228},{"x":-32767,"y":0,"d":false,"t":4229},{"x":-32767,"y":0,"d":false,"t":4230},{"x":32666,"y":-2565,"d":false,"t":4231},{"x":32615,"y":-3156,"d":false,"t":4232},{"x":-32767,"y":0,"d":false,"t":4233},{"x":32767,"y":0,"d":false,"t":4234},{"x":-32767,"y":0,"d":false,"t":4235},{"x":32767,"y":0,"d":false,"t":4236},{"x":-32767,"y":0,"d":false,"t":4237},{"x":32767,"y":0,"d":false,"t":4238},{"x":-32767,"y":0,"d":false,"t":4239},{"x":32767,"y":0,"d":false,"t":4240},{"x":-32767,"y":0,"d":false,"t":4241},{"x":32767,"y":0,"d":false,"t":4242},{"x":-32767,"y":0,"d":false,"t":4243},{"x":32767,"y":0,"d":false,"t":4244},{"x":-32767,"y":0,"d":false,"t":4245},{"x":32767,"y":0,"d":false,"t":4246},{"y":0,"d":true,"t":4247,"x":-32767}]} \ No newline at end of file diff --git a/docs/review/projected-camera/BP010-field-encounter-control-reduced-false.png b/docs/review/projected-camera/BP010-field-encounter-control-reduced-false.png new file mode 100644 index 00000000..db5c2c73 Binary files /dev/null and b/docs/review/projected-camera/BP010-field-encounter-control-reduced-false.png differ diff --git a/docs/review/projected-camera/BP010-field-encounter-control-reduced-true.png b/docs/review/projected-camera/BP010-field-encounter-control-reduced-true.png new file mode 100644 index 00000000..e781ec32 Binary files /dev/null and b/docs/review/projected-camera/BP010-field-encounter-control-reduced-true.png differ diff --git a/docs/review/projected-camera/BP010-field-encounter-dark-reduced-false.png b/docs/review/projected-camera/BP010-field-encounter-dark-reduced-false.png new file mode 100644 index 00000000..89214451 Binary files /dev/null and b/docs/review/projected-camera/BP010-field-encounter-dark-reduced-false.png differ diff --git a/docs/review/projected-camera/BP010-field-encounter-dark-reduced-true.png b/docs/review/projected-camera/BP010-field-encounter-dark-reduced-true.png new file mode 100644 index 00000000..60989e88 Binary files /dev/null and b/docs/review/projected-camera/BP010-field-encounter-dark-reduced-true.png differ diff --git a/docs/review/projected-camera/BP010-field-encounter-paired-reduced-false.png b/docs/review/projected-camera/BP010-field-encounter-paired-reduced-false.png new file mode 100644 index 00000000..b0c046e0 Binary files /dev/null and b/docs/review/projected-camera/BP010-field-encounter-paired-reduced-false.png differ diff --git a/docs/review/projected-camera/BP010-field-encounter-paired-reduced-true.png b/docs/review/projected-camera/BP010-field-encounter-paired-reduced-true.png new file mode 100644 index 00000000..85a2cc25 Binary files /dev/null and b/docs/review/projected-camera/BP010-field-encounter-paired-reduced-true.png differ diff --git a/docs/review/projected-camera/BP010-field-encounter-record.txt b/docs/review/projected-camera/BP010-field-encounter-record.txt new file mode 100644 index 00000000..79fcd73a --- /dev/null +++ b/docs/review/projected-camera/BP010-field-encounter-record.txt @@ -0,0 +1,7 @@ +Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. +tick=4248, player=1327,1495, facing=w +enemies=4, projectiles=1, telegraphs=0 +Production GameScene/HUD/fog/ground/projection; painted neutral Player and complete Camera candidate family. +Same unedited snapshot across control/dark/paired and normal/Reduced Motion. +digest=d3802f536474ccaed97abd8a28a2fe24692cc62cf881097f9085ee099e84ddc5; candidate source: docs/review/camera-clips. +Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. \ No newline at end of file diff --git a/docs/review/projected-camera/BP010-field-encounter-registration-coordinates.json b/docs/review/projected-camera/BP010-field-encounter-registration-coordinates.json new file mode 100644 index 00000000..8347c575 --- /dev/null +++ b/docs/review/projected-camera/BP010-field-encounter-registration-coordinates.json @@ -0,0 +1,19 @@ +[ + { + "fieldQ8" : [ + 329256, + 381162 + ], + "headingMilliDegrees" : 290000, + "mount" : [ + 1280, + 1472 + ], + "q8Scale" : 256, + "socket" : "cam-z04-b", + "targetQ8" : [ + 329081, + 380681 + ] + } +] \ No newline at end of file diff --git a/docs/review/projected-camera/BP010-field-encounter-registration.png b/docs/review/projected-camera/BP010-field-encounter-registration.png new file mode 100644 index 00000000..da18523d Binary files /dev/null and b/docs/review/projected-camera/BP010-field-encounter-registration.png differ diff --git a/docs/review/projected-camera/BP010-legal-projected-100-reduced-false.png b/docs/review/projected-camera/BP010-legal-projected-100-reduced-false.png new file mode 100644 index 00000000..d94d6b33 Binary files /dev/null and b/docs/review/projected-camera/BP010-legal-projected-100-reduced-false.png differ diff --git a/docs/review/projected-camera/BP010-legal-projected-100-reduced-true.png b/docs/review/projected-camera/BP010-legal-projected-100-reduced-true.png new file mode 100644 index 00000000..dddd4068 Binary files /dev/null and b/docs/review/projected-camera/BP010-legal-projected-100-reduced-true.png differ diff --git a/docs/review/projected-camera/BP010-legal-projected-125-reduced-false.png b/docs/review/projected-camera/BP010-legal-projected-125-reduced-false.png new file mode 100644 index 00000000..6d15a634 Binary files /dev/null and b/docs/review/projected-camera/BP010-legal-projected-125-reduced-false.png differ diff --git a/docs/review/projected-camera/BP010-legal-projected-125-reduced-true.png b/docs/review/projected-camera/BP010-legal-projected-125-reduced-true.png new file mode 100644 index 00000000..1cb661f9 Binary files /dev/null and b/docs/review/projected-camera/BP010-legal-projected-125-reduced-true.png differ diff --git a/docs/review/projected-camera/BP010-legal-visibility-100-reduced-false.json b/docs/review/projected-camera/BP010-legal-visibility-100-reduced-false.json new file mode 100644 index 00000000..f6aeaa4f --- /dev/null +++ b/docs/review/projected-camera/BP010-legal-visibility-100-reduced-false.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1597.989013671875, + 728.47698974609375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1202.010009765625, + 824.64398193359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1394.342041015625, + 1056.574951171875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1190.696044921875, + 1384.6719970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1643.2440185546875, + 1429.927001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1643.2440185546875, + 1294.1629638671875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2005.282958984375, + 1475.1820068359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2299.43896484375, + 1260.2220458984375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1207.666015625, + 1409.4210205078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1084.6300048828125, + 1266.5860595703125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1280.498046875, + 1374.4189453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1452.324951171875, + 1271.5350341796875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1666.5789794921875, + 1283.9100341796875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1381.1710205078125, + 532.469970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1385.3719482421875, + 639.4229736328125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1153.926025390625, + 598.4110107421875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1449.93994140625, + 605.56597900390625, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1429.781005859375, + 740.802978515625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1433.4549560546875, + 793.1710205078125, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1219.949951171875, + 774.7030029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1484.491943359375, + 875.15301513671875, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1563.1610107421875, + 1166.43994140625, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1241.6070556640625, + 1317.3590087890625, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2128.845947265625, + 1230.0789794921875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2041.5670166015625, + 1323.5009765625, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1750.7239990234375, + 1321.073974609375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2639.821044921875, + 1098.156005859375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 887.1669921875, + 412.59500122070312, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 781.79400634765625, + 742.301025390625, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1203.949951171875, + 808.24200439453125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1171.949951171875, + 861.260986328125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1549.989013671875, + 1005.260986328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1194.5780029296875, + 1108.2220458984375, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1261.7249755859375, + 1275.927001953125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1627.2440185546875, + 1144.907958984375, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1928.0279541015625, + 1170.280029296875, + 127.9998779296875, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1882.77294921875, + 1328.6719970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2186.302001953125, + 1275.41796875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2367.322021484375, + 1365.927001953125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2503.0859375, + 1015.77099609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2774.614990234375, + 1151.5350341796875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "legacy", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1373 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP010-legal-visibility-100-reduced-true.json b/docs/review/projected-camera/BP010-legal-visibility-100-reduced-true.json new file mode 100644 index 00000000..f6aeaa4f --- /dev/null +++ b/docs/review/projected-camera/BP010-legal-visibility-100-reduced-true.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1597.989013671875, + 728.47698974609375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1202.010009765625, + 824.64398193359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1394.342041015625, + 1056.574951171875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1190.696044921875, + 1384.6719970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1643.2440185546875, + 1429.927001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1643.2440185546875, + 1294.1629638671875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2005.282958984375, + 1475.1820068359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2299.43896484375, + 1260.2220458984375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1207.666015625, + 1409.4210205078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1084.6300048828125, + 1266.5860595703125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1280.498046875, + 1374.4189453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1452.324951171875, + 1271.5350341796875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1666.5789794921875, + 1283.9100341796875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1381.1710205078125, + 532.469970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1385.3719482421875, + 639.4229736328125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1153.926025390625, + 598.4110107421875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1449.93994140625, + 605.56597900390625, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1429.781005859375, + 740.802978515625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1433.4549560546875, + 793.1710205078125, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1219.949951171875, + 774.7030029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1484.491943359375, + 875.15301513671875, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1563.1610107421875, + 1166.43994140625, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1241.6070556640625, + 1317.3590087890625, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2128.845947265625, + 1230.0789794921875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2041.5670166015625, + 1323.5009765625, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1750.7239990234375, + 1321.073974609375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2639.821044921875, + 1098.156005859375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 887.1669921875, + 412.59500122070312, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 781.79400634765625, + 742.301025390625, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1203.949951171875, + 808.24200439453125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1171.949951171875, + 861.260986328125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1549.989013671875, + 1005.260986328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1194.5780029296875, + 1108.2220458984375, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1261.7249755859375, + 1275.927001953125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1627.2440185546875, + 1144.907958984375, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1928.0279541015625, + 1170.280029296875, + 127.9998779296875, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1882.77294921875, + 1328.6719970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2186.302001953125, + 1275.41796875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2367.322021484375, + 1365.927001953125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2503.0859375, + 1015.77099609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2774.614990234375, + 1151.5350341796875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "legacy", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1373 + ], + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP010-legal-visibility-125-reduced-false.json b/docs/review/projected-camera/BP010-legal-visibility-125-reduced-false.json new file mode 100644 index 00000000..dac43d2e --- /dev/null +++ b/docs/review/projected-camera/BP010-legal-visibility-125-reduced-false.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1622.896728515625, + 536.09625244140625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1127.9228515625, + 656.304931640625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.337890625, + 946.21875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1113.780517578125, + 1356.3399658203125, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1679.46533203125, + 1412.90869140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1679.46533203125, + 1243.2037353515625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2132.01416015625, + 1469.4775390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2499.709228515625, + 1200.777587890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1134.992919921875, + 1387.2762451171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 981.1978759765625, + 1208.7325439453125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1226.032958984375, + 1343.523681640625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1440.816650390625, + 1214.9188232421875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1708.634033203125, + 1230.3875732421875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1351.8741455078125, + 291.08746337890625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1357.1253662109375, + 424.7786865234375, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1067.81787109375, + 373.5137939453125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1437.8353271484375, + 382.45745849609375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1412.63671875, + 551.50372314453125, + 200, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1417.2291259765625, + 616.9637451171875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1150.347900390625, + 593.8787841796875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1481.025390625, + 719.4412841796875, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1579.3616943359375, + 1083.5499267578125, + 159.9998779296875, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1177.419189453125, + 1272.19873046875, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2286.4677734375, + 1163.0987548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2177.369140625, + 1279.876220703125, + 59.999755859375, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1813.8154296875, + 1276.842529296875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2925.186767578125, + 998.195068359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 734.369140625, + 141.2437744140625, + 160, + 639.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 602.6529541015625, + 553.37628173828125, + 479.9998779296875, + 239.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1130.347900390625, + 635.802490234375, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1090.347900390625, + 702.076171875, + 240, + 480 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1562.896728515625, + 882.076171875, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1118.6329345703125, + 1010.777587890625, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1202.566650390625, + 1220.40869140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1659.4654541015625, + 1056.635009765625, + 119.9998779296875, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2035.4453125, + 1088.35009765625, + 159.999755859375, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1978.876708984375, + 1286.3399658203125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2358.287841796875, + 1219.7724609375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2584.56298828125, + 1332.90869140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2754.267822265625, + 895.2137451171875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3093.67919921875, + 1064.9188232421875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "legacy", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1373 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/projected-camera/BP010-legal-visibility-125-reduced-true.json b/docs/review/projected-camera/BP010-legal-visibility-125-reduced-true.json new file mode 100644 index 00000000..dac43d2e --- /dev/null +++ b/docs/review/projected-camera/BP010-legal-visibility-125-reduced-true.json @@ -0,0 +1,473 @@ +{ + "actors" : [ + { + "bounds" : [ + 1622.896728515625, + 536.09625244140625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1127.9228515625, + 656.304931640625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.337890625, + 946.21875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1113.780517578125, + 1356.3399658203125, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1679.46533203125, + 1412.90869140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1679.46533203125, + 1243.2037353515625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2132.01416015625, + 1469.4775390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2499.709228515625, + 1200.777587890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1134.992919921875, + 1387.2762451171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 981.1978759765625, + 1208.7325439453125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1226.032958984375, + 1343.523681640625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1440.816650390625, + 1214.9188232421875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1708.634033203125, + 1230.3875732421875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1351.8741455078125, + 291.08746337890625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1357.1253662109375, + 424.7786865234375, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1067.81787109375, + 373.5137939453125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1437.8353271484375, + 382.45745849609375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1412.63671875, + 551.50372314453125, + 200, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1417.2291259765625, + 616.9637451171875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1150.347900390625, + 593.8787841796875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1481.025390625, + 719.4412841796875, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1579.3616943359375, + 1083.5499267578125, + 159.9998779296875, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1177.419189453125, + 1272.19873046875, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2286.4677734375, + 1163.0987548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2177.369140625, + 1279.876220703125, + 59.999755859375, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1813.8154296875, + 1276.842529296875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2925.186767578125, + 998.195068359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 734.369140625, + 141.2437744140625, + 160, + 639.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 602.6529541015625, + 553.37628173828125, + 479.9998779296875, + 239.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1130.347900390625, + 635.802490234375, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1090.347900390625, + 702.076171875, + 240, + 480 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1562.896728515625, + 882.076171875, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1118.6329345703125, + 1010.777587890625, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1202.566650390625, + 1220.40869140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1659.4654541015625, + 1056.635009765625, + 119.9998779296875, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2035.4453125, + 1088.35009765625, + 159.999755859375, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1978.876708984375, + 1286.3399658203125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2358.287841796875, + 1219.7724609375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2584.56298828125, + 1332.90869140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2754.267822265625, + 895.2137451171875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3093.67919921875, + 1064.9188232421875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "framing" : "legacy", + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "worldFocus" : [ + 1323.3582763671875, + 1373 + ], + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/projected-camera/README.md b/docs/review/projected-camera/README.md new file mode 100644 index 00000000..2569125f --- /dev/null +++ b/docs/review/projected-camera/README.md @@ -0,0 +1,11 @@ +# Projected camera boundary comparison + +Focused iOS Simulator test passed: 1 test, 0 failures, 39.824 seconds. Result: Test-SSRuntime-2026.10.15_22-59-28--0700.xcresult. Initial build failed because the new harness used `arena.bounds`; corrected to the existing `boundsUnits` API before this run. + +Twelve projected captures: legacy, strict containment and player-visible policies × 1x/1.25x × both motion settings. The seeded legal encounter and simulation digest are preserved. These are paused neutral-pose captures, not moving camera or device validation. + +Findings from inspected 1x captures: strict containment clips the Player above the image. Player-visible framing preserves the full canvas within the 0.002-unit numerical tolerance but places it underneath the health bar. The raw exact `contained` flag is false at 1x due to floating-point edge precision; the explicitly tolerance-bounded assertion passes. This is not HUD clearance or visual acceptance. Diagnostic outlines remain visible; this is not a clean art approval capture. Old environment registration, scale and depth defects remain visible. + +The host geometry check also passed 784 independent SpriteKit viewport-corner conversions, invalid-input checks and six player-visibility probes. It exposes the required presentation-only background overshoot at world boundaries. Host evidence is separate from simulator evidence. + +Next: define and test a player-safe screen region excluding actual HUD/control rectangles; compare camera continuity during legal traversal and threat visibility; provide presentation-only boundary dressing. Do not change collision bounds, rules viewport or adopt zoom to hide these failures. Neither new camera policy is admitted to gameplay. diff --git a/docs/review/projected-camera/host-geometry.json b/docs/review/projected-camera/host-geometry.json new file mode 100644 index 00000000..ffcf0beb --- /dev/null +++ b/docs/review/projected-camera/host-geometry.json @@ -0,0 +1,139 @@ +{ + "invalidInputChecks" : 2, + "scope" : "Host SpriteKit geometry, not iOS displayed framing or production camera admission", + "spriteKitCornerChecks" : 784, + "visibilityConflicts" : [ + { + "canvasVisible" : false, + "focus" : [ + 479.41839764447917, + 479.41839764447917 + ], + "player" : [ + 18, + 18 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 237.20310216782971, + 237.20310216782971 + ], + "requiredBackdropOvershootXY" : [ + 242.21529547664946, + 242.21529547664946 + ], + "rootVisible" : false, + "zoom" : 1 + }, + { + "canvasVisible" : false, + "focus" : [ + 1824.5816023555208, + 1056.5816023555208 + ], + "player" : [ + 2286, + 1518 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 2134.6791488260787, + 1366.679148826079 + ], + "requiredBackdropOvershootXY" : [ + 310.09754647055797, + 310.0975464705582 + ], + "rootVisible" : false, + "zoom" : 1 + }, + { + "canvasVisible" : false, + "focus" : [ + 1327, + 1056.5816023555208 + ], + "player" : [ + 1327, + 1495 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 1394.8883476483186, + 1124.4699500038394 + ], + "requiredBackdropOvershootXY" : [ + 0, + 67.888347648318586 + ], + "rootVisible" : true, + "zoom" : 1 + }, + { + "canvasVisible" : false, + "focus" : [ + 383.53471811558336, + 383.53471811558336 + ], + "player" : [ + 18, + 18 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 191.09974003446681, + 191.09974003446681 + ], + "requiredBackdropOvershootXY" : [ + 192.43497808111661, + 192.43497808111661 + ], + "rootVisible" : false, + "zoom" : 1.25 + }, + { + "canvasVisible" : false, + "focus" : [ + 1920.4652818844165, + 1152.4652818844165 + ], + "player" : [ + 2286, + 1518 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 2180.7825109594414, + 1412.7825109594417 + ], + "requiredBackdropOvershootXY" : [ + 260.3172290750249, + 260.31722907502512 + ], + "rootVisible" : false, + "zoom" : 1.25 + }, + { + "canvasVisible" : false, + "focus" : [ + 1327, + 1152.4652818844165 + ], + "player" : [ + 1327, + 1495 + ], + "playerVisibleCanvas" : true, + "playerVisibleFocus" : [ + 1393.0498700172336, + 1218.5151519016501 + ], + "requiredBackdropOvershootXY" : [ + 0, + 66.049870017233616 + ], + "rootVisible" : true, + "zoom" : 1.25 + } + ] +} diff --git a/docs/review/projected-camera/index.html b/docs/review/projected-camera/index.html new file mode 100644 index 00000000..3b51bc9e --- /dev/null +++ b/docs/review/projected-camera/index.html @@ -0,0 +1 @@ +Projected camera comparison

Camera boundaries: renderer comparison

Same legal encounter, three framing policies. Strict containment clips the player; player-visible framing restores their canvas but still overlaps the health bar. These are diagnostic captures, not an approved gameplay camera.

Legacy control

Strict map containment

Full player canvas

Focused simulator test: 1 passed, 0 failures. Both motion settings captured. Static images do not validate animation or camera continuity. Bright outlines are retained diagnostics. Next: HUD clearance and moving threat review.

\ No newline at end of file diff --git a/docs/review/projected-motion/core-tests.log b/docs/review/projected-motion/core-tests.log new file mode 100644 index 00000000..170044a2 --- /dev/null +++ b/docs/review/projected-motion/core-tests.log @@ -0,0 +1,1866 @@ +Building for debugging... +[0/4] Write sources +[1/4] Copying contracts +[2/5] Copying SPEC_PIN.txt +[3/5] Write swift-version--58304C5D6DBC2206.txt +[5/7] Emitting module SurveillanceCore +[6/7] Compiling SurveillanceCore ContractVersions.swift +[7/14] Compiling SurveillanceCore ReplayEnvelope.swift +[8/14] Compiling SurveillanceCore ProceduralVFX.swift +[9/14] Compiling SurveillanceCore ArenaManifest.swift +[10/14] Compiling SurveillanceCore AssetCatalog.swift +[11/14] Compiling SurveillanceCore RunReceipt.swift +[12/14] Compiling SurveillanceCore ReleaseCandidateEvidence.swift +[13/14] Compiling SurveillanceCore Simulation.swift +[14/26] Compiling SurveillanceCoreTests ContractVersionsTests.swift +[15/26] Compiling SurveillanceCoreTests ProceduralVFXTests.swift +[16/26] Compiling SurveillanceCoreTests ReadabilityFinishTests.swift +[17/26] Compiling SurveillanceCoreTests ClipMetadataTests.swift +[18/26] Compiling SurveillanceCoreTests DailyRunGhostTests.swift +[19/26] Compiling SurveillanceCoreTests CameraPlacementTests.swift +[20/26] Compiling SurveillanceCoreTests AmbientMotionTests.swift +[21/26] Compiling SurveillanceCoreTests ArenaAndSimulationTests.swift +[22/26] Compiling SurveillanceCoreTests ReleaseCandidateEvidenceTests.swift +[23/27] Compiling SurveillanceCoreTests ReplayTests.swift +[24/27] Compiling SurveillanceCoreTests AssetCatalogTests.swift +[25/27] Emitting module SurveillanceCoreTests +[25/27] Write Objects.LinkFileList +[26/27] Linking SSRuntimePackageTests +Build complete! (18.02s) +Test Suite 'All tests' started at 2026-10-14 19:55:33.442. +Test Suite 'All tests' passed at 2026-10-14 19:55:33.445. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.003) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite ApproximateCueTests started. +◇ Suite TerminalSurfaceGeometryTests started. +◇ Suite BossPhaseMusicTests started. +◇ Suite CameraPlacementTests started. +◇ Suite DailyFlavourTests started. +◇ Suite CameraFollowTests started. +◇ Suite CaptainCameraTests started. +◇ Suite AudioProjectorTests started. +◇ Suite SilhouetteTests started. +◇ Suite TransitPatrolTests started. +◇ Suite PacingProbeTests started. +◇ Suite ReleaseCandidateEvidenceTests started. +◇ Suite CameraPresentationTests started. +◇ Suite CameraHUDTests started. +◇ Suite RunOutcomeTerminalTests started. +◇ Suite PresentationSettingsTests started. +◇ Suite CompleteRunVectorTests started. +◇ Suite VisualLanguageTests started. +◇ Suite GrayscaleSystemsTests started. +◇ Suite ClipTimingTests started. +◇ Suite PatrolSlipSearch started. +◇ Suite AudioDeliveryTests started. +◇ Suite TargetingPriorityTests started. +◇ Suite ReceiptArchiveTests started. +◇ Suite ConeOrientationTests started. +◇ Suite DefectRegistryTests started. +◇ Suite AssetIntakeChecks started. +◇ Suite CombatContentFailClosedTests started. +◇ Suite CourtClimaxTests started. +◇ Suite GhostSettingTests started. +◇ Suite StealthTextureTests started. +◇ Suite MedalTests started. +◇ Suite OriginalArtTests started. +◇ Suite ReadabilityFinishTests started. +◇ Suite LegacyAdmissionTests started. +◇ Suite RunTelemetryTests started. +◇ Suite ClipMetadataV2Tests started. +◇ Suite CombatFeedbackTests started. +◇ Suite CameraHousingArtTests started. +◇ Suite FeelPassPresentationOnlyTests started. +◇ Suite DailyRunSeedTests started. +◇ Suite HUDPresentationTests started. +◇ Suite AssetCatalogTests started. +◇ Suite QuietApproachPresentationTests started. +◇ Suite ExposureFinalizationTests started. +◇ Suite QuietApproachTests started. +◇ Suite ObjectiveGraphTests started. +◇ Suite CameraDestructionReceiptTests started. +◇ Suite CaptainClipTests started. +◇ Suite EventCatalogTests started. +◇ Suite ObjectiveProjectionTests started. +◇ Suite HeatReinforcementTests started. +◇ Suite ExtractionCountdownTests started. +◇ Suite ExpansionGateReportTests started. +◇ Suite ClipMetadataTests started. +◇ Suite RuntimeBundleTests started. +◇ Suite AmbientMotionTests started. +◇ Suite AudioProjectorSmokeTests started. +◇ Suite CameraFairnessTests started. +◇ Suite CameraDestructionOrderTests started. +◇ Suite HUDMappingTests started. +◇ Suite GhostRunTests started. +◇ Suite CivicSeamIdentityTests started. +◇ Suite PacingSegmentsTests started. +◇ Suite TamperFloorTests started. +◇ Suite D021CeilingsTests started. +◇ Suite ContractVectorTests started. +◇ Suite EnvironmentLibraryTests started. +◇ Suite CombatVisibilityTests started. +◇ Suite TerminalShareGeometryTests started. +◇ Suite GameFeelTests started. +◇ Suite ReactionClipTrackerTests started. +◇ Suite ArenaReachabilityTests started. +◇ Suite DeterminismTests started. +◇ Suite ReplayTests started. +◇ Suite OpeningTests started. +◇ Suite CommitClipTests started. +◇ Suite ExpansionGateDecisionTests started. +◇ Suite CameraMountSolidTests started. +◇ Suite TutorialCardDurationTests started. +◇ Suite CombatCausalityTests started. +◇ Suite EnvironmentAssetsAreDrawnTests started. +◇ Suite GateVerificationTests started. +◇ Suite StandardEnemyClipProjectionTests started. +◇ Suite MusicBedCoverageTests started. +◇ Suite ProceduralVFXTests started. +◇ Suite RunCardTests started. +◇ Suite ProtectedUpgradeSelectionTests started. +◇ Suite KernelVectorTests started. +◇ Suite ArenaAndSimulationTests started. +◇ Suite TutorialStateMachineTests started. +◇ Suite EnvironmentContractTests started. +◇ Suite DamageOrderingTests started. +◇ Suite AwarenessTests started. +◇ Suite CombatAuthorityReceiptTests started. +◇ Suite SpawnFairnessTests started. +◇ Suite ContractVersionsTests started. +◇ Suite TutorialPreemptionTests started. +◇ Suite ClipAlignmentTests started. +◇ Suite CanonicalArenaZonesTests started. +◇ Suite DaemonClipTests started. +◇ Suite DeviceRunEvidenceTests started. +◇ Suite SimulationClockTests started. +◇ Suite WeaponUpgradeFeedbackTests started. +◇ Suite TerminalPrecedenceTests started. +◇ Suite ReplayMatrixTests started. +◇ Suite PlaytestEvidenceLoaderTests started. +◇ Suite EnemyBehaviourTests started. +◇ Suite PeakDensityProfilerTests started. +◇ Test aYearOfDaysUsesEveryValue() started. +◇ Test derivedFromTheDayKeyBySpecBitRanges() started. +◇ Test fogDensityScalesBeforeThinning() started. +◇ Test theTwelveAuthoredHeadlines() started. +◇ Test turnDoesNotSnapByTheLookAheadDistance() started. +◇ Test clampsAndResetsAcrossRuns() started. +◇ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() started. +◇ Test captainIdsAreTheirOwnGroup() started. +◇ Test theRestartControlSitsInsideThePanel() started. +◇ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() started. +◇ Test gradesStayWithinTheReadabilityFloor() started. +◇ Test exactlyTheNamedCuesAreApproximate() started. +◇ Test titleDetailNamesGradeAndFog() started. +◇ Test motionInsideDeadZoneDoesNotMoveTheAnchor() started. +◇ Test evidenceT907CollectsReplayAndCompleteRunDigests() started. +◇ Test phaseNeverChangesTheMusicState() started. +◇ Test visualLanguageEncodesSalienceAndRolePalette() started. +◇ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() started. +◇ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() started. +◇ Test audioAH001NineEffectsStealToEight() started. +◇ Test onlyFinishedRunsAreTerminal() started. +◇ Test selectionKeepsDirectionHoldsAndOrder() started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +◇ Test aKnownRouteSlipsThePatrolAndEarnsShadow() started. +◇ Test malformedAndOverflowFailClosed() started. +◇ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test replayT901PilotedRunReproducesDigestThreeTimes() started. +◇ Test allDeliveredV1DirectionsKeepTheirCadence() started. +◇ Test exactMigrationVectors() started. +◇ Test combatCB002EqualDistanceEnemiesPreferLowerID() started. +◇ Test exposureEX004SixtyTicksNoRecoveryYet() started. +◇ Test receiptER006AtomicWriteAndRetention() started. +◇ Test ghostIsOnByDefault() started. +◇ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() started. +◇ Test everyMusicStateHasARegisteredAssetId() started. +◇ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() started. +◇ Test somethingIsActuallyAdmitted() started. +◇ Test defectT906RegistryCanonicalRoundTrip() started. +◇ Test malformedV2FailsThroughBothLoaders() started. +◇ Test anUnawareKillIsATakedown() started. +◇ Test bundledContentStillDecodesWithKnownValues() started. +◇ Test independentChainsRetainTheirOwnPoints() started. +◇ Test originalsAreAdmitted() started. +◇ Test settingsNeverChangeTheGameplayDigest() started. +◇ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test copyStatesCorrectImmunityAndAmbush() started. +◇ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() started. +◇ Test incompleteOrDuplicateTargetChainDoesNotDraw() started. +◇ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() started. +◇ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() started. +◇ Test everyV1FacingHasIdenticalV2TimingAndFrames() started. +◇ Test distinctDamageSourcesAreNotCoalescedTogether() started. +◇ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() started. +◇ Test candidateFollowsTheSpecFormulaExactly() started. +◇ Test wanderingRunDigestAndReceiptAreUnchanged() started. +◇ Test bo020BossActivationRaisesPlayerFrom40To75() started. +◇ Test rs018BelowTrackedUntilMobCEarnsGhost() started. +◇ Test fogCrossingPublishesOneFinalDetectionEvent() started. +◇ Test interleavedFacingsKeepTheirOwnVariableHolds() started. +◇ Test fogTransitionReachesAudioAndVFX() started. +◇ Test hudUI003ExtraLargeScaleOnSmallestTarget() started. +◇ Test everyHousingFamilyNamesADeclaredAsset() started. +◇ Test signalJammerModifiesTheFogPulseExactlyOnce() started. +◇ Test arenaFourCarriesTheD094Viewport() started. +◇ Test unrelatedHitsNeverMakeAChain() started. +◇ Test everyAttackDerivesAnExistingClip() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +◇ Test everyEventTypeMatchesTheCatalogOrdinal() started. +◇ Test snapshotExposesTheAuthoritativeObjectiveNode() started. +◇ Test aFreshRunStartsQuiet() started. +◇ Test objectiveT703FreshRunStartsAtMobA() started. +◇ Test gateT908DefaultReportIsNotComputable() started. +◇ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() started. +◇ Test extractionT703ALockedRegionDoesNotCountDown() started. +◇ Test ui009TheTagShowsAtRunStart() started. +◇ Test multipleFogPulsesEmitOnlyTheFinalTransition() started. +◇ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() started. +◇ Test cameraCP010EveryLegalSetFairness() started. +◇ Test audioProjectorProjectsEmptyDisabledCues() started. +◇ Test forcedMobCLockdownWithDueFogKeepsQuiet() started. +◇ Test recoveryAndPulseDoNotPublishAnIntermediateState() started. +◇ Test receiptT707SummaryReflectsPartialBlackout() started. +◇ Test mappedElementsScaleProportionally() started. +◇ Test civicSeamT307SpineGridsWedgesAndLandmarks() started. +◇ Test allDeltasProduceOneFinalStateAndOneLockdown() started. +◇ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() started. +◇ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() started. +◇ Test exposureEX011RecoveryStopsAtTheFloor() started. +◇ Test windowsAreContiguousAndEndInsideTheRunTarget() started. +◇ Test oneMissingAssetLeavesTheWholeGroupUnbacked() started. +◇ Test shareIsInsideThePanelAndMeetsTheTouchTarget() started. +◇ Test aVerifiedRecordBuildsAGhost() started. +◇ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() started. +◇ Test arenaAR006CriticalPathAndSpawnAlley() started. +◇ Test projectilesReachThePresentationSnapshot() started. +◇ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() started. +◇ Test unknownReplayIdentityFailsBeforeTickOne() started. +◇ Test sha256KnownVector() started. +◇ Test d021T406DeviceProfilingSettlesCeilings() started. +◇ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() started. +◇ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() started. +◇ Test cardRetiresAfterItsMaximumVisualDuration() started. +◇ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() started. +◇ Test everyMountSolidCarriesTheSharedPrefix() started. +◇ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() started. +◇ Test movingEnemiesPresentMove(role:state:expected:) started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test catalogCarriesTheFourBigMoments() started. +◇ Test gateT902RegistryCoversPhaseNineAutomatedGates() started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +◇ Test vfxCatalogEncodesBudgetsAndReducedVariants() started. +◇ Test informantPursuitKeepsItsPursuitClip() started. +◇ Test everyMusicStateHasADeliveredBed() started. +◇ Test everyProjectedClipExistsInTheContract() started. +◇ Test theContractNamesEveryArenaSolid() started. +◇ Test arenaManifestMatchesCivicSeamIdentity() started. +◇ Test selectionOpensFromGenuineMACompletion() started. +◇ Test attackStatesAreUnchanged() started. +◇ Test exposureEX001OneCameraHundredTicks() started. +◇ Test receiptT708BossPhasesCanonicalOrder() started. +◇ Test encounterEN003EqualDistanceSelectsLowerSocketID() started. +◇ Test correlatorRecoverPresentsItsRecoverClip() started. +◇ Test t0CompletesAtNinetySixUnitsAndNotBefore() started. +◇ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() started. +◇ Test clockFormatsElapsedTicksAsMinutesAndSeconds() started. +◇ Test stationaryEnemiesPresentIdle(role:) started. +◇ Test combatCB005EarliestIntersectionResolvesFirst() started. +◇ Test zonesAreTheSevenCanonicalZonesInOrder() started. +◇ Test gateT908OpenDefectsFailExpansion() started. +◇ Test armedExtractionPreemptsTheCard() started. +◇ Test everyZoneLiesInsideTheArena() started. +◇ Test daemonHasClips() started. +◇ Test currentIdentityIsCompatible() started. +◇ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() started. +◇ Test gridIs36By24SixtyFourUnitCells() started. +◇ Test deviceT905SettlesD021FromSimulationCeilings() started. +◇ Test deviceT905GateResultsPassWhenPerformanceFloorMet() started. +◇ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() started. +◇ Test deviceT905PerformanceFloorBuildsEvidence() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +◇ Test clockAdvancesExactlyOneTick() started. +◇ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() started. +◇ Test noTargetProducesNoShotEvidence() started. +◇ Test jammerTracksActualBossObservationPulse() started. +◇ Test jammerTracksRealCameraContactThenClearsOutsideField() started. +◇ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test jammerDoesNotClaimTamperOrIdleReduction() started. +◇ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() started. +◇ Test playtestLoaderRejectsInvalidTaskId() started. +◇ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() started. +◇ Test playtestT904LoaderRequiresVoluntaryReplayField() started. +◇ Test playtestT903LoaderParsesSessions() started. +◇ Test replayT901MatrixFixtureLoads() started. +◇ Test case passing 1 argument headingMilli → 20000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() started. +◇ Test enemyEN004FogPulseWithoutLineOfSightMisses() started. +◇ Test profileT406CompleteRunsStayWithinPoolCapacity() started. +✔ Test fogDensityScalesBeforeThinning() passed after 2.135 seconds. +✔ Test theTwelveAuthoredHeadlines() passed after 2.135 seconds. +✔ Test derivedFromTheDayKeyBySpecBitRanges() passed after 2.158 seconds. +✔ Test turnDoesNotSnapByTheLookAheadDistance() passed after 2.178 seconds. +✔ Test clampsAndResetsAcrossRuns() passed after 2.424 seconds. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .orbit, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +✔ Test theRestartControlSitsInsideThePanel() passed after 2.556 seconds. +◇ Test case passing 3 arguments role → .fogAnalyticsCloud, state → .cooldown, expected → "fogAnalyticsCloud_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test case passing 3 arguments role → .cableCarCorrelator, state → .pursue, expected → "cableCarCorrelator_move" to movingEnemiesPresentMove(role:state:expected:) started. +◇ Test case passing 3 arguments role → .sutroSignalWitch, state → .keepRange, expected → "sutroSignalWitch_move" to movingEnemiesPresentMove(role:state:expected:) started. +✔ Test verticalHeadingHasNoSpuriousHorizontalLookAhead() passed after 2.570 seconds. +◇ Test case passing 3 arguments role → .victorianVendor, state → .cooldown, expected → "victorianVendor_move" to movingEnemiesPresentMove(role:state:expected:) started. +✔ Test captainIdsAreTheirOwnGroup() passed after 2.570 seconds. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .cableCarCorrelator to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .sutroSignalWitch to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .autonomousInformant to stationaryEnemiesPresentIdle(role:) started. +◇ Test case passing 1 argument role → .victorianVendor to stationaryEnemiesPresentIdle(role:) started. +✔ Test titleDetailNamesGradeAndFog() passed after 3.167 seconds. +✔ Test motionInsideDeadZoneDoesNotMoveTheAnchor() passed after 3.645 seconds. +✔ Test gradesStayWithinTheReadabilityFloor() passed after 3.693 seconds. +✔ Test cameraUI004ThreeNotchesShowAuthoritativeIntegrity() passed after 3.709 seconds. +✔ Test onlyFinishedRunsAreTerminal() passed after 3.709 seconds. +✔ Test phaseNeverChangesTheMusicState() passed after 3.709 seconds. +✔ Test aYearOfDaysUsesEveryValue() passed after 3.753 seconds. +✔ Test selectionKeepsDirectionHoldsAndOrder() passed after 6.392 seconds. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 6.392 seconds. +✔ Test malformedAndOverflowFailClosed() passed after 6.392 seconds. +✔ Test visualLanguageEncodesSalienceAndRolePalette() passed after 6.393 seconds. +✔ Test exactMigrationVectors() passed after 6.392 seconds. +✔ Test combatCB002EqualDistanceEnemiesPreferLowerID() passed after 6.392 seconds. +✔ Test exposureEX004SixtyTicksNoRecoveryYet() passed after 6.392 seconds. +✔ Test enemyT405SilhouettesAreDistinctAndIndependentOfCollision() passed after 6.393 seconds. +✔ Test ghostIsOnByDefault() passed after 6.392 seconds. +✔ Test defectT906RegistryHasNoOpenSeverityOneOrTwo() passed after 6.838 seconds. +◇ Test case passing 1 argument ghost → false to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument ghost → true to concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) started. +◇ Test case passing 1 argument exposure → 0 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 999 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +◇ Test case passing 1 argument exposure → 1000 to jammerContourRequiresActualUnclampedFogReduction(exposure:) started. +✔ Test everyMusicStateHasARegisteredAssetId() passed after 7.599 seconds. +✔ Test audioAH001NineEffectsStealToEight() passed after 7.600 seconds. +✔ Test cameraCP001TenRestartsMatchSocketsHousingAndIds() passed after 7.600 seconds. +✔ Test defectT906RegistryCanonicalRoundTrip() passed after 7.599 seconds. +✔ Test somethingIsActuallyAdmitted() passed after 7.599 seconds. +✔ Test exactlyTheNamedCuesAreApproximate() passed after 7.600 seconds. +✔ Test anUnawareKillIsATakedown() passed after 7.599 seconds. +✔ Test bundledContentStillDecodesWithKnownValues() passed after 8.173 seconds. +✔ Test independentChainsRetainTheirOwnPoints() passed after 8.173 seconds. +✔ Test assetIntakeAcceptsPulledEvidenceAndExcludesArtSourcesFromRuntime() passed after 8.174 seconds. +✔ Test copyStatesCorrectImmunityAndAmbush() passed after 8.173 seconds. +✔ Test patrolEN024MembersSpawnUnawareAtTheirFirstWaypoint() passed after 8.174 seconds. +✔ Test incompleteOrDuplicateTargetChainDoesNotDraw() passed after 8.212 seconds. +✔ Test elapsedTicksSelectExactFrameBoundariesWithoutOverflow() passed after 8.213 seconds. +✔ Test instrumentT900SnapshotCapturesEntitiesExposureAndDamage() passed after 8.213 seconds. +✔ Test malformedV2FailsThroughBothLoaders() passed after 8.213 seconds. +✔ Test allDeliveredV1DirectionsKeepTheirCadence() passed after 8.213 seconds. +✔ Test distinctDamageSourcesAreNotCoalescedTogether() passed after 8.213 seconds. +✔ Test candidateFollowsTheSpecFormulaExactly() passed after 8.213 seconds. +✔ Test originalsAreAdmitted() passed after 8.213 seconds. +✔ Test bo020BossActivationRaisesPlayerFrom40To75() passed after 8.213 seconds. +✔ Test lethalTickSuppressesNamedPulsesButStillResolvesRecovery() passed after 8.213 seconds. +✔ Test aKnownRouteSlipsThePatrolAndEarnsShadow() passed after 8.213 seconds. +✔ Test everyV1FacingHasIdenticalV2TimingAndFrames() passed after 8.213 seconds. +✔ Test fogCrossingPublishesOneFinalDetectionEvent() passed after 8.213 seconds. +✔ Test hudUI003ExtraLargeScaleOnSmallestTarget() passed after 8.213 seconds. +✔ Test everyHousingFamilyNamesADeclaredAsset() passed after 8.213 seconds. +✔ Test fogTransitionReachesAudioAndVFX() passed after 8.214 seconds. +✔ Test arenaFourCarriesTheD094Viewport() passed after 8.214 seconds. +✔ Test unrelatedHitsNeverMakeAChain() passed after 8.214 seconds. +✔ Test signalJammerModifiesTheFogPulseExactlyOnce() passed after 8.222 seconds. +✔ Test everyEventTypeMatchesTheCatalogOrdinal() passed after 8.232 seconds. +✔ Test snapshotExposesTheAuthoritativeObjectiveNode() passed after 8.235 seconds. +✔ Test aFreshRunStartsQuiet() passed after 8.235 seconds. +✔ Test objectiveT703FreshRunStartsAtMobA() passed after 8.235 seconds. +✔ Test interleavedFacingsKeepTheirOwnVariableHolds() passed after 8.235 seconds. +✔ Test settingsNeverChangeTheGameplayDigest() passed after 8.236 seconds. +✔ Test encounterEN011HuntedAppendsTwoInformantsAfterTheAuthoredMembers() passed after 8.235 seconds. +✔ Test ui009TheTagShowsAtRunStart() passed after 8.235 seconds. +✔ Test receiptER006AtomicWriteAndRetention() passed after 8.236 seconds. +✔ Test ambientT607CatalogEncodesPersistentRareAndCameraLock() passed after 8.235 seconds. +✔ Test extractionT703ALockedRegionDoesNotCountDown() passed after 9.336 seconds. +✔ Test audioProjectorProjectsEmptyDisabledCues() passed after 9.336 seconds. +✔ Test everyAttackDerivesAnExistingClip() passed after 9.336 seconds. +✔ Test multipleFogPulsesEmitOnlyTheFinalTransition() passed after 9.336 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 9.336 seconds. +✔ Test mappedElementsScaleProportionally() passed after 9.336 seconds. +✔ Test civicSeamT307SpineGridsWedgesAndLandmarks() passed after 9.336 seconds. +✔ Test allDeltasProduceOneFinalStateAndOneLockdown() passed after 9.336 seconds. +✔ Test receiptT707SummaryReflectsPartialBlackout() passed after 9.336 seconds. +✔ Test forcedMobCLockdownWithDueFogKeepsQuiet() passed after 9.336 seconds. +✔ Test exposureEX011RecoveryStopsAtTheFloor() passed after 9.336 seconds. +✔ Test windowsAreContiguousAndEndInsideTheRunTarget() passed after 9.336 seconds. +✔ Test oneMissingAssetLeavesTheWholeGroupUnbacked() passed after 9.336 seconds. +✔ Test shareIsInsideThePanelAndMeetsTheTouchTarget() passed after 9.336 seconds. +✔ Test clipCatalogDeclaresRequiredMarkersAndFourDirections() passed after 9.336 seconds. +✔ Test cameraCD003DestroyWhileDetectingOmitsContactDelta() passed after 9.336 seconds. +✔ Test arenaAR006CriticalPathAndSpawnAlley() passed after 9.336 seconds. +✔ Test projectilesReachThePresentationSnapshot() passed after 9.336 seconds. +✔ Test eventFacingOwnsLifetimeAndNewEventRestartsOccurrence() passed after 9.336 seconds. +✔ Test unknownReplayIdentityFailsBeforeTickOne() passed after 9.336 seconds. +✔ Test sha256KnownVector() passed after 9.336 seconds. +✔ Test rs018BelowTrackedUntilMobCEarnsGhost() passed after 9.337 seconds. +✔ Test introPowersTheEightFieldsOnInStableIdOrderOverOnePointTwoSeconds() passed after 9.336 seconds. +✔ Test reusedSnapshotRestoresMissingBaseWhenCommitExpires() passed after 9.336 seconds. +✔ Test cardRetiresAfterItsMaximumVisualDuration() passed after 9.336 seconds. +✔ Test fogCrossingRevokesQuietBeforeRecoveryCanEraseIt() passed after 9.337 seconds. +✔ Test everyMountSolidCarriesTheSharedPrefix() passed after 9.336 seconds. +✔ Test recoveryAndPulseDoNotPublishAnIntermediateState() passed after 9.337 seconds. +✔ Test movingEnemiesPresentMove(role:state:expected:) with 5 test cases passed after 9.336 seconds. +✔ Test catalogCarriesTheFourBigMoments() passed after 9.336 seconds. +✔ Test gateT902RegistryCoversPhaseNineAutomatedGates() passed after 9.336 seconds. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 9.336 seconds. +✔ Test vfxCatalogEncodesBudgetsAndReducedVariants() passed after 9.336 seconds. +✔ Test informantPursuitKeepsItsPursuitClip() passed after 9.336 seconds. +✔ Test everyDeclaredEnvironmentAssetHasARouteToTheScreen() passed after 9.336 seconds. +✔ Test everyMusicStateHasADeliveredBed() passed after 9.336 seconds. +✔ Test everyProjectedClipExistsInTheContract() passed after 9.336 seconds. +✔ Test arenaManifestMatchesCivicSeamIdentity() passed after 9.336 seconds. +✔ Test runtimeBundleT805ProjectsOnlyReachablePlannedOriginals() passed after 9.337 seconds. +✔ Test attackStatesAreUnchanged() passed after 9.336 seconds. +✔ Test exposureEX001OneCameraHundredTicks() passed after 9.336 seconds. +✔ Test receiptT708BossPhasesCanonicalOrder() passed after 9.336 seconds. +✔ Test encounterEN003EqualDistanceSelectsLowerSocketID() passed after 9.336 seconds. +✔ Test selectionOpensFromGenuineMACompletion() passed after 9.336 seconds. +✔ Test t0CompletesAtNinetySixUnitsAndNotBefore() passed after 9.336 seconds. +✔ Test correlatorRecoverPresentsItsRecoverClip() passed after 9.336 seconds. +✔ Test clockFormatsElapsedTicksAsMinutesAndSeconds() passed after 9.336 seconds. +✔ Test stationaryEnemiesPresentIdle(role:) with 5 test cases passed after 9.336 seconds. +✔ Test combatCB005EarliestIntersectionResolvesFirst() passed after 9.336 seconds. +✔ Test zonesAreTheSevenCanonicalZonesInOrder() passed after 9.336 seconds. +✔ Test gateT908OpenDefectsFailExpansion() passed after 9.337 seconds. +✔ Test armedExtractionPreemptsTheCard() passed after 9.336 seconds. +✔ Test everyZoneLiesInsideTheArena() passed after 9.336 seconds. +✔ Test theContractNamesEveryArenaSolid() passed after 9.337 seconds. +✔ Test currentIdentityIsCompatible() passed after 9.336 seconds. +✔ Test clipT605AnchorsStayStableAcrossRoleAndMirroredFacings() passed after 9.336 seconds. +✔ Test gridIs36By24SixtyFourUnitCells() passed after 9.336 seconds. +✔ Test daemonHasClips() passed after 9.336 seconds. +✔ Test deviceT905GateResultsPassWhenPerformanceFloorMet() passed after 9.336 seconds. +✔ Test aVerifiedRecordBuildsAGhost() passed after 9.338 seconds. +✔ Test deviceT905PerformanceFloorBuildsEvidence() passed after 9.336 seconds. +✔ Test clockAdvancesExactlyOneTick() passed after 9.335 seconds. +✔ Test cardsExplainExclusionsAndExposeDistinctNonColourIcons() passed after 9.329 seconds. +✔ Test noTargetProducesNoShotEvidence() passed after 9.329 seconds. +✔ Test jammerTracksActualBossObservationPulse() passed after 9.329 seconds. +✔ Test jammerTracksRealCameraContactThenClearsOutsideField() passed after 9.329 seconds. +✔ Test concealmentMatchesExactWindowAndNotOrdinaryDodge(ghost:) with 2 test cases passed after 9.329 seconds. +✔ Test jammerContourRequiresActualUnclampedFogReduction(exposure:) with 3 test cases passed after 9.328 seconds. +✔ Test jammerDoesNotClaimTamperOrIdleReduction() passed after 9.328 seconds. +✔ Test shotEvidenceSurvivesRetirementAndIgnoresMovementFacing() passed after 9.328 seconds. +✔ Test playtestLoaderRejectsInvalidTaskId() passed after 8.843 seconds. +✔ Test d021T406DeviceProfilingSettlesCeilings() passed after 9.338 seconds. +✔ Test playtestT904LoaderRequiresVoluntaryReplayField() passed after 8.841 seconds. +✔ Test playtestT903LoaderParsesSessions() passed after 8.841 seconds. +✔ Test replayT901MatrixFixtureLoads() passed after 8.839 seconds. +◇ Test case passing 1 argument headingMilli → 45000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test terminalT704StepAfterFailureReturnsNoEventsAndFreezesTick() passed after 8.766 seconds. +✔ Test enemyEN004FogPulseWithoutLineOfSightMisses() passed after 7.691 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test deviceT905SettlesD021FromSimulationCeilings() passed after 10.879 seconds. +✔ Suite DailyFlavourTests passed after 10.886 seconds. +✔ Suite CameraFollowTests passed after 10.886 seconds. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Suite ClipTimingTests passed after 10.895 seconds. +✔ Suite DefectRegistryTests passed after 10.895 seconds. +✔ Suite CombatFeedbackTests passed after 10.895 seconds. +✔ Suite ClipMetadataV2Tests passed after 10.895 seconds. +✔ Suite ExposureFinalizationTests passed after 10.895 seconds. +✔ Test evidenceT907CollectsReplayAndCompleteRunDigests() passed after 10.893 seconds. +✔ Suite StandardEnemyClipProjectionTests passed after 10.894 seconds. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 10.891 seconds. +✔ Suite CanonicalArenaZonesTests passed after 10.894 seconds. +✔ Suite WeaponUpgradeFeedbackTests passed after 10.894 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test theRestartControlMeetsTheMinimumTouchTarget() started. +◇ Test captainArtIsAllOrNothing() started. +◇ Test cameraNotchesPersistNinetyTicksAfterHit() started. +◇ Test playingIsNotTerminal() started. +◇ Test everyPhaseSelectsItsOwnBed() started. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +◇ Test visualLanguageUnknownSchemaFailsClosed() started. +◇ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() started. +◇ Test exposureEX007TamperWithoutContact() started. +◇ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() started. +◇ Test settingsSavedBeforeTheToggleStillDecode() started. +◇ Test musicAssetIdsAreReachable() started. +◇ Test audioAH002ThreeCameraDestructionsOneTamper() started. +◇ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() started. +◇ Test everyAdmittedAssetCarriesCompleteProvenance() started. +◇ Test anApproximateRecordExplainsItself() started. +◇ Test aKillAfterAnAlertIsNotATakedown() started. +◇ Test invalidJSONThrowsInvalidJSON() started. +◇ Test assetIntakeRejectsDuplicateHashes() started. +◇ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() started. +◇ Test instrumentT900PoolsRemainBounded() started. +◇ Test seedIsDeterministicForADate() started. +◇ Test everyOriginalIsOwnedWorkWithADigest() started. +◇ Test bo021BossActivationLeaves120Unchanged() started. +◇ Test aStraightDashAtMobADoesNotSlipThePatrol() started. +◇ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() started. +◇ Test familiesMapToDistinctAssets() started. +◇ Test presentationCameraShowsTheManifestViewport() started. +◇ Test theEventSchemaAdmitsEveryTypeAndOrdinal() started. +◇ Test nodeAndCopyAgree() started. +◇ Test observedKeepsTheQuietApproach() started. +◇ Test objectiveT703GraphAdvancesThroughMobEncounters() started. +◇ Test noSettingAppearsInTheDigest() started. +◇ Test encounterEN012TrackedAppendsOneInformant() started. +◇ Test ui010LosingItRemovesTheTagWithACaption() started. +◇ Test receiptER006FilenameUsesDigestPrefix() started. +◇ Test ambientUnknownSchemaFailsClosed() started. +◇ Test extractionT703AArmsWhenCombatGraphComplete() started. +◇ Test audioAHNetworkBlackoutAccoladeCaption() started. +◇ Test attackClipsMatchTheirTelegraphWindows() started. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +◇ Test everyAnchoredElementFitsWithoutClamping() started. +◇ Test civicSeamT308IdentityOmitsLiteralMapLabels() started. +◇ Test receiptT707SummaryReflectsCompleteBlackout() started. +◇ Test exposureEX012FloorNeverRaisesExposure() started. +◇ Test windowsMatchTheD090Table() started. +◇ Test aCompleteGroupIsBacked() started. +◇ Test shareAndRestartDoNotOverlap() started. +◇ Test clipCatalogUnknownSchemaFailsClosed() started. +◇ Test cameraCD004DestroyWhileNotDetectingStillTampers() started. +◇ Test arenaAR005ClosedMAGateLeavesEscapeAperture() started. +◇ Test hostileProjectilesAreDistinguishedFromPlayerFire() started. +◇ Test durationIsFramesOverFpsInTicks() started. +◇ Test duplicateCommandTickIsRejected() started. +◇ Test splitMixAndXoshiroGoldenSequence() started. +◇ Test trackedBeforeMobCLosesGhost() started. +◇ Test fieldsAreDarkUntilTheirTurn() started. +◇ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() started. +◇ Test snapshotCamerasCarryTheirHousingFamily() started. +◇ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() started. +◇ Test gateT902AllGateFamiliesEnumerated() started. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +◇ Test vfxUnknownSchemaFailsClosed() started. +◇ Test stagedAssetsAreStillUnplaced() started. +◇ Test onlyTheNamedBossPhaseBedsComeFromACityPack() started. +◇ Test cameraPlacementSelectsEightWithZoneQuotas() started. +◇ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() started. +◇ Test exposureEX005RecoveryOnSixtyFirstTick() started. +◇ Test receiptT708ObjectivesMatchEncounterObjectivesContract() started. +◇ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() started. +◇ Test choicesMapToTheSpecifiedOrder() started. +◇ Test t0AccumulatesDisplacementAcrossTicks() started. +◇ Test successRowsWithNoStoredBest() started. +◇ Test combatCB006EqualTimePrefersLowerTargetID() started. +◇ Test gateT908PendingDecisionsBlockComputation() started. +◇ Test lockedExtractionContactShowsThePrerequisite() started. +◇ Test environmentIdsAreRuntimeReachable() started. +◇ Test unknownIdentityFailsClosed() started. +◇ Test facingVectorDirectionAgreesWithHeadingConvention() started. +◇ Test clipDurationsEqualAuthoritativeStateDurations() started. +◇ Test identityMismatchIsRejected() started. +◇ Test neutralCommandUsesRequestedTick() started. +◇ Test d021T406EvaluatorProfilesFromSimulation() started. +◇ Test replayT901SmokeTripleExecutionMatchesDigest() started. +◇ Test case passing 1 argument headingMilli → 200000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() started. +◇ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() started. +◇ Test case passing 1 argument role → .fogAnalyticsCloud to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Test theRestartControlMeetsTheMinimumTouchTarget() passed after 2.389 seconds. +✔ Test captainArtIsAllOrNothing() passed after 2.391 seconds. +✔ Test cameraNotchesPersistNinetyTicksAfterHit() passed after 2.755 seconds. +✔ Test playingIsNotTerminal() passed after 2.755 seconds. +✔ Test everyPhaseSelectsItsOwnBed() passed after 2.754 seconds. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 2.958 seconds. +✔ Test visualLanguageUnknownSchemaFailsClosed() passed after 2.958 seconds. +✔ Test cameraCD011EqualDistanceChosenCamerasPreferLowerID() passed after 2.958 seconds. +✔ Test exposureEX007TamperWithoutContact() passed after 2.958 seconds. +✔ Test enemyT405SnapshotProjectsSilhouetteWithoutChangingRadius() passed after 2.958 seconds. +✔ Test settingsSavedBeforeTheToggleStillDecode() passed after 2.958 seconds. +✔ Test musicAssetIdsAreReachable() passed after 2.958 seconds. +✔ Test audioAH002ThreeCameraDestructionsOneTamper() passed after 2.958 seconds. +✔ Test cameraCP002ZoneQuotaTwoOneTwoTwoOne() passed after 2.958 seconds. +✔ Test everyAdmittedAssetCarriesCompleteProvenance() passed after 2.958 seconds. +✔ Test aKillAfterAnAlertIsNotATakedown() passed after 2.958 seconds. +✔ Test invalidJSONThrowsInvalidJSON() passed after 3.153 seconds. +✔ Test anApproximateRecordExplainsItself() passed after 3.248 seconds. +✔ Test assetIntakeRejectsDuplicateHashes() passed after 3.248 seconds. +✔ Test gateT908DefaultReportIsNotComputable() passed after 14.150 seconds. +✔ Test seedIsDeterministicForADate() passed after 3.255 seconds. +✔ Test encounterEN016HiddenSpawnIsUnawareAndNeverAttacks() passed after 14.148 seconds. +✔ Test bo021BossActivationLeaves120Unchanged() passed after 3.255 seconds. +✔ Test instrumentT900PoolsRemainBounded() passed after 3.255 seconds. +✔ Test hudUI007VoiceOverUpgradeSelectionOrderedLabels() passed after 3.255 seconds. +✔ Test familiesMapToDistinctAssets() passed after 3.255 seconds. +✔ Test presentationCameraShowsTheManifestViewport() passed after 3.255 seconds. +◇ Test evidenceT907DefaultExpansionGateIsNotComputable() started. +✔ Test theEventSchemaAdmitsEveryTypeAndOrdinal() passed after 3.264 seconds. +✔ Test nodeAndCopyAgree() passed after 3.264 seconds. +✔ Test observedKeepsTheQuietApproach() passed after 3.264 seconds. +✔ Test objectiveT703GraphAdvancesThroughMobEncounters() passed after 3.264 seconds. +✔ Test noSettingAppearsInTheDigest() passed after 3.264 seconds. +✔ Test encounterEN012TrackedAppendsOneInformant() passed after 3.264 seconds. +✔ Test ui010LosingItRemovesTheTagWithACaption() passed after 3.264 seconds. +✔ Test everyOriginalIsOwnedWorkWithADigest() passed after 3.265 seconds. +✔ Test ambientUnknownSchemaFailsClosed() passed after 3.264 seconds. +✔ Test extractionT703AArmsWhenCombatGraphComplete() passed after 3.264 seconds. +✔ Test audioAHNetworkBlackoutAccoladeCaption() passed after 3.264 seconds. +✔ Test profileT406CompleteRunsStayWithinPoolCapacity() passed after 12.357 seconds. +✔ Test patrolEN025HoldsThirtyTicksThenHeadsForTheNextAndWraps() passed after 3.265 seconds. +✔ Test everyAnchoredElementFitsWithoutClamping() passed after 3.264 seconds. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 3.264 seconds. +✔ Test receiptT707SummaryReflectsCompleteBlackout() passed after 3.264 seconds. +✔ Test exposureEX012FloorNeverRaisesExposure() passed after 3.263 seconds. +✔ Test windowsMatchTheD090Table() passed after 3.263 seconds. +✔ Test aCompleteGroupIsBacked() passed after 3.263 seconds. +✔ Test shareAndRestartDoNotOverlap() passed after 3.263 seconds. +✔ Test clipCatalogUnknownSchemaFailsClosed() passed after 3.263 seconds. +✔ Test cameraCD004DestroyWhileNotDetectingStillTampers() passed after 3.263 seconds. +✔ Test attackClipsMatchTheirTelegraphWindows() passed after 3.265 seconds. +✔ Test hostileProjectilesAreDistinguishedFromPlayerFire() passed after 3.263 seconds. +✔ Test durationIsFramesOverFpsInTicks() passed after 3.263 seconds. +✔ Test duplicateCommandTickIsRejected() passed after 3.263 seconds. +✔ Test splitMixAndXoshiroGoldenSequence() passed after 3.263 seconds. +✔ Test trackedBeforeMobCLosesGhost() passed after 3.263 seconds. +✔ Test fieldsAreDarkUntilTheirTurn() passed after 3.263 seconds. +✔ Test aStraightDashAtMobADoesNotSlipThePatrol() passed after 3.265 seconds. +✔ Test retiringTheCardLeavesTheCompletionConditionAuthoritative() passed after 3.263 seconds. +✔ Test snapshotCamerasCarryTheirHousingFamily() passed after 3.263 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test bossPhaseBreakAboveTheCaptainCapFailsClosed() passed after 3.263 seconds. +✔ Test gateT902AllGateFamiliesEnumerated() passed after 3.264 seconds. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 3.264 seconds. +✔ Test vfxUnknownSchemaFailsClosed() passed after 3.264 seconds. +✔ Test stagedAssetsAreStillUnplaced() passed after 3.264 seconds. +✔ Test cameraPlacementSelectsEightWithZoneQuotas() passed after 3.264 seconds. +✔ Test civicSeamT308IdentityOmitsLiteralMapLabels() passed after 3.267 seconds. +✔ Test exposureEX005RecoveryOnSixtyFirstTick() passed after 3.264 seconds. +✔ Test receiptT708ObjectivesMatchEncounterObjectivesContract() passed after 3.264 seconds. +✔ Test arenaAR005ClosedMAGateLeavesEscapeAperture() passed after 3.265 seconds. +✔ Test choicesMapToTheSpecifiedOrder() passed after 3.264 seconds. +✔ Test t0AccumulatesDisplacementAcrossTicks() passed after 3.264 seconds. +✔ Test encounterEN003SelectsLowerIDAmongEqualValidSockets() passed after 3.264 seconds. +✔ Test combatCB006EqualTimePrefersLowerTargetID() passed after 3.264 seconds. +✔ Test gateT908PendingDecisionsBlockComputation() passed after 3.264 seconds. +✔ Test lockedExtractionContactShowsThePrerequisite() passed after 3.264 seconds. +✔ Test onlyTheNamedBossPhaseBedsComeFromACityPack() passed after 3.265 seconds. +✔ Test unknownIdentityFailsClosed() passed after 3.264 seconds. +✔ Test facingVectorDirectionAgreesWithHeadingConvention() passed after 3.264 seconds. +✔ Test runtimeBundleT805BundledCatalogHasNoBundleViolations() passed after 3.265 seconds. +✔ Test identityMismatchIsRejected() passed after 3.264 seconds. +✔ Test neutralCommandUsesRequestedTick() passed after 3.264 seconds. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) started. +✔ Test environmentIdsAreRuntimeReachable() passed after 3.274 seconds. +✔ Test replayT901SmokeTripleExecutionMatchesDigest() passed after 2.851 seconds. +◇ Test case passing 1 argument headingMilli → 315000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +✔ Test clipDurationsEqualAuthoritativeStateDurations() passed after 3.274 seconds. +✔ Test enemyEN005CorrelatorChargeIntoASolidEndsAndRecovers() passed after 1.590 seconds. +◇ Test case passing 1 argument role → .sutroSignalWitch to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +✔ Suite VisualLanguageTests passed after 14.408 seconds. +✔ Suite SilhouetteTests passed after 14.408 seconds. +✔ Test terminalT704StepAfterSuccessReturnsNoEventsAndFreezesTick() passed after 2.499 seconds. +✔ Test receiptER006FilenameUsesDigestPrefix() passed after 3.509 seconds. +✔ Suite ObjectiveProjectionTests passed after 14.408 seconds. +✔ Suite AssetCatalogTests passed after 14.408 seconds. +✔ Suite CameraMountSolidTests passed after 14.408 seconds. +✔ Test realWallEntityTieIsBlocked() passed after 0.244 seconds. +✔ Suite EnvironmentAssetsAreDrawnTests passed after 14.408 seconds. +✔ Suite CivicSeamIdentityTests passed after 14.408 seconds. +✔ Suite ContractVersionsTests passed after 14.408 seconds. +✔ Suite SimulationClockTests passed after 14.407 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to coneOpensTowardTheHeadingNotItsMirror(headingMilli:) started. +◇ Test theRestartControlIsCentredOnTheSafeRectangle() started. +◇ Test captainAndStandardHousingsAreBothBacked() started. +◇ Test case passing 1 argument role → .victorianVendor to telegraphToCooldownHoldsTheCommitForItsDuration(_:) started. +◇ Test cameraTamperCopySitsBesideExposureAfterDestroy() started. +◇ Test upgradeSelectionPendingIsNotTerminal() started. +◇ Test noPhaseFallsBackToThePlainBossBed() started. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +◇ Test cameraCD015StandingPlayerChoosesNoCamera() started. +◇ Test exposureEX008TwoTampersLockdownOnce() started. +◇ Test ghostSettingRoundTripsAndStaysOffTheReceipt() started. +◇ Test everyAudioIdIsDeliveredOrPlanned() started. +◇ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() started. +◇ Test cameraCP003TutorialFourFamiliesFourReturnVisible() started. +◇ Test noAdmittedAssetBacksTheCanonicalCast() started. +◇ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() started. +◇ Test nonObjectRootThrowsInvalidJSON() started. +◇ Test approximateCuesDoNotCollideWithOtherEvents() started. +✔ Test coneOpensTowardTheHeadingNotItsMirror(headingMilli:) with 6 test cases passed after 14.552 seconds. +◇ Test pulledSanFranciscoEvidenceHashesMatchCatalog() started. +◇ Test gateT908OpenDefectsFailReport() started. +◇ Test dayRollsOverAtMidnightUTC() started. +◇ Test encounterEN017TrackedSpawnIsAware() started. +◇ Test bo022QuietApproachRaisesPlayerFrom40To90() started. +◇ Test instrumentT900CompleteRunTerminalOutcome() started. +◇ Test hudUI008GrayscaleReducedPresentationStatesDistinct() started. +◇ Test noDeclaredHousingIsUnreachable() started. +◇ Test rulesViewportContainsTheCameraViewEverywhere() started. +✔ Suite ReceiptArchiveTests passed after 14.561 seconds. +◇ Test alertCausesAreThePublishedVocabulary() started. +◇ Test ex013TrackedBeforeMobCClearsIt() started. +◇ Test objectiveT703EliteAndBossNodesFollowMobs() started. +◇ Test settingsMoveOnlyTheReceiptPresentationBlock() started. +◇ Test encounterEN013MobCNeverAppends() started. +◇ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() started. +◇ Test everyOriginalFileExistsAndMatchesItsDigest() started. +◇ Test ambientGameplayImplicationFailsClosed() started. +◇ Test extractionAR008LeaveResetsAndReenterResumes() started. +◇ Test audioT610CriticalHitEmitsHit02AndCritical() started. +◇ Test profileT406CivicPoolStressReachesCapacity() started. +◇ Test facingIsTheLastTravelDirection() started. +◇ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +◇ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() started. +◇ Test exposureTamperFloorAddsNothingToASpike() started. +◇ Test everyBoundaryNamesSomethingTheContractsDefine() started. +◇ Test groupsAreBackedIndependently() started. +◇ Test cardRowsSitBetweenTitleAndControls() started. +◇ Test clipCatalogMissingFieldFailsClosed() started. +◇ Test cameraCD007DestroyAt950ClampsAndLockdown() started. +◇ Test noOrphanedAttackClipNamesRemain() started. +◇ Test projectileOrderIsStableByEntityID() started. +◇ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() started. +◇ Test smokeReplayLoadsAndExecutes() started. +◇ Test cameraPlacementStreamIsIsolatedFromCombat() started. +◇ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() started. +◇ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() started. +◇ Test patrolSlipSearch() started. +◇ Test theCounterRestartsWithEachPhase() started. +◇ Test cameraDestroyedTakesTheStandardCap() started. +◇ Test gateT902DeviceGatesRequirePhysicalEvidence() started. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test vfxFullScreenFlashFailsClosed() started. +✔ Test telegraphToCooldownHoldsTheCommitForItsDuration(_:) with 3 test cases passed after 4.202 seconds. +◇ Test simulationInitializesFailClosedAndStepsDeterministically() started. +◇ Test exposureEX002ThreeCamerasOneTick() started. +◇ Test receiptT708RootBossMirrorsCombatAuthorityBoss() started. +◇ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() started. +◇ Test clockIsFrozenWhileSelectionIsOpen() started. +◇ Test t1CompletesAfterSixtyPresentedTicks() started. +◇ Test encounterEN002ObstructedSocketsReturnNil() started. +◇ Test combatCB007WallConsumesTheProjectileOnAnExactTie() started. +◇ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() started. +◇ Test preemptionPreservesProgressAndRestoresTheCard() started. +◇ Test stateBedsAreNeverCityMusic() started. +◇ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() started. +◇ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() started. +◇ Test aRecordFromAnotherSeedIsRejected() started. +◇ Test fogIDsResolveThroughThePresentationContract() started. +◇ Test replayT901EachMatrixEntryProducesStableDigest() started. +◇ Test theTwoTelegraphsAreDistinguishable() started. +◇ Test enemyEN006ThirdVendorMineRetiresTheOldest() started. +◇ Test case passing 1 argument handedness → .right to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Test theRestartControlIsCentredOnTheSafeRectangle() passed after 5.067 seconds. +✔ Test captainAndStandardHousingsAreBothBacked() passed after 5.076 seconds. +✔ Test cameraTamperCopySitsBesideExposureAfterDestroy() passed after 5.554 seconds. +✔ Test upgradeSelectionPendingIsNotTerminal() passed after 5.554 seconds. +✔ Test noPhaseFallsBackToThePlainBossBed() passed after 5.554 seconds. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 5.642 seconds. +✔ Test cameraCD015StandingPlayerChoosesNoCamera() passed after 5.642 seconds. +✔ Test exposureEX008TwoTampersLockdownOnce() passed after 5.642 seconds. +✔ Test ghostSettingRoundTripsAndStaysOffTheReceipt() passed after 5.642 seconds. +✔ Test successRowsWithNoStoredBest() passed after 9.294 seconds. +✔ Test audioAH003PlayerDamageCoalescesPerFifteenTicks() passed after 5.642 seconds. +✔ Test cameraCP003TutorialFourFamiliesFourReturnVisible() passed after 5.642 seconds. +◇ Test terminalT704ReceiptDigestImmutableAfterTerminal() started. +✔ Test everyAudioIdIsDeliveredOrPlanned() passed after 5.642 seconds. +✔ Test aKillOfAStruckOrAwareEnemyIsNotATakedown() passed after 5.642 seconds. +✔ Test nonObjectRootThrowsInvalidJSON() passed after 5.861 seconds. +✔ Test noAdmittedAssetBacksTheCanonicalCast() passed after 5.944 seconds. +✔ Test completeRunT705GoldenVectorSucceedsWithZeroCamerasDestroyed(upgrade:) with 3 test cases passed after 20.496 seconds. +✔ Test approximateCuesDoNotCollideWithOtherEvents() passed after 5.962 seconds. +✔ Test dayRollsOverAtMidnightUTC() passed after 5.957 seconds. +✔ Test pulledSanFranciscoEvidenceHashesMatchCatalog() passed after 5.962 seconds. +✔ Test bo022QuietApproachRaisesPlayerFrom40To90() passed after 5.957 seconds. +✔ Test encounterEN017TrackedSpawnIsAware() passed after 5.957 seconds. +✔ Test hudUI008GrayscaleReducedPresentationStatesDistinct() passed after 5.957 seconds. +✔ Test noDeclaredHousingIsUnreachable() passed after 5.957 seconds. +✔ Test rulesViewportContainsTheCameraViewEverywhere() passed after 5.956 seconds. +✔ Test alertCausesAreThePublishedVocabulary() passed after 5.961 seconds. +✔ Test ex013TrackedBeforeMobCClearsIt() passed after 5.961 seconds. +✔ Test objectiveT703EliteAndBossNodesFollowMobs() passed after 5.961 seconds. +✔ Test settingsMoveOnlyTheReceiptPresentationBlock() passed after 5.961 seconds. +✔ Test encounterEN013MobCNeverAppends() passed after 5.961 seconds. +✔ Test ui011ThePayoutCaptionNamesTheRestoredIntegrity() passed after 5.961 seconds. +✔ Test everyOriginalFileExistsAndMatchesItsDigest() passed after 5.961 seconds. +✔ Test ambientGameplayImplicationFailsClosed() passed after 5.961 seconds. +✔ Test instrumentT900CompleteRunTerminalOutcome() passed after 5.961 seconds. +✔ Test audioT610CriticalHitEmitsHit02AndCritical() passed after 5.961 seconds. +✔ Test playtestT903EvidenceAdvancesReleaseCandidateCollection() passed after 20.023 seconds. +✔ Test profileT406CivicPoolStressReachesCapacity() passed after 5.961 seconds. +✔ Test receiptT707DestructionEntriesOrderedByTickThenCameraId() passed after 5.960 seconds. +✔ Test exposureTamperFloorAddsNothingToASpike() passed after 5.960 seconds. +✔ Test everyBoundaryNamesSomethingTheContractsDefine() passed after 5.960 seconds. +✔ Test groupsAreBackedIndependently() passed after 5.960 seconds. +✔ Test cardRowsSitBetweenTitleAndControls() passed after 5.960 seconds. +✔ Test clipCatalogMissingFieldFailsClosed() passed after 5.960 seconds. +✔ Test cameraCD007DestroyAt950ClampsAndLockdown() passed after 5.960 seconds. +✔ Test noOrphanedAttackClipNamesRemain() passed after 5.960 seconds. +✔ Test projectileOrderIsStableByEntityID() passed after 5.960 seconds. +✔ Test eliteDamageShowsItsHurtClipForExactlyItsDuration() passed after 5.960 seconds. +✔ Test smokeReplayLoadsAndExecutes() passed after 5.960 seconds. +✔ Test cameraPlacementStreamIsIsolatedFromCombat() passed after 5.960 seconds. +✔ Test shadowIsEarnedFromARealRunThatSlipsThePatrol() passed after 5.960 seconds. +✔ Test reducedMotionIsOneHalfSecondFadeWithNoChirps() passed after 5.960 seconds. +✔ Test patrolSlipSearch() passed after 5.960 seconds. +✔ Test theCounterRestartsWithEachPhase() passed after 5.960 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test cameraDestroyedTakesTheStandardCap() passed after 5.960 seconds. +✔ Test gateT902DeviceGatesRequirePhysicalEvidence() passed after 5.420 seconds. +✔ Test extractionAR008LeaveResetsAndReenterResumes() passed after 5.962 seconds. +✔ Test vfxFullScreenFlashFailsClosed() passed after 5.420 seconds. +✔ Test simulationInitializesFailClosedAndStepsDeterministically() passed after 5.419 seconds. +✔ Test exposureEX002ThreeCamerasOneTick() passed after 5.419 seconds. +✔ Test receiptT708RootBossMirrorsCombatAuthorityBoss() passed after 5.419 seconds. +✔ Test arenaAR007BossCorridorRemainsOneHundredNinetyTwoWide() passed after 5.419 seconds. +✔ Test facingIsTheLastTravelDirection() passed after 5.961 seconds. +✔ Test t1CompletesAfterSixtyPresentedTicks() passed after 5.419 seconds. +✔ Test encounterEN002ObstructedSocketsReturnNil() passed after 5.419 seconds. +✔ Test combatCB007WallConsumesTheProjectileOnAnExactTie() passed after 5.419 seconds. +✔ Test gateT908AllRequiredGatesPassWhenFullyEvidenceLinked() passed after 5.419 seconds. +✔ Test preemptionPreservesProgressAndRestoresTheCard() passed after 5.419 seconds. +✔ Test d021T406EvaluatorProfilesFromSimulation() passed after 9.198 seconds. +✔ Test clipT605HeadingProjectsToFourAuthoredDirectionsWithoutMirroring() passed after 5.419 seconds. +✔ Test evidenceT907CollectsWithDeviceProfilingAndSettledD021() passed after 20.518 seconds. +✔ Test aRecordFromAnotherSeedIsRejected() passed after 5.419 seconds. +✔ Test wanderingRunDigestAndReceiptAreUnchanged() passed after 20.535 seconds. +✔ Test stateBedsAreNeverCityMusic() passed after 5.434 seconds. +✔ Test replayT901EachMatrixEntryProducesStableDigest() passed after 4.673 seconds. +✔ Test enemyEN006ThirdVendorMineRetiresTheOldest() passed after 3.302 seconds. +◇ Test case passing 1 argument handedness → .left to controlsStayInsideAndMeetTheTouchTarget(handedness:) started. +✔ Suite CameraPresentationTests passed after 20.539 seconds. +✔ Test terminalT704ReceiptDigestImmutableAfterTerminal() passed after 0.342 seconds. +◇ Test headingsAdvanceClockwise() started. +✔ Suite HUDPresentationTests passed after 20.539 seconds. +✔ Suite CameraHousingArtTests passed after 20.539 seconds. +✔ Suite EventCatalogTests passed after 20.539 seconds. +✔ Suite PlaytestEvidenceLoaderTests passed after 20.538 seconds. +✔ Test controlsStayInsideAndMeetTheTouchTarget(handedness:) with 2 test cases passed after 5.977 seconds. +✔ Suite TerminalShareGeometryTests passed after 20.539 seconds. +✔ Suite CaptainClipTests passed after 20.539 seconds. +✔ Suite PatrolSlipSearch passed after 20.540 seconds. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.016 seconds. +◇ Test cooldownWithoutATelegraphIsNotACommit() started. +✔ Suite ArenaAndSimulationTests passed after 20.539 seconds. +✔ Suite ExpansionGateDecisionTests passed after 20.539 seconds. +✔ Suite D021CeilingsTests passed after 20.540 seconds. +✔ Suite DeviceRunEvidenceTests passed after 20.539 seconds. +✔ Suite MusicBedCoverageTests passed after 20.539 seconds. +◇ Test theCentreHitsAndTheCornerDoesNot() started. +◇ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() started. +◇ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() started. +◇ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() started. +◇ Test nonBossStatesAreUnaffected() started. +◇ Test cameraCD016MovingTowardACameraTargetsIt() started. +◇ Test exposureEX009LockdownIgnoresRecovery() started. +◇ Test ghostNeverAppearsInTheDigest() started. +◇ Test ghostRowShowsNewBestOrTheGap() started. +◇ Test audioAH004DisabledSettingsLeaveCuesEmpty() started. +◇ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() started. +◇ Test audioCoverageIsMeasurable() started. +◇ Test streakCountsAndResetsWhenAnEnemyBecomesAware() started. +◇ Test malformedBossSectionThrowsTypedErrorNamingTheField() started. +◇ Test onlyNamedSingleCuesComeFromAnotherCity() started. +✔ Test headingsAdvanceClockwise() passed after 0.042 seconds. +◇ Test completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test approximateCuesStayWithinTheCityBoundary() started. +◇ Test fourHundredDaysYieldDistinctLegalSeeds() started. +◇ Test deliveryPNGNameRejectsUnderscoreFreeStems() started. +◇ Test bo023LostQuietApproachRaisesPlayerFrom40To75() started. +◇ Test encounterEN018MobCSpawnsAware() started. +◇ Test spawnFairnessStillUsesTheRulesBox() started. +◇ Test ex014ItStaysLostAfterRecovery() started. +◇ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() started. +◇ Test receiptRecordsWhetherTutorialsWereEnabled() started. +◇ Test encounterHeatReadsThePreviousTicksDetectionState() started. +◇ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() started. +◇ Test originalSpritesUseAuthoredBoxes() started. +◇ Test ambientCameraHousingMotionFailsClosed() started. +◇ Test instrumentT900PerformanceThresholdsMatchGateC() started. +◇ Test audioT610DestroyEmitsFieldOffSameTick() started. +◇ Test profileT406AggregateReportIsStable() started. +◇ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() started. +◇ Test exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() started. +◇ Test nothingDeliveredMeansNothingBacked() started. +◇ Test clipCatalogMissingRequiredClipFailsClosed() started. +◇ Test cameraCD010DeathTickStillRecordsTamper() started. +◇ Test bossIntegrityProjectsForTheHUDBar() started. +◇ Test moderateStaggersOnlyWhenNoAttackIsPlaying() started. +◇ Test restartRestoresInitialAuthoritativeState() started. +◇ Test entityIdsAreMonotonicAndNeverReused() started. +◇ Test rs019PatrolAlertedBeforeMobALosesShadow() started. +◇ Test chirpCueAndEncounterLabelHoldMatchD100() started. +◇ Test safetyMessagesSurviveTheCap() started. +◇ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() started. +◇ Test gateT902PlaytestGatesMapToT903T904() started. +◇ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() started. +◇ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() started. +✔ Test runtimeBundleT805RejectsLegacyEvidenceWithRuntimePath() passed after 5.481 seconds. +◇ Test exposureEX003EightCamerasCapsAtFive() started. +◇ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() started. +◇ Test arenaLayoutDocumentsBossGateSidestep() started. +◇ Test patrolEN026PlayerInsideTheConeIsSeen() started. +◇ Test t1DoesNotCountBeforeItIsActive() started. +◇ Test encounterEN002RetryEveryThirtyTicksThenTimeout() started. +◇ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() started. +◇ Test lockdownOutranksExtraction() started. +◇ Test clipT605HurtInterruptsLocomotionButNotDodge() started. +◇ Test tamperedCommandIsRejected() started. +◇ Test reducedMotionIntroChangesNothingEither() started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test gateB016KernelAndSmokeFixturesPass() started. +◇ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() started. +◇ Test case passing 1 argument destroy → true to exposureTamperFloorThroughTheSimulation(destroy:) started. +✔ Test theCentreHitsAndTheCornerDoesNot() passed after 1.274 seconds. +✔ Test cooldownWithoutATelegraphIsNotACommit() passed after 1.281 seconds. +✔ Test cameraUI005LockdownPreemptsTutorialWithoutAdvancingPhase() passed after 1.485 seconds. +✔ Test notPlayingDisagreesWithTerminalAtTheUpgradeGate() passed after 1.485 seconds. +✔ Test nonBossStatesAreUnaffected() passed after 1.485 seconds. +✔ Test cameraCD016MovingTowardACameraTargetsIt() passed after 1.602 seconds. +✔ Test exposureEX009LockdownIgnoresRecovery() passed after 1.602 seconds. +✔ Test everyEmitterHasAHousingAndOnlyTheLiveOneIsActive() passed after 1.643 seconds. +✔ Test ghostNeverAppearsInTheDigest() passed after 1.602 seconds. +✔ Test audioAH004DisabledSettingsLeaveCuesEmpty() passed after 1.602 seconds. +✔ Test cameraCP004IncompatiblePairShuffledFirstYieldsNextLegal() passed after 1.602 seconds. +◇ Test terminalT704ER005FailedRunRetainsCameraDestruction() started. +✔ Test fogIDsResolveThroughThePresentationContract() passed after 6.320 seconds. +✔ Test streakCountsAndResetsWhenAnEnemyBecomesAware() passed after 1.602 seconds. +✔ Test malformedBossSectionThrowsTypedErrorNamingTheField() passed after 2.500 seconds. +✔ Test theTwoTelegraphsAreDistinguishable() passed after 6.921 seconds. +✔ Test audioCoverageIsMeasurable() passed after 2.612 seconds. +✔ Test onlyNamedSingleCuesComeFromAnotherCity() passed after 2.612 seconds. +✔ Test deliveryPNGNameRejectsUnderscoreFreeStems() passed after 2.611 seconds. +✔ Test bo023LostQuietApproachRaisesPlayerFrom40To75() passed after 2.611 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 8.091 seconds. +✔ Test spawnFairnessStillUsesTheRulesBox() passed after 2.611 seconds. +✔ Test ex014ItStaysLostAfterRecovery() passed after 2.612 seconds. +✔ Test objectiveT703LockedExtractionContactShowsAuthorityCopy() passed after 2.612 seconds. +✔ Test receiptRecordsWhetherTutorialsWereEnabled() passed after 2.611 seconds. +✔ Test approximateCuesStayWithinTheCityBoundary() passed after 2.612 seconds. +✔ Test encounterHeatReadsThePreviousTicksDetectionState() passed after 2.612 seconds. +✔ Test noTagOnceTheBossIsUpEvenWithoutTheActivationEvent() passed after 2.612 seconds. +✔ Test ambientCameraHousingMotionFailsClosed() passed after 2.611 seconds. +✔ Test instrumentT900PerformanceThresholdsMatchGateC() passed after 2.611 seconds. +✔ Test audioT610DestroyEmitsFieldOffSameTick() passed after 2.611 seconds. +✔ Test clockIsFrozenWhileSelectionIsOpen() passed after 8.091 seconds. +◇ Test extraLargeScaleFitsTheSEClassCanvas() started. +✔ Test receiptT707DestructionEntryIncludesSourceAndLockdownFields() passed after 2.612 seconds. +✔ Test encounterEN018MobCSpawnsAware() passed after 2.612 seconds. +✔ Test onlyTheFirstStartCountsAndWavesAreKeyedByEncounter() passed after 2.612 seconds. +✔ Test nothingDeliveredMeansNothingBacked() passed after 2.611 seconds. +✔ Test originalSpritesUseAuthoredBoxes() passed after 2.612 seconds. +✔ Test clipCatalogMissingRequiredClipFailsClosed() passed after 2.612 seconds. +✔ Test cameraCD010DeathTickStillRecordsTamper() passed after 2.612 seconds. +✔ Test bossIntegrityProjectsForTheHUDBar() passed after 2.612 seconds. +✔ Test restartRestoresInitialAuthoritativeState() passed after 2.612 seconds. +✔ Test entityIdsAreMonotonicAndNeverReused() passed after 2.612 seconds. +✔ Test rs019PatrolAlertedBeforeMobALosesShadow() passed after 2.612 seconds. +✔ Test chirpCueAndEncounterLabelHoldMatchD100() passed after 2.612 seconds. +✔ Test safetyMessagesSurviveTheCap() passed after 2.612 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test blackoutShorterThanTheSpecifiedCascadeFailsClosed() passed after 2.612 seconds. +✔ Test gateT902PlaytestGatesMapToT903T904() passed after 2.610 seconds. +✔ Test extractionUI006LeaveAtOneTickResetsDisplayedSeconds() passed after 2.610 seconds. +✔ Test vfxProjectorMapsEventsAndCoalescesPlayerHits() passed after 2.610 seconds. +✔ Test exposureEX003EightCamerasCapsAtFive() passed after 2.610 seconds. +✔ Test receiptT708DefeatedBossReceiptListsCanonicalPhases() passed after 2.610 seconds. +✔ Test moderateStaggersOnlyWhenNoAttackIsPlaying() passed after 2.613 seconds. +✔ Test patrolEN026PlayerInsideTheConeIsSeen() passed after 2.610 seconds. +✔ Test t1DoesNotCountBeforeItIsActive() passed after 2.610 seconds. +✔ Test arenaLayoutDocumentsBossGateSidestep() passed after 2.610 seconds. +✔ Test theOrderIsTotalAndNeverDependsOnDiscoveryOrder() passed after 2.610 seconds. +✔ Test lockdownOutranksExtraction() passed after 2.610 seconds. +✔ Test clipT605HurtInterruptsLocomotionButNotDodge() passed after 2.610 seconds. +✔ Test ghostRowShowsNewBestOrTheGap() passed after 2.615 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706NoCameraDestructionExploit(upgrade:) started. +✔ Test gateB016KernelAndSmokeFixturesPass() passed after 2.277 seconds. +✔ Test enemyEN007ForcedLockdownJumpsToOneThousandAndLatchesOnce() passed after 1.930 seconds. +✔ Suite CameraHUDTests passed after 23.248 seconds. +✔ Suite CaptainCameraTests passed after 23.248 seconds. +✔ Suite GhostSettingTests passed after 23.248 seconds. +✔ Test terminalT704ER005FailedRunRetainsCameraDestruction() passed after 1.063 seconds. +✔ Suite EnvironmentContractTests passed after 23.247 seconds. +◇ Test case passing 1 argument destroy → false to exposureTamperFloorThroughTheSimulation(destroy:) started. +◇ Test atan2InvertsHeadingUnit(headingMilli:) started. +✔ Suite AssetIntakeChecks passed after 24.112 seconds. +✔ Suite ApproximateCueTests passed after 24.112 seconds. +✔ Suite RunTelemetryTests passed after 24.112 seconds. +✔ Suite AudioProjectorSmokeTests passed after 24.111 seconds. +✔ Test extraLargeScaleFitsTheSEClassCanvas() passed after 0.916 seconds. +✔ Suite TutorialCardDurationTests passed after 24.111 seconds. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 0.915 seconds. +◇ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() started. +✔ Suite CombatAuthorityReceiptTests passed after 24.111 seconds. +✔ Test tamperedCommandIsRejected() passed after 3.525 seconds. +◇ Test case passing 1 argument headingMilli → 0 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706NoCameraDestructionExploit(upgrade:) started. +◇ Test thePanelFitsTheSmallestSafeRectangle() started. +◇ Test correlatorCommitStaysAStateClip() started. +◇ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() started. +◇ Test everyPhaseBedIsDeliveredAndCityFree() started. +◇ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() started. +◇ Test exposureEX010SingleStateJumpEvent() started. +◇ Test audioProjectsCameraHitAlternationAndUpgradeIds() started. +◇ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() started. +◇ Test streakResetsWhenAnEnemySpawnsAware() started. +◇ Test missingEliteFieldThrowsTypedErrorNamingTheField() started. +◇ Test telegraphsCarryTheirAudioCues() started. +✔ Test completeRunT706NoCameraDestructionExploit(upgrade:) with 3 test cases passed after 3.932 seconds. +◇ Test acceptedOriginalAudioIsPlayable() started. +◇ Test noVisualAssetComesFromAnotherCity() started. +◇ Test bo024QuietApproachLeaves100Unchanged() started. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +◇ Test awarenessHintUsesTheNewView() started. +◇ Test ex015TheForcedLockdownAtMobCNeverCostsIt() started. +◇ Test objectiveT703ReceiptIncludesCombatAuthorityLane() started. +◇ Test mixDefaultsMatchTheContract() started. +◇ Test encounterHeatAppliesToEveryMobAWave() started. +◇ Test aLostApproachHasNoPayoutCaption() started. +◇ Test ambientRareWithoutTelegraphPauseFailsClosed() started. +◇ Test validIndexWithMovementIsRefused(x:y:) started. +◇ Test receiptT707DamagedNotDestroyedCamerasCounted() started. +◇ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() started. +◇ Test aPilotedRunProducesTheBoundariesInOrder() started. +◇ Test anEmptyGroupIsNotBacked() started. +◇ Test everyActorSpriteIsSizeChecked() started. +◇ Test clipCatalogRejectsMarkerCopiedFromFrameId() started. +◇ Test cameraT410SurvivingContactThenTamperAddsBoth() started. +◇ Test bossHUDIsAbsentBeforeAndAfterTheBoss() started. +◇ Test previousRulesetFailsClosedBeforeExecution(previous:) started. +◇ Test quadraticDiscriminantFitsAndRejectsNegative() started. +◇ Test patrolAlertedAfterMobAKeepsShadow() started. +◇ Test anyTouchSkips() started. +◇ Test the001SchemaIsNoLongerAccepted() started. +DAILY-RUN-400 distinct=400 salted=0 +◇ Test gateT902UnmappedGatesTrackedForT907() started. +◇ Test extractionAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() started. +✔ Test encounterEN002RetryEveryThirtyTicksThenTimeout() passed after 3.953 seconds. +◇ Test upgradeUP004SignalJammerContactDeltas() started. +◇ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() started. +◇ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() started. +◇ Test t2ActivatesOnFirstContact() started. +◇ Test arenaAR010ManifestJSONRoundTrip() started. +◇ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() started. +◇ Test safetyCopyIsDistinguishedFromCardCopy() started. +◇ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() started. +◇ Test aRunThatIsNotStoredNeverClaimsNewBest() started. +◇ Test case passing 1 argument headingMilli → 20000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test replayT901B005UnknownVersionFailsBeforeTickOne() started. +◇ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() started. +◇ Test case passing 2 arguments x → 1, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument previous → "ss-rules-006" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Test thePanelFitsTheSmallestSafeRectangle() passed after 1.033 seconds. +✔ Test fourHundredDaysYieldDistinctLegalSeeds() passed after 4.588 seconds. +✔ Test theUpgradeGateIsPendingAndNotTerminalAtOnce() passed after 0.832 seconds. +✔ Test correlatorCommitStaysAStateClip() passed after 1.209 seconds. +✔ Test cameraCD017MovingFortyFiveDegreesAwayChoosesNothing() passed after 0.845 seconds. +✔ Test exposureEX010SingleStateJumpEvent() passed after 0.845 seconds. +✔ Test audioProjectsCameraHitAlternationAndUpgradeIds() passed after 0.845 seconds. +✔ Test cameraCP005InsufficientZonePoolRejectedBeforeTickOne() passed after 0.845 seconds. +◇ Test terminalT704ER008ReceiptCanonicalRoundTrip() started. +✔ Test streakResetsWhenAnEnemySpawnsAware() passed after 0.845 seconds. +✔ Test missingEliteFieldThrowsTypedErrorNamingTheField() passed after 0.845 seconds. +✔ Test telegraphsCarryTheirAudioCues() passed after 0.845 seconds. +✔ Test runtimeBundleT807CatalogContentAuditPassesForBundledCatalog() passed after 1.246 seconds. +✔ Test everyPhaseBedIsDeliveredAndCityFree() passed after 0.845 seconds. +✔ Test bo024QuietApproachLeaves100Unchanged() passed after 0.845 seconds. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 0.845 seconds. +✔ Test awarenessHintUsesTheNewView() passed after 0.845 seconds. +✔ Test exposureTamperFloorThroughTheSimulation(destroy:) with 2 test cases passed after 4.776 seconds. +✔ Test ex015TheForcedLockdownAtMobCNeverCostsIt() passed after 0.845 seconds. +✔ Test mixDefaultsMatchTheContract() passed after 0.845 seconds. +✔ Test objectiveT703ReceiptIncludesCombatAuthorityLane() passed after 0.845 seconds. +✔ Test encounterHeatAppliesToEveryMobAWave() passed after 0.845 seconds. +✔ Test ambientRareWithoutTelegraphPauseFailsClosed() passed after 0.845 seconds. +✔ Test aLostApproachHasNoPayoutCaption() passed after 0.845 seconds. +◇ Test canvasIsCentredInTheSafeRectangle() started. +✔ Test receiptT707DamagedNotDestroyedCamerasCounted() passed after 0.845 seconds. +✔ Test acceptedOriginalAudioIsPlayable() passed after 0.845 seconds. +✔ Test anEmptyGroupIsNotBacked() passed after 0.845 seconds. +✔ Test noVisualAssetComesFromAnotherCity() passed after 0.845 seconds. +✔ Test clipCatalogRejectsMarkerCopiedFromFrameId() passed after 0.845 seconds. +✔ Test cameraT410SurvivingContactThenTamperAddsBoth() passed after 0.845 seconds. +✔ Test bossHUDIsAbsentBeforeAndAfterTheBoss() passed after 0.845 seconds. +✔ Test quadraticDiscriminantFitsAndRejectsNegative() passed after 0.845 seconds. +✔ Test patrolAlertedAfterMobAKeepsShadow() passed after 0.845 seconds. +✔ Test anyTouchSkips() passed after 0.845 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test the001SchemaIsNoLongerAccepted() passed after 0.845 seconds. +✔ Test gateT902UnmappedGatesTrackedForT907() passed after 0.820 seconds. +✔ Test extractionAR009LethalDamageBeatsExtractionSuccess() passed after 0.820 seconds. +✔ Test vfxReducedMotionDisablesShakeAndUsesReducedLanguage() passed after 0.820 seconds. +✔ Test upgradeUP004SignalJammerContactDeltas() passed after 0.820 seconds. +✔ Test evidenceT907DefaultExpansionGateIsNotComputable() passed after 11.197 seconds. +✔ Test patrolEN027PlayerOutsideTheAngleIsNotSeen() passed after 0.820 seconds. +✔ Test t2ActivatesOnFirstContact() passed after 0.820 seconds. +✔ Test killingBlowHoldsTheDefeatClipAfterTheEnemyIsGone() passed after 0.820 seconds. +✔ Test combatCB008CameraLosesOneIntegrityRegardlessOfEnemyDamage() passed after 0.820 seconds. +✔ Test safetyCopyIsDistinguishedFromCardCopy() passed after 0.820 seconds. +✔ Test clipT605TerminalClipsRejectCancellationAndDefeatCancelsExtraction() passed after 0.820 seconds. +✔ Test arenaAR010ManifestJSONRoundTrip() passed after 0.820 seconds. +◇ Test tamperedDigestIsRejected() started. +◇ Test case passing 1 argument headingMilli → 45000 to atan2InvertsHeadingUnit(headingMilli:) started. +✔ Test replayT901B005UnknownVersionFailsBeforeTickOne() passed after 0.813 seconds. +✔ Test enemyEN008AlreadyLockedDownDoesNotEnterTwice() passed after 0.401 seconds. +◇ Test case passing 2 arguments x → 0, y → 1 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test case passing 1 argument previous → "ss-rules-007" to previousRulesetFailsClosedBeforeExecution(previous:) started. +✔ Suite TerminalSurfaceGeometryTests passed after 25.414 seconds. +✔ Test terminalT704ER008ReceiptCanonicalRoundTrip() passed after 0.062 seconds. +◇ Test completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Suite TamperFloorTests passed after 25.513 seconds. +✔ Test canvasIsCentredInTheSafeRectangle() passed after 0.153 seconds. +✔ Test previousRulesetFailsClosedBeforeExecution(previous:) with 2 test cases passed after 0.998 seconds. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.153 seconds. +◇ Test encounterEN003SimulationUsesLowerSocketID() started. +✔ Suite TutorialPreemptionTests passed after 25.513 seconds. +✔ Test everyActorSpriteIsSizeChecked() passed after 0.999 seconds. +◇ Test case passing 1 argument headingMilli → 135000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .signalJammer to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Suite ReplayMatrixTests passed after 25.521 seconds. +◇ Test case passing 2 arguments x → -32767, y → 0 to validIndexWithMovementIsRefused(x:y:) started. +◇ Test saltLoopTakesTheFirstPassingCandidate() started. +◇ Test terminalCopyExistsForEveryEndingAndNoLiveState() started. +◇ Test informantContactHitShowsItsCommit() started. +◇ Test cameraCD018ChosenCameraBeatsFarEnemy() started. +◇ Test playerPC002DiagonalDoesNotExceedMaxSpeed() started. +◇ Test extractionTickFiresOnDisplayedSecondChange() started. +◇ Test cameraCP006NoCompatibleSetFailsArenaValidation() started. +◇ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() started. +◇ Test unknownArchetypeThrowsTypedErrorNamingTheKey() started. +◇ Test everyPlayableActorRoleHasClips() started. +◇ Test presentationAssetRegistryT801MatchesBundleProjection() started. +◇ Test noTwoPhasesShareABed() started. +◇ Test thresholdAppliesOnlyOnTheActivationTick() started. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +◇ Test safetyClassFollowsTheD094List() started. +◇ Test trackedOnTheActivationTickItselfDoesNotCostIt() started. +◇ Test mixLevelsClampToTheContractRange() started. +◇ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() started. +◇ Test encounterEN015EarlyLockdownAppendsTwoInformants() started. +◇ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() started. +◇ Test theRowsDoNotOverlapTheLayoutTable() started. +◇ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() started. +◇ Test everyBossCueTheProjectorBuildsIsRegistered() started. +◇ Test solidAssetIdsDeriveFromArenaSolidIds() started. +◇ Test admittedSpritesUseAuthoredBoxes() started. +◇ Test clipCatalogRejectsUnknownEventMarker() started. +◇ Test cameraCD008HitDestroyedCameraIsIgnored() started. +◇ Test safetyRationaleTelegraphMatchesTheContract() started. +✔ Suite ReplayTests passed after 25.769 seconds. +◇ Test canonicalJSONSortsKeysAndHashes() started. +◇ Test aNonPatrolAlertKeepsShadow() started. +◇ Test oneTutorialLineAtATimeAndLaterLinesQueue() started. +◇ Test cameraDestroyedProjectsShatterAndReducedCrack() started. +◇ Test gateC009TenConsecutiveCompleteRunsPass() started. +◇ Test extractionT703AArmedOutsideRegionDoesNotTick() started. +◇ Test vfxRicochetProjectsOnceForTwoSameTickHits() started. +✔ Test encounterEN003SimulationUsesLowerSocketID() passed after 0.256 seconds. +◇ Test upgradeUP004JammedDeltaIsWhatATickApplies() started. +◇ Test evidenceT907DeviceEvidenceCanAdvanceGateC() started. +◇ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() started. +◇ Test t2CompletesAfterThirtyConsecutiveClearTicks() started. +◇ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() started. +◇ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() started. +◇ Test clipT605CommitAlignsToEventMarkerNotFrameId() started. +◇ Test arenaAR009LethalDamageBeatsExtractionSuccess() started. +◇ Test case passing 1 argument headingMilli → 200000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ricochetPulse to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +◇ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() started. +◇ Test case passing 2 arguments x → 0, y → -1 to validIndexWithMovementIsRefused(x:y:) started. +✔ Test saltLoopTakesTheFirstPassingCandidate() passed after 1.562 seconds. +✔ Test terminalCopyExistsForEveryEndingAndNoLiveState() passed after 1.587 seconds. +✔ Test informantContactHitShowsItsCommit() passed after 1.587 seconds. +✔ Test cameraCD018ChosenCameraBeatsFarEnemy() passed after 1.587 seconds. +✔ Test playerPC002DiagonalDoesNotExceedMaxSpeed() passed after 1.587 seconds. +✔ Test extractionTickFiresOnDisplayedSecondChange() passed after 1.587 seconds. +✔ Test cameraCP006NoCompatibleSetFailsArenaValidation() passed after 1.587 seconds. +◇ Test terminalT704DeathWithBossDefeatRemainsFailure() started. +✔ Test takedownAudioIsPitchedFourSemitonesDownWithARoutineCaption() passed after 1.587 seconds. +✔ Test unknownArchetypeThrowsTypedErrorNamingTheKey() passed after 1.587 seconds. +✔ Test everyPlayableActorRoleHasClips() passed after 1.587 seconds. +✔ Test encounterEN018HeatReinforcementSpawnsAwareWhileAuthoredMembersDoNot() passed after 2.841 seconds. +✔ Test aRunThatIsNotStoredNeverClaimsNewBest() passed after 2.789 seconds. +✔ Test thresholdAppliesOnlyOnTheActivationTick() passed after 1.587 seconds. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 1.587 seconds. +✔ Test safetyClassFollowsTheD094List() passed after 1.587 seconds. +✔ Test trackedOnTheActivationTickItselfDoesNotCostIt() passed after 1.649 seconds. +✔ Test mixLevelsClampToTheContractRange() passed after 1.649 seconds. +✔ Test objectiveT703NetworkBlackoutDoesNotAdvanceCombatAuthority() passed after 1.649 seconds. +✔ Test encounterEN015EarlyLockdownAppendsTwoInformants() passed after 1.649 seconds. +✔ Test ambientCosmeticStreamIsIsolatedFromCombatAndPlacement() passed after 1.649 seconds. +✔ Test theRowsDoNotOverlapTheLayoutTable() passed after 1.649 seconds. +◇ Test referenceSizedSafeRectIsIdentity() started. +✔ Test validIndexWithMovementIsRefused(x:y:) with 4 test cases passed after 2.904 seconds. +✔ Test receiptT707ER005FailureRetainsOrderedDestructionEntries() passed after 1.649 seconds. +✔ Test everyBossCueTheProjectorBuildsIsRegistered() passed after 1.649 seconds. +✔ Test solidAssetIdsDeriveFromArenaSolidIds() passed after 1.649 seconds. +✔ Test gateT908OpenDefectsFailReport() passed after 12.859 seconds. +✔ Test clipCatalogRejectsUnknownEventMarker() passed after 1.649 seconds. +✔ Test cameraCD008HitDestroyedCameraIsIgnored() passed after 1.649 seconds. +✔ Test safetyRationaleTelegraphMatchesTheContract() passed after 1.649 seconds. +✔ Test canonicalJSONSortsKeysAndHashes() passed after 1.649 seconds. +✔ Test aNonPatrolAlertKeepsShadow() passed after 1.649 seconds. +✔ Test oneTutorialLineAtATimeAndLaterLinesQueue() passed after 1.649 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test cameraDestroyedProjectsShatterAndReducedCrack() passed after 1.649 seconds. +✔ Test presentationAssetRegistryT801MatchesBundleProjection() passed after 1.651 seconds. +✔ Test extractionT703AArmedOutsideRegionDoesNotTick() passed after 1.649 seconds. +✔ Test vfxRicochetProjectsOnceForTwoSameTickHits() passed after 1.649 seconds. +✔ Test upgradeUP004JammedDeltaIsWhatATickApplies() passed after 1.649 seconds. +✔ Test tamperedDigestIsRejected() passed after 2.023 seconds. +✔ Test patrolEN028PlayerBeyondTheRangeIsNotSeen() passed after 1.649 seconds. +✔ Test t2CompletesAfterThirtyConsecutiveClearTicks() passed after 1.649 seconds. +✔ Test killingBlowShowsDefeatNotHurtInEitherEventOrder() passed after 1.649 seconds. +✔ Test combatCB010ALaterHitCannotDamageOrRekillADeadTarget() passed after 1.649 seconds. +✔ Test noTwoPhasesShareABed() passed after 1.651 seconds. +✔ Test arenaAR009LethalDamageBeatsExtractionSuccess() passed after 1.589 seconds. +◇ Test environmentArtMatchesItsSolid() started. +◇ Test case passing 1 argument headingMilli → 315000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test case passing 1 argument upgrade → .ghostStep to completeRunT706UpgradeIsolationPreserved(upgrade:) started. +✔ Test clipT605CommitAlignsToEventMarkerNotFrameId() passed after 1.680 seconds. +✔ Suite AudioProjectorTests passed after 27.491 seconds. +✔ Test terminalT704DeathWithBossDefeatRemainsFailure() passed after 0.134 seconds. +✔ Test completeRunT706UpgradeIsolationPreserved(upgrade:) with 3 test cases passed after 2.024 seconds. +✔ Suite ObjectiveGraphTests passed after 27.537 seconds. +✔ Suite QuietApproachPresentationTests passed after 27.537 seconds. +✔ Test referenceSizedSafeRectIsIdentity() passed after 0.118 seconds. +✔ Suite CameraDestructionReceiptTests passed after 27.538 seconds. +✔ Suite DeterminismTests passed after 27.537 seconds. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.118 seconds. +✔ Suite ExtractionCountdownTests passed after 27.538 seconds. +◇ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() started. +✔ Suite DamageOrderingTests passed after 27.537 seconds. +✔ Suite BossPhaseMusicTests passed after 27.539 seconds. +✔ Suite ArenaReachabilityTests passed after 27.538 seconds. +✔ Test enemyEN009PendingSpawnKeepsTheEncounterOpen() passed after 0.526 seconds. +◇ Test case passing 1 argument headingMilli → 330000 to atan2InvertsHeadingUnit(headingMilli:) started. +◇ Test labelFormat() started. +◇ Test terminalCopyMatchesTheEstablishedCaptions() started. +◇ Test damageFromAnotherSourceIsNotAnInformantCommit() started. +◇ Test targetingT409CloseEnemyBeatsChosenCamera() started. +◇ Test playerPC003HalfMagnitude() started. +◇ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() started. +◇ Test takedownHitStopIsSeventyMilliseconds() started. +◇ Test malformedWaveMemberThrowsTypedErrorNamingThePath() started. +◇ Test daemonAnchorMatchesItsSpriteBox() started. +✔ Test atan2InvertsHeadingUnit(headingMilli:) with 7 test cases passed after 3.454 seconds. +◇ Test spawnRuleCoversEveryCause() started. +◇ Test failedRunNeverShowsNewBest() started. +◇ Test receiptRecordsTheRestoreApartFromDamage() started. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +◇ Test atMostThreeCaptionsShowAndSafetyComesFirst() started. +◇ Test ex016TrackedTheTickBeforeMobCClearsIt() started. +◇ Test gainFoldsMasterIntoEachBus() started. +◇ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() started. +◇ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() started. +✔ Suite HUDMappingTests passed after 27.569 seconds. +◇ Test validIndexWithDodgeIsRefused() started. +◇ Test bossCuesShareAlreadyDeliveredFiles() started. +◇ Test runtimeMountSolidsHaveNoArt() started. +◇ Test gateT908SettledD021StillNotComputableWithoutFullGates() started. +◇ Test clipCatalogFieldOffCannotWaitForDestroyClip() started. +◇ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() started. +◇ Test safetyRationaleLocksOnTheFinalTelegraphTick() started. +◇ Test rs020SurgicalNeedsHalfIntegrity() started. +◇ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() started. +◇ Test networkBlackoutCascadesInStableIdOrder() started. +◇ Test presentationAssetRegistryT801RejectsUnreachableAsset() started. +◇ Test vfxEmitterCeilingStealsLowestPriority() started. +✔ Test admittedSpritesUseAuthoredBoxes() passed after 1.801 seconds. +◇ Test playerPC001FullRightSixtyTicks() started. +◇ Test tamperedTicksAreRejected() started. +◇ Test coneAngleIsTheExactIntegerTest() started. +◇ Test t2ContactResetsTheClearRun() started. +◇ Test playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() started. +✔ Test labelFormat() passed after 0.833 seconds. +◇ Test case passing 2 arguments base → "player_move", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test terminalCopyMatchesTheEstablishedCaptions() passed after 2.359 seconds. +✔ Test spawnFairnessPrefersOffscreenOverVisibleDelivery() passed after 2.386 seconds. +✔ Test targetingT409CloseEnemyBeatsChosenCamera() passed after 2.359 seconds. +✔ Test playerPC003HalfMagnitude() passed after 2.359 seconds. +✔ Test damageFromAnotherSourceIsNotAnInformantCommit() passed after 2.359 seconds. +◇ Test terminalT704SealedDigestMatchesRunSucceededPayload() started. +✔ Test takedownHitStopIsSeventyMilliseconds() passed after 2.359 seconds. +✔ Test malformedWaveMemberThrowsTypedErrorNamingThePath() passed after 2.359 seconds. +✔ Test cameraCP007DifferentSeedsObserveMoreThanOneLayout() passed after 2.359 seconds. +◇ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() started. +✔ Test spawnRuleCoversEveryCause() passed after 2.359 seconds. +✔ Test failedRunNeverShowsNewBest() passed after 2.359 seconds. +✔ Test receiptRecordsTheRestoreApartFromDamage() passed after 2.359 seconds. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 2.359 seconds. +✔ Test atMostThreeCaptionsShowAndSafetyComesFirst() passed after 2.359 seconds. +✔ Test ex016TrackedTheTickBeforeMobCClearsIt() passed after 2.420 seconds. +✔ Test gainFoldsMasterIntoEachBus() passed after 2.420 seconds. +✔ Test environmentArtMatchesItsSolid() passed after 2.554 seconds. +✔ Test ambientScheduleIsSeededDeterministicAndOmitsDigestInputs() passed after 2.420 seconds. +✔ Test validIndexWithDodgeIsRefused() passed after 2.420 seconds. +✔ Test daemonAnchorMatchesItsSpriteBox() passed after 2.424 seconds. +✔ Test runtimeMountSolidsHaveNoArt() passed after 2.420 seconds. +✔ Test bossCuesShareAlreadyDeliveredFiles() passed after 2.420 seconds. +✔ Test clipCatalogFieldOffCannotWaitForDestroyClip() passed after 2.420 seconds. +✔ Test cameraCD009RestartRestoresOperationalAtFixedTransforms() passed after 2.420 seconds. +✔ Test safetyRationaleLocksOnTheFinalTelegraphTick() passed after 2.420 seconds. +✔ Test rs020SurgicalNeedsHalfIntegrity() passed after 2.421 seconds. +✔ Test aLineWaitsBehindTheEncounterLabelOrUpgradePromptWithoutLosingTime() passed after 2.421 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test networkBlackoutCascadesInStableIdOrder() passed after 2.421 seconds. +✔ Test presentationAssetRegistryT801RejectsUnreachableAsset() passed after 2.421 seconds. +✔ Test vfxEmitterCeilingStealsLowestPriority() passed after 2.421 seconds. +✔ Test playerPC001FullRightSixtyTicks() passed after 2.421 seconds. +✔ Test encounterEN014AppendedInformantAliveKeepsTheWaveOpen() passed after 2.423 seconds. +✔ Test coneAngleIsTheExactIntegerTest() passed after 2.421 seconds. +✔ Test t2ContactResetsTheClearRun() passed after 2.421 seconds. +◇ Test enemyEN010StandardDeathDropsNothing() started. +✔ Test clipT605CameraFieldOffStartsWithDestroyAndLocksHousing() passed after 2.145 seconds. +✔ Suite DailyRunSeedTests passed after 30.038 seconds. +◇ Test case passing 2 arguments base → "player_idle", expected → "player_hurt" to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Suite RunOutcomeTerminalTests passed after 30.097 seconds. +✔ Test terminalT704SealedDigestMatchesRunSucceededPayload() passed after 0.171 seconds. +◇ Test everyAuthoredFieldIsSensitiveToMirroring() started. +✔ Test completeRunT706SignalJammerDoesNotBlockForcedLockdown() passed after 0.183 seconds. +✔ Suite DaemonClipTests passed after 30.107 seconds. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.117 seconds. +✔ Suite RuntimeBundleTests passed after 30.108 seconds. +✔ Suite ProceduralVFXTests passed after 30.107 seconds. +◇ Test everyAdmittedFileExistsAndIsNamedLegally() started. +✔ Test enemyEN010StandardDeathDropsNothing() passed after 0.084 seconds. +◇ Test case passing 2 arguments base → "player_dodge", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test spawnFairnessMountSolidsRejectOverlappingVendor() started. +◇ Test targetingD082UnchosenCameraIsNeverATarget() started. +◇ Test playerPC005DodgeAtMostNinetySix() started. +◇ Test hurtCutsACommitAndDeathClearsIt() started. +✔ Suite TerminalPrecedenceTests passed after 30.509 seconds. +◇ Test nearMissIsInsideTheWideConeButNotSeen() started. +◇ Test quietRestoreFailsClosed() started. +◇ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() started. +✔ Test everyAuthoredFieldIsSensitiveToMirroring() passed after 0.402 seconds. +◇ Test encounterEN023EliteAndBossAreNeverUnaware() started. +◇ Test networkBlackoutJoinsTheCameraRow() started. +◇ Test receiptRestoreIsZeroWithoutTheBoss() started. +◇ Test upgradeUP001PendingFreezesClock() started. +◇ Test importantIsTheDefaultAndShowsSafetyOnly() started. +◇ Test theLatchIsInTheDigest() started. +◇ Test decodingClampsOutOfRangeStoredValues() started. +◇ Test groundTilesAreUniform() started. +◇ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() started. +◇ Test missingIndexIsRefusedWithoutConsumingATick() started. +◇ Test coverageCountsOnlyDeclaredIds() started. +◇ Test sharedSourcesShareOneDeliveredFile() started. +◇ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() started. +◇ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() started. +◇ Test narrowTailoringProjectsThreeLanes() started. +◇ Test blackoutNeedsNetworkBlackout() started. +◇ Test encounterLabelAppearsOnActivationNotBefore() started. +✔ Suite CombatCausalityTests passed after 30.511 seconds. +◇ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() started. +✔ Test everyAdmittedFileExistsAndIsNamedLegally() passed after 0.403 seconds. +◇ Test combatCB002EqualDistancePrefersLowerID() started. +◇ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test coneSightNeedsAClearLine() started. +◇ Test t3IsNotReachableFromTheOpeningPhase() started. +✔ Suite EnemyBehaviourTests passed after 30.699 seconds. +◇ Test clipCatalogRejectsAnchorDrift() started. +◇ Test case passing 2 arguments encounter → "M-A", total → 14 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +◇ Test case passing 2 arguments base → "player_extraction", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +✔ Test spawnFairnessMountSolidsRejectOverlappingVendor() passed after 1.342 seconds. +✔ Test targetingD082UnchosenCameraIsNeverATarget() passed after 1.342 seconds. +✔ Test playerPC005DodgeAtMostNinetySix() passed after 1.342 seconds. +✔ Test tamperedTicksAreRejected() passed after 4.278 seconds. +✔ Test nearMissIsInsideTheWideConeButNotSeen() passed after 1.339 seconds. +✔ Test reducedMotionIntroChangesNothingEither() passed after 11.178 seconds. +✔ Test quietRestoreFailsClosed() passed after 1.339 seconds. +✔ Suite ConeOrientationTests passed after 31.850 seconds. +◇ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() started. +✔ Test cameraCP008DestroyedThenSameSeedRestartRestoresOperational() passed after 1.341 seconds. +✔ Test hurtCutsACommitAndDeathClearsIt() passed after 1.345 seconds. +✔ Test receiptRestoreIsZeroWithoutTheBoss() passed after 1.341 seconds. +✔ Test encounterEN023EliteAndBossAreNeverUnaware() passed after 1.341 seconds. +✔ Test importantIsTheDefaultAndShowsSafetyOnly() passed after 1.341 seconds. +✔ Test theLatchIsInTheDigest() passed after 1.352 seconds. +✔ Test decodingClampsOutOfRangeStoredValues() passed after 1.352 seconds. +✔ Test networkBlackoutJoinsTheCameraRow() passed after 1.352 seconds. +✔ Test ambientReducedMotionPausesRareAndSimplifiesPersistent() passed after 1.352 seconds. +✔ Test missingIndexIsRefusedWithoutConsumingATick() passed after 1.352 seconds. +✔ Test coverageCountsOnlyDeclaredIds() passed after 1.352 seconds. +✔ Test sharedSourcesShareOneDeliveredFile() passed after 1.352 seconds. +✔ Test bothLoadersRejectUnsupportedTimingAndMalformedScalars() passed after 1.352 seconds. +✔ Test cameraT411DestroyedMountAndPoseStayFixedDuringRun() passed after 1.352 seconds. +✔ Test narrowTailoringProjectsThreeLanes() passed after 1.352 seconds. +✔ Test groundTilesAreUniform() passed after 1.352 seconds. +✔ Test blackoutNeedsNetworkBlackout() passed after 1.352 seconds. +✔ Test encounterLabelAppearsOnActivationNotBefore() passed after 1.351 seconds. +✔ Test combatCB002EqualDistancePrefersLowerID() passed after 1.351 seconds. +✔ Test networkBlackoutReducedIsAStaticBannerWithNoHitStop() passed after 1.351 seconds. +✔ Test coneSightNeedsAClearLine() passed after 1.351 seconds. +✔ Test profileT406AggregateReportIsStable() passed after 11.281 seconds. +✔ Test t3IsNotReachableFromTheOpeningPhase() passed after 1.351 seconds. +✔ Test clipCatalogRejectsAnchorDrift() passed after 1.143 seconds. +✔ Suite EnvironmentLibraryTests passed after 31.864 seconds. +◇ Test case passing 2 arguments base → "player_defeat", expected → nil to playerHurtRespectsCancelWindows(base:expected:) started. +◇ Test admittedAssetsReachTheBundleProjection() started. +✔ Test completeRunT706GhostStepDoesNotGrantDamageImmunity() passed after 0.034 seconds. +◇ Test spawnFairnessDocumentsPinnedSocketDefects() started. +◇ Test targetingT409InclusiveCloseRangeIsNinetySix() started. +◇ Test playerPC007RejectedDodgeDuringCooldown() started. +◇ Test outOfOrderCommandsAreRejected() started. +◇ Test nearMissEdgePulsesExceptUnderReducedMotion() started. +◇ Test patrolBlockFailsClosed() started. +◇ Test pilotedSuccessDigestAndReceiptAreUnchanged() started. +◇ Test cameraCP009PlacementDoesNotPerturbCombatRng() started. +◇ Test resetClearsCommits() started. +◇ Test bossSpawnsWithTenDpsContact() started. +◇ Test encounterEN019SightAlertsAndActsNextTick() started. +◇ Test aCaptionShowsForTwoAndAHalfSeconds() started. +◇ Test rs024GhostIsExactlyTheLatch() started. +◇ Test settingsRoundTripThroughCoding() started. +◇ Test peakDetectionIsTheHighestReached() started. +◇ Test ambientRareDoesNotBeginDuringCaptainTelegraph() started. +◇ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test musicIsNotAnEffectCue() started. +◇ Test deliveryPreservesEveryValidatedClip() started. +◇ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() started. +◇ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() started. +◇ Test theEliteIsFullyBacked() started. +◇ Test swiftIsUnderFiveThirty() started. +✔ Test playerHurtRespectsCancelWindows(base:expected:) with 5 test cases passed after 4.348 seconds. +◇ Test spawnShowsOneLineAndNoEncounterLabel() started. +◇ Test cameraCD001ThreeImpactsDestroyOnce() started. +◇ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() started. +◇ Test surveillanceAndDamageAlertPatrolMembers() started. +◇ Test profileT406GateC011SimulationBounds() started. +◇ Test t3CompletesOnFirstImpact() started. +◇ Test clipCatalogRejectsUnevenDirectionFrames() started. +◇ Test case passing 1 argument upgrade → .signalJammer to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test spawnFairnessDocumentsPinnedSocketDefects() passed after 1.307 seconds. +✔ Test targetingT409InclusiveCloseRangeIsNinetySix() passed after 1.307 seconds. +✔ Test playerPC007RejectedDodgeDuringCooldown() passed after 1.307 seconds. +✔ Test outOfOrderCommandsAreRejected() passed after 1.307 seconds. +✔ Test nearMissEdgePulsesExceptUnderReducedMotion() passed after 1.307 seconds. +✔ Test patrolBlockFailsClosed() passed after 1.307 seconds. +✔ Test upgradeUP001PendingFreezesClock() passed after 2.715 seconds. +✔ Test cameraCP009PlacementDoesNotPerturbCombatRng() passed after 1.307 seconds. +✔ Test resetClearsCommits() passed after 1.307 seconds. +✔ Test bossSpawnsWithTenDpsContact() passed after 1.307 seconds. +✔ Test encounterEN019SightAlertsAndActsNextTick() passed after 1.307 seconds. +✔ Test aCaptionShowsForTwoAndAHalfSeconds() passed after 1.307 seconds. +✔ Test rs024GhostIsExactlyTheLatch() passed after 1.319 seconds. +✔ Test settingsRoundTripThroughCoding() passed after 1.319 seconds. +✔ Test peakDetectionIsTheHighestReached() passed after 1.319 seconds. +✔ Test ambientRareDoesNotBeginDuringCaptainTelegraph() passed after 1.319 seconds. +✔ Test musicIsNotAnEffectCue() passed after 1.319 seconds. +✔ Test deliveryPreservesEveryValidatedClip() passed after 1.319 seconds. +✔ Test admittedAssetsReachTheBundleProjection() passed after 1.354 seconds. +✔ Test independentReviewProjectsFiveLanesLeavingTheSafeGap() passed after 1.319 seconds. +✔ Test cameraCD012EighthDestructionCompletesNetworkBlackoutOnce() passed after 1.319 seconds. +✔ Test swiftIsUnderFiveThirty() passed after 1.319 seconds. +✔ Test spawnShowsOneLineAndNoEncounterLabel() passed after 1.319 seconds. +✔ Test cameraCD001ThreeImpactsDestroyOnce() passed after 1.319 seconds. +✔ Test bossPhaseBreakSlamsThePhaseNameButNotOnActivation() passed after 1.319 seconds. +✔ Test surveillanceAndDamageAlertPatrolMembers() passed after 1.319 seconds. +✔ Test theEliteIsFullyBacked() passed after 1.319 seconds. +✔ Test t3CompletesOnFirstImpact() passed after 1.309 seconds. +✔ Test clipCatalogRejectsUnevenDirectionFrames() passed after 1.048 seconds. +◇ Test case passing 1 argument upgrade → .ricochetPulse to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +◇ Test completeRunT706RicochetCannotDoubleHitSameTarget() started. +✔ Suite StealthTextureTests passed after 33.256 seconds. +✔ Suite CameraPlacementTests passed after 33.257 seconds. +✔ Suite AudioDeliveryTests passed after 33.257 seconds. +◇ Test damageToANonEnemyIsIgnored() started. +◇ Test case passing 1 argument upgrade → .ghostStep to acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) started. +✔ Test completeRunT706RicochetCannotDoubleHitSameTarget() passed after 0.023 seconds. +◇ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() started. +◇ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() started. +◇ Test cameraCD002TwoImpactsRemainCritical() started. +◇ Test recordRoundTripsThroughJSON() started. +◇ Test playerBlockFailsClosed() started. +◇ Test upgradeUP002SelectsSignalJammer() started. +◇ Test projectionNamesOnlyTheCorrelatorCommit() started. +◇ Test everyPaletteOnlyTintsOrDarkens() started. +◇ Test sightRangeIsInclusive() started. +◇ Test aRepeatedCaptionRestartsRatherThanStacks() started. +◇ Test theForcedLockdownEventsAtMobCDoNotCostGhost() started. +◇ Test handednessReflectsOnlyTheTwoControls() started. +◇ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() started. +◇ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() started. +✔ Test acceptedChoiceAppliesAndConsumesExactlyOneTick(upgrade:) with 3 test cases passed after 1.425 seconds. +◇ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() started. +◇ Test clipCoverageIsPartialAndMeasurable() started. +◇ Test temporaryOrderTelegraphsThePendingEmitter() started. +◇ Test cameraCD014ExtractAtSevenRemainsIncomplete() started. +◇ Test rs021AFailedRunEarnsNothing() started. +✔ Test damageToANonEnemyIsIgnored() passed after 0.088 seconds. +◇ Test patrolTutorialCopyIsTheSpecLine() started. +◇ Test cameraCD001FixtureMatchesTheKernel() started. +◇ Test heatReinforcementsIsInertWithoutReinforcements() started. +◇ Test alertedMemberPursuesAndLosesItsCone() started. +◇ Test everyStandardEnemyAttackClipIsFullyBacked() started. +◇ Test t3CompletesAfterThreeHundredEligibleTicks() started. +◇ Test clipCatalogRejectsUnknownCancelWindow() started. +✔ Suite CompleteRunVectorTests passed after 35.727 seconds. +✔ Test spawnFairnessEscapeAperturesRemainOpenAtPeakDensity() passed after 3.727 seconds. +✔ Test targetingT409DestroyedAndBlockedCamerasAreSkipped() passed after 3.726 seconds. +✔ Test cameraCD002TwoImpactsRemainCritical() passed after 3.726 seconds. +✔ Test recordRoundTripsThroughJSON() passed after 3.726 seconds. +✔ Test playerBlockFailsClosed() passed after 3.727 seconds. +✔ Test upgradeUP002SelectsSignalJammer() passed after 3.727 seconds. +✔ Test projectionNamesOnlyTheCorrelatorCommit() passed after 3.727 seconds. +✔ Test everyPaletteOnlyTintsOrDarkens() passed after 3.727 seconds. +✔ Test sightRangeIsInclusive() passed after 3.727 seconds. +✔ Test aRepeatedCaptionRestartsRatherThanStacks() passed after 3.727 seconds. +✔ Test theForcedLockdownEventsAtMobCDoNotCostGhost() passed after 3.753 seconds. +✔ Test handednessReflectsOnlyTheTwoControls() passed after 3.753 seconds. +✔ Test ambientBudgetsDropP1P2AndPigeonsNeedCombat() passed after 3.753 seconds. +✔ Suite ProtectedUpgradeSelectionTests passed after 37.097 seconds. +✔ Test deliveryAndReactionSelectAuthoredFacingWhenFramesInterleave() passed after 3.753 seconds. +✔ Test clipCoverageIsPartialAndMeasurable() passed after 3.753 seconds. +✔ Test temporaryOrderTelegraphsThePendingEmitter() passed after 3.753 seconds. +✔ Test cameraCD014ExtractAtSevenRemainsIncomplete() passed after 3.753 seconds. +✔ Test rs021AFailedRunEarnsNothing() passed after 3.753 seconds. +✔ Test patrolTutorialCopyIsTheSpecLine() passed after 3.753 seconds. +✔ Test cameraCD001FixtureMatchesTheKernel() passed after 3.753 seconds. +✔ Test heatReinforcementsIsInertWithoutReinforcements() passed after 3.753 seconds. +✔ Test evidenceT907DeviceEvidenceCanAdvanceGateC() passed after 11.328 seconds. +✔ Test alertedMemberPursuesAndLosesItsCone() passed after 3.753 seconds. +✔ Test t3CompletesAfterThreeHundredEligibleTicks() passed after 1.575 seconds. +✔ Test clipCatalogRejectsUnknownCancelWindow() passed after 1.513 seconds. +◇ Test case passing 2 arguments encounter → "M-B", total → 17 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Suite SpawnFairnessTests passed after 37.218 seconds. +✔ Suite CommitClipTests passed after 37.218 seconds. +✔ Suite QuietApproachTests passed after 37.219 seconds. +✔ Test rs016ShareTextHasTheRowsAndNoSeedOrIdentifier() passed after 3.874 seconds. +✔ Suite AmbientMotionTests passed after 37.219 seconds. +✔ Suite ClipMetadataTests passed after 37.219 seconds. +◇ Test aTrackerWithNoMarkerClipsReactsToNothing() started. +✔ Suite OpeningTests passed after 37.219 seconds. +◇ Test targetingD082ThirtyDegreeBoundary() started. +◇ Test hudUI001ReferenceAnchors() started. +◇ Test lockstepMatchesALiveReplay() started. +◇ Test bossPhaseBandsFailClosed() started. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +◇ Test palettesMatchTheirNamedLight() started. +◇ Test encounterEN020SolidBlocksSight() started. +◇ Test captionsArriveWithEffectsOff() started. +◇ Test pinningShowsTheCameraCounterEarly() started. +✔ Suite RunCardTests passed after 37.220 seconds. +◇ Test noAdmittedAssetShipsFromArtSources() started. +◇ Test noTelegraphProjectsWhileTheBossIsRecovering() started. +◇ Test cameraT414BlackoutWithoutCombatDoesNotArm() started. +◇ Test aSuccessWithNoMedalsShowsNoRow() started. +✔ Test aTrackerWithNoMarkerClipsReactsToNothing() passed after 0.001 seconds. +◇ Test arenaAR008ExtractionLeaveResets() started. +◇ Test poolRecyclesPastPoolSize() started. +◇ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() started. +◇ Test patrolEN032UnawareMemberBeyond240IsNotATarget() started. +◇ Test t4RunsFromMobACompletionToAcceptedChoice() started. +◇ Test clipCatalogRejectsTerminalCancelWindows() started. +✔ Test targetingD082ThirtyDegreeBoundary() passed after 1.382 seconds. +✔ Test hudUI001ReferenceAnchors() passed after 1.382 seconds. +✔ Test everyStandardEnemyAttackClipIsFullyBacked() passed after 5.257 seconds. +✔ Test bossPhaseBandsFailClosed() passed after 1.382 seconds. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 1.382 seconds. +✔ Test palettesMatchTheirNamedLight() passed after 1.382 seconds. +✔ Test encounterEN020SolidBlocksSight() passed after 1.382 seconds. +✔ Test captionsArriveWithEffectsOff() passed after 1.382 seconds. +✔ Test pinningShowsTheCameraCounterEarly() passed after 1.413 seconds. +✔ Test noAdmittedAssetShipsFromArtSources() passed after 1.413 seconds. +✔ Test noTelegraphProjectsWhileTheBossIsRecovering() passed after 1.413 seconds. +✔ Test cameraT414BlackoutWithoutCombatDoesNotArm() passed after 1.413 seconds. +✔ Test aSuccessWithNoMedalsShowsNoRow() passed after 1.413 seconds. +✔ Test arenaAR008ExtractionLeaveResets() passed after 1.413 seconds. +✔ Test poolRecyclesPastPoolSize() passed after 1.413 seconds. +✔ Test profileT406GateC011SimulationBounds() passed after 6.715 seconds. +✔ Test patrolEN032UnawareMemberBeyond240IsNotATarget() passed after 1.413 seconds. +✔ Test t4RunsFromMobACompletionToAcceptedChoice() passed after 1.221 seconds. +✔ Test clipCatalogRejectsTerminalCancelWindows() passed after 1.122 seconds. +✔ Suite CombatContentFailClosedTests passed after 38.636 seconds. +✔ Suite PresentationSettingsTests passed after 38.636 seconds. +✔ Suite LegacyAdmissionTests passed after 38.636 seconds. +◇ Test resetClearsEveryReaction() started. +✔ Suite PeakDensityProfilerTests passed after 38.634 seconds. +✔ Suite TutorialStateMachineTests passed after 38.635 seconds. +✔ Suite ClipAlignmentTests passed after 38.634 seconds. +◇ Test targetingD082IntegerTestIsOverflowSafe() started. +◇ Test hudUI002HandednessMirrorsOnlyStickAndDodge() started. +◇ Test everyClipFrameIsAdmittedOrPlanned() started. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +◇ Test reducedFlashLowersSaturationTo60Percent() started. +◇ Test encounterEN021TrackedAlertsEveryUnawareEnemy() started. +◇ Test savedSettingsWithoutCaptionsStillDecode() started. +◇ Test projectileReachUsesTheAuthoritativeTickRate() started. +◇ Test cameraT414LockdownDoesNotBlockExtraction() started. +◇ Test rs022AReplayEarnsTheSameMedals() started. +✔ Test resetClearsEveryReaction() passed after 0.069 seconds. +◇ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() started. +◇ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() started. +◇ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() started. +✔ Test targetingD082IntegerTestIsOverflowSafe() passed after 2.953 seconds. +✔ Test hudUI002HandednessMirrorsOnlyStickAndDodge() passed after 2.953 seconds. +✔ Test everyClipFrameIsAdmittedOrPlanned() passed after 2.943 seconds. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 2.943 seconds. +✔ Test reducedFlashLowersSaturationTo60Percent() passed after 2.943 seconds. +✔ Test encounterEN021TrackedAlertsEveryUnawareEnemy() passed after 2.943 seconds. +✔ Test savedSettingsWithoutCaptionsStillDecode() passed after 2.943 seconds. +✔ Test projectileReachUsesTheAuthoritativeTickRate() passed after 2.943 seconds. +✔ Test cameraT414LockdownDoesNotBlockExtraction() passed after 2.943 seconds. +✔ Suite ReactionClipTrackerTests passed after 41.649 seconds. +✔ Test cameraT414PredicateOmitsCameraBlackoutExposureAndUpgrade() passed after 2.944 seconds. +✔ Test poolHoldsTheEmitterCeilingAcrossTicksAndKeepsBigMoments() passed after 2.944 seconds. +✔ Test patrolEN033UnawareMemberWithin240IsTargetedAndAmbushed() passed after 2.944 seconds. +◇ Test case passing 2 arguments encounter → "M-C", total → 25 to encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) started. +✔ Test lockstepMatchesALiveReplay() passed after 5.234 seconds. +✔ Suite KernelVectorTests passed after 42.454 seconds. +◇ Test cameraCD015CD016ThroughTheSimulation(movingToward:) started. +◇ Test hudUI006ExtractionSecondsCeil() started. +◇ Test everyFullyAdmittedDirectionIsBacked() started. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +◇ Test crossfadeTakesOneSecond() started. +◇ Test encounterEN022DamageAlertsAnAllyOneHop() started. +◇ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() started. +◇ Test minesProjectWithTheirArmingState() started. +◇ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() started. +◇ Test poolExpiresEffectsAfterTheirLifetime() started. +◇ Test patrolEN035MovingPastHoldsFire() started. +◇ Test case passing 1 argument movingToward → false to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test hudUI006ExtractionSecondsCeil() passed after 0.866 seconds. +✔ Test gateT908SettledD021StillNotComputableWithoutFullGates() passed after 15.753 seconds. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 0.866 seconds. +✔ Test crossfadeTakesOneSecond() passed after 0.866 seconds. +✔ Test encounterEN022DamageAlertsAnAllyOneHop() passed after 0.866 seconds. +✔ Test fogThinsToHalfOverHalfASecondWhileAnAwareEnemyIsOnScreen() passed after 0.866 seconds. +✔ Test minesProjectWithTheirArmingState() passed after 0.866 seconds. +✔ Test cameraCD005SimultaneousFinalImpactsDestroyOnce() passed after 0.866 seconds. +◇ Test aGhostOneTickEarlyFailsTheLockstepCheck() started. +✔ Test poolExpiresEffectsAfterTheirLifetime() passed after 0.866 seconds. +✔ Test patrolEN035MovingPastHoldsFire() passed after 0.866 seconds. +◇ Test case passing 1 argument movingToward → true to cameraCD015CD016ThroughTheSimulation(movingToward:) started. +✔ Test cameraCD015CD016ThroughTheSimulation(movingToward:) with 2 test cases passed after 0.985 seconds. +✔ Suite ExpansionGateReportTests passed after 43.441 seconds. +✔ Suite CombatVisibilityTests passed after 43.441 seconds. +✔ Test everyFullyAdmittedDirectionIsBacked() passed after 0.985 seconds. +◇ Test cameraT413CounterHiddenUntilDamageThenAccolade() started. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +◇ Test trackerFadesInOnActivationAndBetweenPhases() started. +◇ Test allyAlertsNeverChain() started. +◇ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() started. +◇ Test cameraCD006RicochetDestroysTwoCamerasSameTick() started. +◇ Test hitStopFramesStayInsideTheCaps() started. +◇ Test patrolMembersSpawnAtDoubleIntegrity() started. +◇ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() started. +✔ Test cameraT413CounterHiddenUntilDamageThenAccolade() passed after 0.043 seconds. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 0.043 seconds. +✔ Test trackerFadesInOnActivationAndBetweenPhases() passed after 0.043 seconds. +✔ Test allyAlertsNeverChain() passed after 0.043 seconds. +✔ Test unawareOrOffscreenEnemiesLeaveTheFogAlone() passed after 0.043 seconds. +✔ Test cameraCD006RicochetDestroysTwoCamerasSameTick() passed after 0.043 seconds. +◇ Test oneMissingFrameLeavesADirectionUnbacked() started. +✔ Test hitStopFramesStayInsideTheCaps() passed after 0.043 seconds. +✔ Test patrolMembersSpawnAtDoubleIntegrity() passed after 0.043 seconds. +✔ Test cameraCD019DiagonalSocketIsTargetedAndDestroyed() passed after 0.666 seconds. +✔ Test oneMissingFrameLeavesADirectionUnbacked() passed after 0.666 seconds. +◇ Test bossPhaseBO002HealthBands() started. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +◇ Test trackerChangeMidFadeNeverJumps() started. +◇ Test surveillanceTakesPrecedenceOverDamageAndSight() started. +◇ Test fogHoldsStillWhenTheTickDoesNot() started. +◇ Test cameraRicochetDoesNotRehitSurvivingSource() started. +◇ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() started. +◇ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() started. +◇ Test cameraCD020AnotherCamerasMountBlocks() started. +✔ Test bossPhaseBO002HealthBands() passed after 0.029 seconds. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 0.029 seconds. +✔ Test trackerChangeMidFadeNeverJumps() passed after 0.029 seconds. +✔ Test surveillanceTakesPrecedenceOverDamageAndSight() passed after 0.029 seconds. +✔ Test fogHoldsStillWhenTheTickDoesNot() passed after 0.029 seconds. +✔ Test cameraRicochetDoesNotRehitSurvivingSource() passed after 0.029 seconds. +◇ Test aDirectionNeverBorrowsFromAnother() started. +✔ Test shakeIsBoundedCoalescedAndOffUnderReducedMotion() passed after 0.029 seconds. +✔ Test patrolTargetingLimitIsInclusiveAndUnawareOnly() passed after 0.029 seconds. +✔ Test cameraCD020AnotherCamerasMountBlocks() passed after 0.360 seconds. +✔ Suite CameraDestructionOrderTests passed after 44.541 seconds. +✔ Test aDirectionNeverBorrowsFromAnother() passed after 0.360 seconds. +✔ Suite TargetingPriorityTests passed after 44.542 seconds. +◇ Test bossPhaseBO002RuntimeUsesContentBands() started. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +◇ Test trackerUsesReducedPalettes() started. +◇ Test damageTakesPrecedenceOverSight() started. +◇ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() started. +◇ Test blackoutMusicDropDucksHoldsAndRestores() started. +◇ Test playerIntegrityComesFromContent() started. +✔ Test bossPhaseBO002RuntimeUsesContentBands() passed after 0.068 seconds. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.068 seconds. +✔ Test trackerUsesReducedPalettes() passed after 0.068 seconds. +✔ Test damageTakesPrecedenceOverSight() passed after 0.068 seconds. +✔ Test lockdownTintPulsesSixToTenPercentEveryTwoSeconds() passed after 0.068 seconds. +◇ Test coverageIsWhatTheRecordSays() started. +✔ Test blackoutMusicDropDucksHoldsAndRestores() passed after 0.068 seconds. +✔ Test playerIntegrityComesFromContent() passed after 0.068 seconds. +✔ Test coverageIsWhatTheRecordSays() passed after 0.411 seconds. +◇ Test bossBO003BatchSkipsToTemporarySafeguard() started. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +◇ Test ringClosesOverTheTelegraphDuration() started. +◇ Test unawareEnemyDealsNoContactDamage() started. +◇ Test reducedFlashAndReducedMotionHoldASteadySixPercent() started. +✔ Suite OriginalArtTests passed after 45.022 seconds. +◇ Test playedBlackoutProjectsKillThenCascadeInIdOrder() started. +◇ Test patrolEN029DeathCountsInTheReceiptOnly() started. +✔ Test bossBO003BatchSkipsToTemporarySafeguard() passed after 0.510 seconds. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.510 seconds. +✔ Test ringClosesOverTheTelegraphDuration() passed after 0.510 seconds. +✔ Test unawareEnemyDealsNoContactDamage() passed after 0.510 seconds. +✔ Test reducedFlashAndReducedMotionHoldASteadySixPercent() passed after 0.510 seconds. +✔ Test playedBlackoutProjectsKillThenCascadeInIdOrder() passed after 0.510 seconds. +✔ Test patrolEN029DeathCountsInTheReceiptOnly() passed after 0.510 seconds. +◇ Test observationPulsePublicSafetyRoundsHalfAway() started. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +◇ Test ringPulsesOnlyWithoutReducedMotion() started. +◇ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() started. +◇ Test lockdownTintNeverBrightens() started. +◇ Test hitStopNeverChangesTheDigestOrReceipt() started. +◇ Test patrolIsOutsideHeat() started. +✔ Test observationPulsePublicSafetyRoundsHalfAway() passed after 1.706 seconds. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 1.706 seconds. +✔ Test ringPulsesOnlyWithoutReducedMotion() passed after 1.706 seconds. +✔ Test combatCB011AmbushKillsAThirtyIntegrityEnemy() passed after 1.706 seconds. +✔ Test lockdownTintNeverBrightens() passed after 1.706 seconds. +✔ Test encounterEN001HiddenRunSpawnsTheAuthoredTotals(encounter:total:) with 3 test cases passed after 16.726 seconds. +✔ Test patrolIsOutsideHeat() passed after 1.706 seconds. +◇ Test projectilePoolRejectsBeyondCeiling() started. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +◇ Test ringsAreDrawnOnlyForTheBossTelegraphs() started. +◇ Test combatCB012OnlyTheFirstHitIsAnAmbush() started. +◇ Test gateArtFillsTheCollisionBoxExactly() started. +◇ Test heatBlockDecodesFromTheBundledContract() started. +◇ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() started. +✔ Test projectilePoolRejectsBeyondCeiling() passed after 0.712 seconds. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.712 seconds. +✔ Test ringsAreDrawnOnlyForTheBossTelegraphs() passed after 0.712 seconds. +✔ Test combatCB012OnlyTheFirstHitIsAnAmbush() passed after 0.712 seconds. +✔ Test gateArtFillsTheCollisionBoxExactly() passed after 0.712 seconds. +✔ Test heatBlockDecodesFromTheBundledContract() passed after 0.712 seconds. +✔ Test aGhostOneTickEarlyFailsTheLockstepCheck() passed after 4.628 seconds. +✔ Suite CourtClimaxTests passed after 47.952 seconds. +◇ Test tutorialT0CompletesAfterNinetySixUnits() started. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +◇ Test awareAndStruckEnemiesTakeNormalDamage() started. +◇ Test snapshotNamesEveryGate() started. +◇ Test heatBlockFailsClosed() started. +◇ Test ghostStopsAtItsTerminalTick() started. +✔ Test tutorialT0CompletesAfterNinetySixUnits() passed after 3.109 seconds. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 3.109 seconds. +✔ Test awareAndStruckEnemiesTakeNormalDamage() passed after 3.109 seconds. +✔ Test snapshotNamesEveryGate() passed after 3.109 seconds. +✔ Test heatBlockFailsClosed() passed after 3.109 seconds. +✔ Test ghostStopsAtItsTerminalTick() passed after 3.109 seconds. +◇ Test tutorialLockdownPreemptsCopy() started. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +◇ Test awarenessIsDigested() started. +◇ Test actorContrastValues() started. +◇ Test captionNamesTheCountAndTheStateTheDirectorRead() started. +◇ Test ghostFadesAfterItsTerminalTick() started. +✔ Test tutorialLockdownPreemptsCopy() passed after 0.327 seconds. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.323 seconds. +✔ Test awarenessIsDigested() passed after 0.323 seconds. +✔ Test actorContrastValues() passed after 0.322 seconds. +✔ Test captionNamesTheCountAndTheStateTheDirectorRead() passed after 0.322 seconds. +✔ Test evidenceT907SettlesD021WhenDeviceProfilingProvided() passed after 14.168 seconds. +✔ Suite GrayscaleSystemsTests passed after 51.391 seconds. +✔ Suite ReadabilityFinishTests passed after 51.391 seconds. +◇ Test encounterEN001WaveTotals() started. +◇ Test awarenessBlockDecodesFromTheBundledContract() started. +◇ Test vfxReinforcementCountMatchesTheCaption() started. +◇ Test evidenceT907PlaytestEvidenceEvaluatesGates() started. +✔ Test encounterEN001WaveTotals() passed after 0.004 seconds. +✔ Test awarenessBlockDecodesFromTheBundledContract() passed after 0.004 seconds. +✔ Test vfxReinforcementCountMatchesTheCaption() passed after 0.004 seconds. +✔ Test evidenceT907PlaytestEvidenceEvaluatesGates() passed after 0.004 seconds. +✔ Suite ReleaseCandidateEvidenceTests passed after 51.397 seconds. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +◇ Test awarenessBlockFailsClosed() started. +◇ Test captionUsesTheStateBeforeThisTicksChange() started. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 0.041 seconds. +✔ Test awarenessBlockFailsClosed() passed after 0.041 seconds. +✔ Test captionUsesTheStateBeforeThisTicksChange() passed after 0.041 seconds. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +◇ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() started. +◇ Test captionIsAbsentForHiddenObservedAndMobC() started. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.016 seconds. +✔ Test snapshotFlagsUnawareEnemiesWithTheirIdleClip() passed after 0.016 seconds. +✔ Test captionIsAbsentForHiddenObservedAndMobC() passed after 0.016 seconds. +✔ Suite HeatReinforcementTests passed after 51.454 seconds. +◇ Test bossBO005AndBO006ObservationRounding() started. +◇ Test enemyAlertedProjectsTheExclamationRecipe() started. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.001 seconds. +✔ Test enemyAlertedProjectsTheExclamationRecipe() passed after 0.001 seconds. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +◇ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() started. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.877 seconds. +✔ Test hintShowsOnceWhenTheFirstUnawareEnemyIsOnScreen() passed after 0.877 seconds. +✔ Suite AwarenessTests passed after 52.333 seconds. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.002 seconds. +✔ Suite ContractVectorTests passed after 52.337 seconds. +✔ Test ghostFadesAfterItsTerminalTick() passed after 3.158 seconds. +◇ Test rs014GhostLeavesTheLiveRunUntouched() started. +✔ Test rs014GhostLeavesTheLiveRunUntouched() passed after 7.925 seconds. +◇ Test onlyAFasterSuccessReplacesTheBest() started. +✔ Test onlyAFasterSuccessReplacesTheBest() passed after 1.828 seconds. +✔ Suite GhostRunTests passed after 63.980 seconds. +✔ Test gateC009TenConsecutiveCompleteRunsPass() passed after 44.351 seconds. +◇ Test gateB003RestartRestoresInitialAuthoritativeState() started. +✔ Test gateB003RestartRestoresInitialAuthoritativeState() passed after 0.013 seconds. +◇ Test gateF017ReceiptCanonicalRoundTrip() started. +✔ Test gateF017ReceiptCanonicalRoundTrip() passed after 1.245 seconds. +✔ Suite GateVerificationTests passed after 71.379 seconds. +✔ Test aPilotedRunProducesTheBoundariesInOrder() passed after 56.920 seconds. +✔ Suite PacingSegmentsTests passed after 81.435 seconds. +✔ Test cameraCP010EveryLegalSetFairness() passed after 133.225 seconds. +✔ Suite CameraFairnessTests passed after 133.229 seconds. +D088-HITSTOP ticks=12942 frames=14020 frozen=1078 freezes=358 stretch=1.0832946994282182 +✔ Test hitStopNeverChangesTheDigestOrReceipt() passed after 157.582 seconds. +◇ Test hitStopNeverChangesTheDigestThroughABlackout() started. +✔ Test hitStopNeverChangesTheDigestThroughABlackout() passed after 6.605 seconds. +✔ Suite GameFeelTests passed after 209.720 seconds. +T901-PILOTED-RUN seed=1 upgrade=ricochetPulse ticks=12942 outcome=failure digest=1fbe149b1a768643bee500f2c4f8acfa3cadf2088762efd57a5e4e8721c4dbfe +✔ Test replayT901PilotedRunReproducesDigestThreeTimes() passed after 242.852 seconds. +◇ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() started. +FEELPASS-PROOF seed=5 ticks=16691 digest=6869bf46dfe921aa181a9d5055bf1b9bdf49d9b5705824f4807888800fd70bec medals=["SURGICAL", "SWIFT"] takedowns=7 maxStreak=5 +✔ Test pilotedSuccessDigestAndReceiptAreUnchanged() passed after 244.805 seconds. +✔ Suite FeelPassPresentationOnlyTests passed after 276.724 seconds. +✔ Test replayT901PilotedRunRoundTripsThroughEnvelopeJSON() passed after 43.233 seconds. +➜ Test pacingT305ProbeMatrix() skipped. +➜ Test heatD083StyleSweep() skipped. +✔ Suite PacingProbeTests passed after 286.088 seconds. +✔ Test patrolEN030FairnessHoldsAtEveryTickOfTheCycle() passed after 263.003 seconds. +➜ Test patrolEN030FullCap() skipped. +◇ Test fairnessProofRejectsTheFirstCutWaypoints() started. +✔ Test rs022AReplayEarnsTheSameMedals() passed after 288.050 seconds. +◇ Test rs023ASecondGhostTodayIsNotNew() started. +✔ Test rs023ASecondGhostTodayIsNotNew() passed after 0.001 seconds. +◇ Test aNewDayOrAnotherIdentityStartsEmpty() started. +✔ Test aNewDayOrAnotherIdentityStartsEmpty() passed after 0.001 seconds. +◇ Test recordRoundTripsThroughJSON() started. +✔ Test recordRoundTripsThroughJSON() passed after 0.001 seconds. +◇ Test titleGoalsShowAllFiveByShape() started. +✔ Test titleGoalsShowAllFiveByShape() passed after 0.001 seconds. +◇ Test shareAppendsMedalNamesWithoutNewMarks() started. +✔ Test shareAppendsMedalNamesWithoutNewMarks() passed after 0.001 seconds. +✔ Suite MedalTests passed after 326.757 seconds. +✔ Test fairnessProofRejectsTheFirstCutWaypoints() passed after 95.475 seconds. +◇ Test patrolsBlockFailsClosed() started. +✔ Test patrolsBlockFailsClosed() passed after 0.013 seconds. +◇ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() started. +✔ Test encounterEN031UnawareEnemyDriftsToItsTriggerAndStops() passed after 1.968 seconds. +◇ Test driftNeedsAnEncounterTrigger() started. +✔ Test driftNeedsAnEncounterTrigger() passed after 0.089 seconds. +◇ Test damageRemainderIsExactOverManyHits() started. +✔ Test damageRemainderIsExactOverManyHits() passed after 0.015 seconds. +◇ Test damageTakenAppliesToEveryLossInTheSimulation() started. +✔ Test damageTakenAppliesToEveryLossInTheSimulation() passed after 0.092 seconds. +◇ Test damageRemainderIsDigested() started. +✔ Test damageRemainderIsDigested() passed after 0.008 seconds. +◇ Test patrolStateIsDigested() started. +✔ Test patrolStateIsDigested() passed after 0.003 seconds. +✔ Suite TransitPatrolTests passed after 407.911 seconds. +✔ Test run with 773 tests in 109 suites passed after 407.912 seconds. diff --git a/docs/review/projected-motion/parity.log b/docs/review/projected-motion/parity.log new file mode 100644 index 00000000..93e99970 --- /dev/null +++ b/docs/review/projected-motion/parity.log @@ -0,0 +1,2 @@ +parity: pin is 492d921027c11d809ff18e3a35f520118e13de84 +parity: OK — every bundled contract and fixture byte-matches SS-specs@492d921027c11d809ff18e3a35f520118e13de84 diff --git a/docs/review/projected-motion/review.md b/docs/review/projected-motion/review.md new file mode 100644 index 00000000..ad71b5b8 --- /dev/null +++ b/docs/review/projected-motion/review.md @@ -0,0 +1,11 @@ +# BP-002 / BP-008 elevated-motion reconciliation + +Adopts SS-specs 492d921027c11d809ff18e3a35f520118e13de84. Four runtime pins move together. No active clip, production art, gameplay identity or fixture changes. + +The source scaffold at 435b984 preserves its 2D rigid segment lengths. This proves transform consistency only, not anatomical length, depth correctness or world foot contact. The updated specification distinguishes those quantities and requires reviewed elevated keys and authored contact landmarks. Existing source rig records already label their pivots approximate and their limits explicitly; they remain review artifacts, not production delivery. + +Next source work: separate boot/cloth controls; author the contact model and missing surfaces; compare depth-treated south keys before in-betweening. Do not claim a visible sole point is an unseen heel, or constant projected length is an anatomical constraint. Retain BP-008 actual movement, cadence, analog, interruption and world-slip comparisons. No new source technology or skeletal runtime is selected by the spec adoption. + +Specification and timing validators passed before adoption. Runtime parity and core results follow in this directory. Device and complete benchmark gates remain open. + +Verified: exact-pin parity passed. Core regression passed all 773 tests in 109 suites in 407.912 seconds. Source-control preparation preserves the neutral exactly but leaves the new boot/cloth seams and contact model unfinished; its archive is under source-controls/. No simulator/device result is implied by this core run. diff --git a/docs/review/projected-motion/source-controls/README.md b/docs/review/projected-motion/source-controls/README.md new file mode 100644 index 00000000..2aeeb2f4 --- /dev/null +++ b/docs/review/projected-motion/source-controls/README.md @@ -0,0 +1,11 @@ +# Foot and cloth control preparation — BP-002 / BP-008 + +Twenty-two editable PNG layers and twelve source controls retain the original neutral exactly. Boot/toe regions are split from the shin/boot layers at source row 309; coat tails are split below row 205 from the torso/coat layer. The original art was neither repainted nor mirrored. Isolated source parts were visually inspected. Extraction polygons and approximate pivots are saved in extraction.json. + +These are source cuts, not anatomical definitions. The ankle pivots and visible sole edges do not identify hidden heels or establish contact. New cut edges have no authored overlap yet. Coat roots require deformation/attachment review before motion. Do not use this source as a completed gait or claim world-space contact from it. + +The independent renderer reads rig.json and source PNGs. Run `python3 render_source.py --pose 0 --output neutral.png` with Python and Pillow. Unknown named controls fail. Existing diagnostic poses are inherited from the previous scaffold; they do not exercise or approve the new foot/cloth controls. The new source has only been checked in neutral. + +Research driving the next step: Spine's mix-and-match example documents weighted depth/garment controls and hidden surfaces (https://esotericsoftware.com/spine-examples-mix-and-match); its IK guide describes endpoint constraints and stretch/compress limits (https://esotericsoftware.com/spine-ik-constraints). These mechanisms do not select SS gait or contact phases. Specs 492d921 separates source/anatomical measures from projected lengths and requires authored foot contacts before gait claims. + +No runtime production asset or timing metadata changed. Full key poses, depth treatment, contact tests, four facings and device evidence remain open. diff --git a/docs/review/projected-motion/source-controls/separated-parts.png b/docs/review/projected-motion/source-controls/separated-parts.png new file mode 100644 index 00000000..a5692da4 Binary files /dev/null and b/docs/review/projected-motion/source-controls/separated-parts.png differ diff --git a/docs/review/projected-motion/source-controls/south-foot-cloth-source.zip b/docs/review/projected-motion/source-controls/south-foot-cloth-source.zip new file mode 100644 index 00000000..0e4a0989 Binary files /dev/null and b/docs/review/projected-motion/source-controls/south-foot-cloth-source.zip differ diff --git a/docs/review/projected-motion/source-controls/verification.json b/docs/review/projected-motion/source-controls/verification.json new file mode 100644 index 00000000..88d1da44 --- /dev/null +++ b/docs/review/projected-motion/source-controls/verification.json @@ -0,0 +1,7 @@ +{ + "neutralExact": true, + "layers": 22, + "jointControls": 12, + "motionAcceptance": false, + "contactModel": "NOT_AUTHORED" +} diff --git a/docs/review/projection-guide/build_guide.py b/docs/review/projection-guide/build_guide.py new file mode 100644 index 00000000..1916f966 --- /dev/null +++ b/docs/review/projection-guide/build_guide.py @@ -0,0 +1,58 @@ +"""BP-007 review-only projection experiment. No game resources are modified.""" +import argparse, hashlib, json, math +from pathlib import Path +from PIL import Image, ImageDraw, ImageFont + +parser=argparse.ArgumentParser() +parser.add_argument('--arena',type=Path,required=True) +parser.add_argument('--out',type=Path,required=True) +args=parser.parse_args();args.out.mkdir(parents=True,exist_ok=True) +arena=json.loads(args.arena.read_text()) +solid=next(s for s in arena['permanentSolids'] if s['id']=='solid-03-transit-kiosk') +cx,cy=solid['center']['x'],solid['center']['y'];hx,hy=solid['halfSize']['x'],solid['halfSize']['y'] +corners=[(cx-hx,cy-hy),(cx+hx,cy-hy),(cx+hx,cy+hy),(cx-hx,cy+hy)] +root=math.sqrt(0.5) +matrices={'current-ground':(1,0,0,-1),'elevated-candidate':(root,-root,-root/2,-root/2)} +im=Image.new('RGB',(1408,530),'#171d25');d=ImageDraw.Draw(im) +font=ImageFont.truetype('/System/Library/Fonts/Helvetica.ttc',16) +small=ImageFont.truetype('/System/Library/Fonts/Helvetica.ttc',12) +records={} +for idx,(name,(a,b,c,e)) in enumerate(matrices.items()): + ox,oy=idx*704+352,300;det=a*e-b*c + def project(x,y): + x-=cx;y-=cy + return (a*x+b*y,c*x+e*y) + def screen(x,y): + u,v=project(x,y);return (ox+u,oy+v) + def inverse(u,v):return (cx+(e*u-b*v)/det,cy+(-c*u+a*v)/det) + errors=[] + for x in range(cx-400,cx+401,25): + for y in range(cy-400,cy+401,25): + q=inverse(*project(x,y));errors.append(math.hypot(q[0]-x,q[1]-y)) + assert max(errors)<1e-10 + for n in range(-256,257,32): + d.line([screen(cx+n,cy-256),screen(cx+n,cy+256)],fill='#34414d') + d.line([screen(cx-256,cy+n),screen(cx+256,cy+n)],fill='#34414d') + pts=[screen(*p) for p in corners] + d.polygon(pts,fill='#283c42',outline='#66e0d5',width=3) + # A diagrammatic upright guide only; height is not an arena/gameplay value. + top=[(x,y-110) for x,y in pts] + for p,q in zip(pts,top):d.line([p,q],fill='#d9c9aa',width=2) + d.line(top+[top[0]],fill='#d9c9aa',width=2) + for j,p in enumerate(pts): + d.ellipse((p[0]-4,p[1]-4,p[0]+4,p[1]+4),fill='#66e0d5');d.text((p[0]+6,p[1]+5),chr(65+j),font=font,fill='white') + viewport=[inverse(u,v) for u,v in [(-352,-163),(352,-163),(352,163),(-352,163)]] + projected=[project(*p) for p in corners] + bbox=[max(p[k] for p in projected)-min(p[k] for p in projected) for k in [0,1]] + records[name]={'matrixScreenYDown':[a,b,c,e],'determinant':det,'groundVertices':projected,'groundBoundingSize':bbox,'viewportWorldCorners':viewport,'worldAreaVisibleIgnoringOcclusion':704*326/abs(det),'roundTripMaxError':max(errors),'uprightGuideHeight':110,'heightStatus':'illustrative art guide only, not inferred building height'} + d.rectangle((idx*704,0,idx*704+704,76),fill='#171d25') + d.text((idx*704+22,16),name.upper(),font=font,fill='white') + d.text((idx*704+22,43),f'Same 128 x 128 world obstacle; screen base {bbox[0]:.1f} x {bbox[1]:.1f}',font=small,fill='#c0d0dc') + d.rectangle((idx*704,450,idx*704+704,530),fill='#171d25') + d.text((idx*704+22,464),f'Visible world area at 704 x 326: {704*326/abs(det):,.0f} units squared',font=small,fill='white') + d.text((idx*704+22,488),'Cyan: authoritative ground. Ivory: illustrative upright guide, not production art.',font=small,fill='#c0d0dc') +d.line((704,0,704,530),fill='#677583',width=2) +im.save(args.out/'comparison.png') +record={'status':'PROPOSED_REVIEW_GUIDE_NOT_RUNTIME_RENDER','arenaSHA256':hashlib.sha256(args.arena.read_bytes()).hexdigest(),'solid':solid,'worldCorners':corners,'candidates':records,'source':'Analytic rotation/vertical-compression experiment; no Tiled source copied.'} +(args.out/'projection.json').write_text(json.dumps(record,indent=2)+'\n') +print('Two candidates generated; 2178 world/screen round trips verified. No runtime geometry changed.') diff --git a/docs/review/projection-guide/comparison.png b/docs/review/projection-guide/comparison.png new file mode 100644 index 00000000..37aa204f Binary files /dev/null and b/docs/review/projection-guide/comparison.png differ diff --git a/docs/review/projection-guide/projection.json b/docs/review/projection-guide/projection.json new file mode 100644 index 00000000..5f8c6a89 --- /dev/null +++ b/docs/review/projection-guide/projection.json @@ -0,0 +1,142 @@ +{ + "status": "PROPOSED_REVIEW_GUIDE_NOT_RUNTIME_RENDER", + "arenaSHA256": "60dbcd598bb4184fc3ad917b8967381a1669316699947bba9ccde3d2e7c54ee3", + "solid": { + "id": "solid-03-transit-kiosk", + "center": { + "x": 576, + "y": 704 + }, + "halfSize": { + "x": 64, + "y": 64 + } + }, + "worldCorners": [ + [ + 512, + 640 + ], + [ + 640, + 640 + ], + [ + 640, + 768 + ], + [ + 512, + 768 + ] + ], + "candidates": { + "current-ground": { + "matrixScreenYDown": [ + 1, + 0, + 0, + -1 + ], + "determinant": -1, + "groundVertices": [ + [ + -64, + 64 + ], + [ + 64, + 64 + ], + [ + 64, + -64 + ], + [ + -64, + -64 + ] + ], + "groundBoundingSize": [ + 128, + 128 + ], + "viewportWorldCorners": [ + [ + 224.0, + 867.0 + ], + [ + 928.0, + 867.0 + ], + [ + 928.0, + 541.0 + ], + [ + 224.0, + 541.0 + ] + ], + "worldAreaVisibleIgnoringOcclusion": 229504.0, + "roundTripMaxError": 0.0, + "uprightGuideHeight": 110, + "heightStatus": "illustrative art guide only, not inferred building height" + }, + "elevated-candidate": { + "matrixScreenYDown": [ + 0.7071067811865476, + -0.7071067811865476, + -0.3535533905932738, + -0.3535533905932738 + ], + "determinant": -0.5000000000000001, + "groundVertices": [ + [ + 0.0, + 45.254833995939045 + ], + [ + 90.50966799187809, + 0.0 + ], + [ + 0.0, + -45.254833995939045 + ], + [ + -90.50966799187809, + 0.0 + ] + ], + "groundBoundingSize": [ + 181.01933598375618, + 90.50966799187809 + ], + "viewportWorldCorners": [ + [ + 557.6152236891497, + 1183.4183976444792 + ], + [ + 1055.4183976444792, + 685.6152236891497 + ], + [ + 594.3847763108503, + 224.5816023555209 + ], + [ + 96.58160235552089, + 722.3847763108503 + ] + ], + "worldAreaVisibleIgnoringOcclusion": 459007.9999999999, + "roundTripMaxError": 1.2710574864626038e-13, + "uprightGuideHeight": 110, + "heightStatus": "illustrative art guide only, not inferred building height" + } + }, + "source": "Analytic rotation/vertical-compression experiment; no Tiled source copied." +} diff --git a/docs/review/projection-guide/review.md b/docs/review/projection-guide/review.md new file mode 100644 index 00000000..5850d4da --- /dev/null +++ b/docs/review/projection-guide/review.md @@ -0,0 +1,25 @@ +# BP-007 measured ground-projection guide + +Runtime baseline: 91724c8. Specification baseline: c773f960ee8f53ac429828767fcd09f4da0d7cb3. This is a reproducible analytic guide, not a SpriteKit capture, production art, selected projection or gameplay change. + +## Inputs and findings + +The script reads solid-03-transit-kiosk directly from civic-seam-arena-004.json: center (576,704), half-size (64,64). It records the contract hash and exact world vertices. No footprint is inferred from the generated building. The upright 110-unit wireframe height is an illustrative art-guide parameter only. + +Current screen mapping is (x,-y), relative to the solid center. The PROPOSED elevated candidate is u=(x-y)/sqrt(2), v=-(x+y)/(2*sqrt(2)), with screen y downward. This is a 45-degree ground rotation followed by vertical compression, chosen as a measurable experiment, not an angle recovered from the approved concept. Upright image height is kept independent of the ground transform. + +OBSERVED arithmetic: the same 128x128 obstacle has a projected bounding box about 181.02x90.51. Its projected area is half the current footprint area. At unchanged 704x326 screen framing, the inverse-projected viewport covers 459,008 world square units versus 229,504. This ignores map boundaries and occlusion; it is geometric coverage, not a claim about visible enemies. Both transforms passed 2,178 combined point round trips on a sampled world grid with error below 1e-10. + +## Consequence for the next renderer comparison + +Do not adopt this matrix globally as a cosmetic fix. Current visible-world dimensions and encounter readability need explicit reconciliation. A uniform zoom of sqrt(2) would restore area alone, but would not restore the old viewport shape, cardinal travel appearance or threat visibility. It is another comparison setting, not an accepted solution. + +Apply any candidate consistently to ground geometry, actor roots, prop roots, projectile paths, fields, telegraphs, overlays and camera tracking. Upright art must be authored for that candidate and attached to projected roots rather than compressed with the ground plane. Directional art selection must agree with the projected travel vector. Input needs a documented inverse-direction mapping and analog-magnitude policy; do not change authoritative speed to equalize screen-space movement. The same world-space circle becomes an ellipse under this candidate, so a screen-space circular damage indicator would be false. + +Keep the existing projection and gameplay untouched until a real-renderer scene demonstrates the candidate with legal encounters, traversal and contact overlays. The guide provides exact source constraints for a new building master; it does not satisfy that scene gate. + +## Research and reproduction + +Tiled's primary renderer implements separate forward/inverse isometric coordinate conversion and projects rectangle vertices to polygons: https://github.com/mapeditor/tiled/blob/master/src/libtiled/isometricrenderer.cpp (accessed 2026-10-14). Its object documentation separates image alignment and collision objects: https://doc.mapeditor.org/en/stable/manual/objects/ . These establish an implementation approach, not SS's preferred aesthetic angle. No Tiled code was copied. + +Run build_guide.py with --arena pointing to the pinned civic-seam-arena-004.json and --out to a destination directory. It requires Pillow and the macOS Helvetica font. projection.json records exact matrices, viewport corners and verification results. comparison.png is an engineering drawing, not replacement artwork. diff --git a/docs/review/reaction-occurrence/ios-summary.json b/docs/review/reaction-occurrence/ios-summary.json new file mode 100644 index 00000000..77b3c1a1 --- /dev/null +++ b/docs/review/reaction-occurrence/ios-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 90, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792013495.932, + "passedTests" : 88, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792013369.945, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "50% of duration", + "text" : "2 longest test runs with outlier durations exceeding 9.79s (three standard deviations)" + } + ], + "totalTestCount" : 88 +} diff --git a/docs/review/reaction-occurrence/review.md b/docs/review/reaction-occurrence/review.md new file mode 100644 index 00000000..6e03dd2a --- /dev/null +++ b/docs/review/reaction-occurrence/review.md @@ -0,0 +1,23 @@ +# BP-003 event-facing one-shot integration + +Runtime base: d96fca0. Adopted specification: 56a5a5da1d87491d23df86731cc01a5acd868d26. Active clip delivery remains v1. + +ReactionClipTracker records a ClipOccurrence (event-facing and start tick) for hurt, stagger, held commit and defeat, and derives the exclusive end tick from that facing's timing. GameSession supplies the Player's post-tick facing. Enemy occurrences use the same velocity-facing projection as the body. A new qualifying event creates a new occurrence; rendering or turning does not change it. Checked end-tick addition fails closed on overflow. + +PresentationSnapshot carries occurrence data separately from live facing. Held commits retain the base clip for missing-art fallback. Applying the tracker to a reused snapshot clears expired reaction data and restores the base, including an absent base. Defeat and cancellation precedence remain in the tracker. + +WorldRenderer samples one-shot textures from elapsed simulation ticks, rather than restarting a full SKAction when facing changes. ClipTiming.frameIndex compares full-width integer products at exact frame boundaries; even a very late sample cannot overflow. Repeated or paused ticks select the same pose; late first render enters the current phase; Reduced Motion selects the final pose. Fallback uses the live direction and normal state animation. SpriteKit actions remain in use for ordinary state/locomotion clips. + +Core coverage includes unequal facing lifetimes, suppression without deadline extension, turning, repeat events, reused-snapshot expiry, nil-base restoration, reset, exact rational frame boundaries and large-offset arithmetic. The new iOS test compares actual texture PNG pixels for late rendering, turning, repeated ticks, new occurrence, Reduced Motion and missing-art fallback. Existing pause/restart, cancellation, defeat and session-versus-bare-simulation checks remain relevant. + +Test defect #122 was recorded before repairing nested #require macro expansion in the new pixel helper. The fix separates texture and PNG-data requirements; no assertion was weakened: https://github.com/Zero-State-LLC/SS-runtime/issues/122. + +This is functional playback infrastructure, not acceptance of current source art. Native-scale review of movement during event-facing reactions, complete new cycles, v2 exporter/resource/version migration, performance and physical-device gates remain open. Current animation art is unchanged. + +## Validation + +Full core run: 772 tests / 109 suites passed in 633.668 seconds before the final nil-base restoration edge-case fix. After that fix, 31 focused tests across ReactionClipTrackerTests, CommitClipTests, ClipTimingTests, ClipMetadataV2Tests, ContractVersionsTests and AssetCatalogTests passed in 1.144 seconds. The full suite was not repeated after that narrow cleanup change. + +Final iOS Simulator build: 88 tests passed, 0 failed, 0 skipped (85 Swift Testing + 3 XCTest). Result Test-SSRuntime-2026.10.14_14-29-29--0700.xcresult; iPhone 17 Pro iOS 26.5 simulator CACB3927-A76E-43A5-9ACA-C389EB38C0C3. Includes actual reaction texture checks and existing session digest, pause/restart and camera interruption checks. No physical-device run. + +Core command: `swift test --disable-sandbox --cache-path ../swift-cache --config-path ../swift-config --security-path ../swift-security`; focused follow-up adds `--filter 'ReactionClipTrackerTests|CommitClipTests|ClipTimingTests|ClipMetadataV2Tests|ContractVersionsTests|AssetCatalogTests'`. diff --git a/docs/review/reaction-turn/ios-summary.json b/docs/review/reaction-turn/ios-summary.json new file mode 100644 index 00000000..91755d9e --- /dev/null +++ b/docs/review/reaction-turn/ios-summary.json @@ -0,0 +1,118 @@ +{ + "status": "succeeded", + "testExecutions": 92, + "failures": [], + "device": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "resultBundle": "Test-SSRuntime-2026.10.14_15-07-25--0700.xcresult" +} diff --git a/docs/review/reaction-turn/review.md b/docs/review/reaction-turn/review.md new file mode 100644 index 00000000..756598c6 --- /dev/null +++ b/docs/review/reaction-turn/review.md @@ -0,0 +1,15 @@ +# BP-003 event-facing native capture + +OBSERVED: testCaptureReactionTurningReadability captures 22 actual WorldRenderer frames: ticks 100–110, normal and Reduced Motion, 704×326 points / 2112×978 pixels. ReactionClipTracker receives a west-facing hurt at tick 100. Live presentation turns north at 101, travels 4 units/tick, and the reaction expires at 109. The source is the existing bundled v1 art, not the proposed benchmark character. No new art was admitted. + +The normal sequence changes at the authored 3-tick boundaries. Reduced Motion retains the final hurt pose. Both return to the live north-facing move clip at expiry. Existing texture-identity tests independently verify the frame selection. The capture test also asserts occurrence facing and expiry. + +VISUAL REVIEW: native crops show a pronounced silhouette change across the three hurt frames and an unclear west-facing read. The return to north-facing movement changes the silhouette again. The current source cannot establish acceptable directional continuity for benchmark art. This is a visual judgment from the exported frames, not a failed timing assertion. Keep the native readability gate open; do not activate v2 solely on passing timing tests. + +Next source-art evidence must include coherent hurt poses and their transition to the approved hooded character's movement facings, preserving equipment, anatomy and anchor. Review normal timing and quarter speed in the shared renderer scene. This follows BP-002/BP-003 and the existing event-facing policy; it adds no mechanic or animation cadence. + +Limits: synthetic presentation positions; no authoritative combat, collision, ground-travel or full benchmark scene validation. SKView paused: reactions are tick-sampled but fallback movement is a still, not complete SKAction playback evidence. Background belongs to the existing renderer and the synthetic path begins near its origin; it is not a proposed environment layout. Native-pixel crops are fixed 200×250 cuts, unscaled, from the full captures. Browser playback is a review aid, not frame-pacing measurement. + +Validation: iPhone 17 Pro simulator / iOS 26.5, 92 test executions succeeded with no failure summaries (86 Swift Testing tests plus 4 XCTest methods, including parameterized executions). Focused core run: 15 tests, 2 suites, 1.089 seconds. No physical device used. Raw result and attachments were read through xcresulttool legacy object export; the newer attachment exporter required an unavailable cache write, so it was not used. + +Active v1 metadata, source art, spec pin and gameplay identities remain unchanged. Spec source: 56a5a5da1d87491d23df86731cc01a5acd868d26, animation-timing-migration.md and acceptance.md BP-003 gate. The active migration remains pending this visual gate and coordinated resource/version/export reconciliation. diff --git a/docs/review/recording-frame-miss/README.md b/docs/review/recording-frame-miss/README.md new file mode 100644 index 00000000..b56e69b9 --- /dev/null +++ b/docs/review/recording-frame-miss/README.md @@ -0,0 +1,9 @@ +# Recording-load frame miss: measured diagnosis + +All 80 moving observations match the proposed distance-phase formula. Missing source frame 15 is selected only on ticks 30, 60, 90 and 120 for this full-input route. The recorded callbacks bracket each opportunity at 29→31, 59→61, 89→91 and 119→121. This establishes a display-sampling miss, not incorrect phase arithmetic or malformed source art. The initiating delay remains unproven. + +Opt-in Debug stage timing is now available in GameSession. The regression compares every tick's digest and events plus final command logs with timing disabled, for both measured/control execution orders. Fresh suite: 117 named tests / 119 executions passed, zero failures. Prior recorded failure remains open. + +Across 240 measured steps, stage medians were simulation 1.86–1.87 ms, HUD/captions/quiet/feel 1.31–1.35 ms, awareness snapshot/hint 1.21–1.24 ms. Awareness snapshot/hint consumed about 28% of measured session time. These are coarse, overhead-inclusive Debug simulator timings, not CPU samples or proof of the original recording bottleneck. + +Next: inspect and remove unnecessary full-snapshot construction in presentation-only hint/feel paths if exact semantic parity can be demonstrated. Preserve tick/event timing, first-visible-enemy behavior, damage/AI authority, command/replay invariants and unchanged animation coverage. Use a CPU/GPU trace if reduced CPU work does not resolve delayed callbacks. Do not lengthen the test, slow playback or queue stale poses to conceal the failure. diff --git a/docs/review/recording-frame-miss/app-summary.json b/docs/review/recording-frame-miss/app-summary.json new file mode 100644 index 00000000..9bd74e7d --- /dev/null +++ b/docs/review/recording-frame-miss/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 119, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792119266.087, + "passedTests" : 117, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792118889.822, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "39% of duration", + "text" : "2 longest test runs with outlier durations exceeding 30.59s (three standard deviations)" + } + ], + "totalTestCount" : 117 +} diff --git a/docs/review/recording-frame-miss/phase-audit.json b/docs/review/recording-frame-miss/phase-audit.json new file mode 100644 index 00000000..17af369b --- /dev/null +++ b/docs/review/recording-frame-miss/phase-audit.json @@ -0,0 +1,41 @@ +{ + "status": "PHASE_FORMULA_MATCHES_OBSERVATIONS_DISPLAY_CALLBACKS_MISS_ALL_FRAME_15_OPPORTUNITIES", + "scope": "recorded full-input standard-motion distance-phase candidate, 120-tick route", + "records": 103, + "movingRecords": 80, + "missingFrames": [ + 15 + ], + "phaseMismatches": [], + "missingFrameTickOpportunities": { + "15": [ + 30, + 60, + 90, + 120 + ] + }, + "bracketingObservedTicks": [ + { + "tick": 30, + "before": 29, + "after": 31 + }, + { + "tick": 60, + "before": 59, + "after": 61 + }, + { + "tick": 90, + "before": 89, + "after": 91 + }, + { + "tick": 120, + "before": 119, + "after": 121 + } + ], + "causeBoundary": "Establishes skipped display observations, not initiating CPU/GPU/recording bottleneck. Does not justify source art or timing changes." +} diff --git a/docs/review/recording-frame-miss/session-stage-summary.json b/docs/review/recording-frame-miss/session-stage-summary.json new file mode 100644 index 00000000..1f618630 --- /dev/null +++ b/docs/review/recording-frame-miss/session-stage-summary.json @@ -0,0 +1,114 @@ +[ + { + "measuredFirst": false, + "stage": "audioAndCaptionBoard", + "medianMS": 0.019073486328125, + "maxMS": 0.1239776611328125, + "fractionOfMeasuredTime": 0.005036764635855186 + }, + { + "measuredFirst": false, + "stage": "awarenessSnapshotAndHint", + "medianMS": 1.2350082397460938, + "maxMS": 2.6439428329467773, + "fractionOfMeasuredTime": 0.28102454637055174 + }, + { + "measuredFirst": false, + "stage": "commandAndFeelBefore", + "medianMS": 0.0050067901611328125, + "maxMS": 0.02300739288330078, + "fractionOfMeasuredTime": 0.0013532111887750772 + }, + { + "measuredFirst": false, + "stage": "diagnosticsAndCommandLog", + "medianMS": 0.0050067901611328125, + "maxMS": 0.08893013000488281, + "fractionOfMeasuredTime": 0.0014854847253694505 + }, + { + "measuredFirst": false, + "stage": "hudCaptionsQuietFeel", + "medianMS": 1.3489723205566406, + "maxMS": 1.8799304962158203, + "fractionOfMeasuredTime": 0.2932146638654306 + }, + { + "measuredFirst": false, + "stage": "reactions", + "medianMS": 0.0059604644775390625, + "maxMS": 0.026106834411621094, + "fractionOfMeasuredTime": 0.0015432618061538728 + }, + { + "measuredFirst": false, + "stage": "simulation", + "medianMS": 1.8720030784606934, + "maxMS": 2.678990364074707, + "fractionOfMeasuredTime": 0.4157342440525056 + }, + { + "measuredFirst": false, + "stage": "terminalReceipt", + "medianMS": 0.0020265579223632812, + "maxMS": 0.01895427703857422, + "fractionOfMeasuredTime": 0.0006078233553584645 + }, + { + "measuredFirst": true, + "stage": "audioAndCaptionBoard", + "medianMS": 0.018477439880371094, + "maxMS": 0.0699758529663086, + "fractionOfMeasuredTime": 0.004603557160762811 + }, + { + "measuredFirst": true, + "stage": "awarenessSnapshotAndHint", + "medianMS": 1.2094974517822266, + "maxMS": 1.619100570678711, + "fractionOfMeasuredTime": 0.2795922921277705 + }, + { + "measuredFirst": true, + "stage": "commandAndFeelBefore", + "medianMS": 0.0050067901611328125, + "maxMS": 0.02300739288330078, + "fractionOfMeasuredTime": 0.001294399767966217 + }, + { + "measuredFirst": true, + "stage": "diagnosticsAndCommandLog", + "medianMS": 0.0050067901611328125, + "maxMS": 0.02300739288330078, + "fractionOfMeasuredTime": 0.0012594393207487234 + }, + { + "measuredFirst": true, + "stage": "hudCaptionsQuietFeel", + "medianMS": 1.3060569763183594, + "maxMS": 1.9069910049438477, + "fractionOfMeasuredTime": 0.294160439966438 + }, + { + "measuredFirst": true, + "stage": "reactions", + "medianMS": 0.0059604644775390625, + "maxMS": 0.03790855407714844, + "fractionOfMeasuredTime": 0.001549697354745816 + }, + { + "measuredFirst": true, + "stage": "simulation", + "medianMS": 1.8564462661743164, + "maxMS": 2.497076988220215, + "fractionOfMeasuredTime": 0.41697800167810145 + }, + { + "measuredFirst": true, + "stage": "terminalReceipt", + "medianMS": 0.0020265579223632812, + "maxMS": 0.012993812561035156, + "fractionOfMeasuredTime": 0.0005621726234664881 + } +] diff --git a/docs/review/recording-retry/README.md b/docs/review/recording-retry/README.md new file mode 100644 index 00000000..0ac892ae --- /dev/null +++ b/docs/review/recording-retry/README.md @@ -0,0 +1,5 @@ +# Recording-load retry after presentation optimization + +Same simulator suite recorded with native Simulator recording active. Result Test-SSRuntime-2026.10.15_20-51-06--0700: 117 named tests / 119 executions pass, zero failures. Independent attachment audit: all 12 cases (three input magnitudes × two motion modes × distance-phase/control) contain all 16 frames; distance-phase selections match recorded travel. Earlier 15/16 failure did not recur in this run. No cadence, route length, art or coverage threshold was changed to pass. This is one passing recorded run, not proof of sustained device frame rate or final visual acceptance. Recording stopped and its control returned to an inactive button. + +Next: return to visual contact/seam and shared-scene refinement. Do not repeat the full suite without a relevant change or new concern. Release/device checks and missing authored facings/actions remain open. diff --git a/docs/review/recording-retry/app-summary.json b/docs/review/recording-retry/app-summary.json new file mode 100644 index 00000000..3e68af0d --- /dev/null +++ b/docs/review/recording-retry/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 119, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792123042.533, + "passedTests" : 117, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792122666.187, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "40% of duration", + "text" : "2 longest test runs with outlier durations exceeding 32.43s (three standard deviations)" + } + ], + "totalTestCount" : 117 +} diff --git a/docs/review/recording-retry/coverage-audit.json b/docs/review/recording-retry/coverage-audit.json new file mode 100644 index 00000000..445b552a --- /dev/null +++ b/docs/review/recording-retry/coverage-audit.json @@ -0,0 +1,530 @@ +[ + { + "attachment": "BP008-stage-4-rep-20-axis-8191-reduced-true-post-action-records_0_E110F146-0CF1-4389-8342-2606C22934AE.json", + "axis": 8191, + "reducedMotion": true, + "distancePhase": true, + "observations": 405, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 3, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 114, + 115, + 116, + 118, + 119, + 120, + 120, + 234, + 235, + 236, + 238, + 240, + 354, + 355, + 356, + 358, + 359, + 360, + 474, + 475, + 478, + 480 + ], + "callbackMedianMS": 18.219351768493652, + "callbackP95MS": 32.86314010620117, + "callbackMaxMS": 44.708967208862305 + }, + { + "attachment": "BP008-stage-4-rep-21-axis-8191-reduced-true-post-action-records_0_1CE1B034-6169-4DA5-AB9E-F2D621CCCA1F.json", + "axis": 8191, + "reducedMotion": true, + "distancePhase": false, + "observations": 459, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 15, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 30, + 60, + 90, + 120, + 150, + 180, + 210, + 240, + 270, + 330, + 390, + 420, + 450, + 480 + ], + "callbackMedianMS": 17.19379425048828, + "callbackP95MS": 22.738218307495117, + "callbackMaxMS": 36.32402420043945 + }, + { + "attachment": "BP008-stage-4-rep-20-axis-16383-reduced-true-post-action-records_0_FC6BF52D-831F-4D2E-867D-B77F96A4AF9E.json", + "axis": 16383, + "reducedMotion": true, + "distancePhase": true, + "observations": 207, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 3, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 58, + 59, + 60, + 118, + 119, + 178, + 179, + 180, + 238, + 239, + 240 + ], + "callbackMedianMS": 17.870545387268066, + "callbackP95MS": 29.142141342163086, + "callbackMaxMS": 45.435190200805664 + }, + { + "attachment": "BP008-stage-4-rep-21-axis-16383-reduced-true-post-action-records_0_0505E5E6-4842-4215-8777-83452A42BE7E.json", + "axis": 16383, + "reducedMotion": true, + "distancePhase": false, + "observations": 224, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 7, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 30, + 60, + 90, + 120, + 150, + 180, + 210 + ], + "callbackMedianMS": 17.328977584838867, + "callbackP95MS": 24.22809600830078, + "callbackMaxMS": 41.471004486083984 + }, + { + "attachment": "BP008-stage-4-rep-20-axis-32767-reduced-true-post-action-records_0_14CBB0FB-E59D-4543-AE76-DAFB940EAE4F.json", + "axis": 32767, + "reducedMotion": true, + "distancePhase": true, + "observations": 112, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 3, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 30, + 60, + 90, + 120 + ], + "callbackMedianMS": 16.703128814697266, + "callbackP95MS": 25.99620819091797, + "callbackMaxMS": 42.19222068786621 + }, + { + "attachment": "BP008-stage-4-rep-21-axis-32767-reduced-true-post-action-records_0_7158C983-AA68-424D-95A9-801186E060D9.json", + "axis": 32767, + "reducedMotion": true, + "distancePhase": false, + "observations": 119, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 3, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 30, + 60, + 90, + 120 + ], + "callbackMedianMS": 16.496896743774414, + "callbackP95MS": 21.143198013305664, + "callbackMaxMS": 27.264833450317383 + }, + { + "attachment": "BP008-stage-4-rep-20-axis-8191-reduced-false-post-action-records_0_4AF0C8F5-C183-49DB-A2D4-53C174B7F163.json", + "axis": 8191, + "reducedMotion": false, + "distancePhase": true, + "observations": 436, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 3, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 114, + 115, + 117, + 118, + 119, + 120, + 120, + 234, + 235, + 237, + 238, + 239, + 240, + 240, + 354, + 355, + 357, + 358, + 359, + 360, + 474, + 475, + 477, + 478, + 479, + 480, + 480 + ], + "callbackMedianMS": 17.677783966064453, + "callbackP95MS": 24.307966232299805, + "callbackMaxMS": 42.099952697753906 + }, + { + "attachment": "BP008-stage-4-rep-21-axis-8191-reduced-false-post-action-records_0_4C3E84C9-1005-476A-B43D-291DE8A93BE4.json", + "axis": 8191, + "reducedMotion": false, + "distancePhase": false, + "observations": 474, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 15, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 30, + 60, + 90, + 120, + 150, + 180, + 210, + 240, + 270, + 300, + 330, + 360, + 390, + 420, + 450, + 480 + ], + "callbackMedianMS": 16.687870025634766, + "callbackP95MS": 19.980907440185547, + "callbackMaxMS": 25.868892669677734 + }, + { + "attachment": "BP008-stage-4-rep-20-axis-16383-reduced-false-post-action-records_0_FDA9D953-1D50-493E-99CE-08183997DD2B.json", + "axis": 16383, + "reducedMotion": false, + "distancePhase": true, + "observations": 217, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 3, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 58, + 59, + 60, + 118, + 119, + 178, + 179, + 180, + 239, + 240 + ], + "callbackMedianMS": 17.542481422424316, + "callbackP95MS": 23.23007583618164, + "callbackMaxMS": 48.12502861022949 + }, + { + "attachment": "BP008-stage-4-rep-21-axis-16383-reduced-false-post-action-records_0_78F310EC-4CE1-4E96-A513-1B3B1F11CA99.json", + "axis": 16383, + "reducedMotion": false, + "distancePhase": false, + "observations": 235, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 7, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 30, + 60, + 90, + 120, + 150, + 180, + 210, + 240 + ], + "callbackMedianMS": 16.730904579162598, + "callbackP95MS": 22.772789001464844, + "callbackMaxMS": 39.0620231628418 + }, + { + "attachment": "BP008-stage-4-rep-20-axis-32767-reduced-false-post-action-records_0_B921B96E-EEE8-489D-A40B-B6FF5DED8D6B.json", + "axis": 32767, + "reducedMotion": false, + "distancePhase": true, + "observations": 105, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 3, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 60, + 60, + 90, + 90, + 120, + 120 + ], + "callbackMedianMS": 17.405986785888672, + "callbackP95MS": 29.003143310546875, + "callbackMaxMS": 51.046133041381836 + }, + { + "attachment": "BP008-stage-4-rep-21-axis-32767-reduced-false-post-action-records_0_CE8F6FFA-CECD-4ED8-9EF4-AFF8D5AD3006.json", + "axis": 32767, + "reducedMotion": false, + "distancePhase": false, + "observations": 113, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "missingFrames": [], + "wraps": 3, + "phaseMismatchTicks": [], + "frame15Ticks": [ + 30, + 60, + 120 + ], + "callbackMedianMS": 16.416072845458984, + "callbackP95MS": 24.868011474609375, + "callbackMaxMS": 41.23687744140625 + } +] diff --git a/docs/review/recovery-cycle/README.md b/docs/review/recovery-cycle/README.md new file mode 100644 index 00000000..e3885923 --- /dev/null +++ b/docs/review/recovery-cycle/README.md @@ -0,0 +1,17 @@ +# Recovery correction propagated through source cycle + +Status: source geometry candidate only. No final character animation or runtime resource admitted. + +Authority: SS-specs d602775 BP-002/BP-008 and controlled-character-source.md require source key and contact review before complete painted-cycle admission. This follows the authored recovery key from runtime 66cfb07. No design requirement or spec pin changes. + +cycle.py applies the authored ankle correction only during swing using a smooth sin-squared envelope, normalized at the authored key. It solves a fixed-length chain with the knee lateral coordinate explicitly between hip and ankle, avoiding an uncontrolled sideways pole projection. The candidate assumes the ankle remains below the hip; it fails if this branch condition or reachability is violated. Both legs share the correction half a cycle apart. + +The envelope, knee lateral rule and hidden source landmarks are authored choices for this candidate, not researched anatomical facts or production acceptance criteria. The prior research in controlled-character-source.md supports explicit IK and source-space constraints; it does not prescribe this trajectory. The original painted knee-pad annotation remains approximate. + +Sixteen poses sample the existing 0.5-second duration without a duplicate closing pose. Dense inspection uses 1,001 samples. Maximum segment-length error is approximately 7.1e-15 source units, support-toe difference from the prior model approximately 1.8e-15, and the seam and authored-key differences are zero. Heel/toe landmarks stay at or above the authored ground plane. These values verify construction, not anatomical correctness or benchmark fidelity. + +The slow comparison GIF uses 125ms per frame for inspection, not the shipping cadence. The sixteen-pose sheet was inspected. This remains a line/sole-volume source diagnostic; body counter-motion, cloth, hands, actual boot materials, full-character silhouette and distinct facings remain unfinished. The previous sampled-frame world-travel sliding concern remains unresolved; preserving continuous source support is not a real-renderer travel test. + +Reproduce with Python 3 and Pillow: python3 cycle.py. Exact recipe, parameters, authored key, samples, verification and images are in source.zip. No active code/resources changed. Latest core validation remains the clean 773-test / 109-suite run recorded in recovery-pose-correction; this source-only change did not rerun it. Script assertions and reproduction passed. + +Next: apply the owned boot volume and retained costume layers to these poses, review knee/ankle occlusion across the range, then advance through the existing full-art and renderer gates. This diagnostic does not replace those gates. diff --git a/docs/review/recovery-cycle/hashes.json b/docs/review/recovery-cycle/hashes.json new file mode 100644 index 00000000..381df598 --- /dev/null +++ b/docs/review/recovery-cycle/hashes.json @@ -0,0 +1,11 @@ +{ + "cycle.py": "e092fcdce0c9c61dcf74f35f0bb2e7930dd9b641f5b3c01ef87a8684f8fdf066", + "parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "sixteen-source-poses.png": "6f9a189fb6f8f348e61f2311d35da10459ee095b70229251317d1a94976c1fe9", + "samples.json": "9c04a78a8925c186737148a2fb31e7401ffae149c93ebccd856bd38b60981fc9", + "README.md": "4f6e0c4633f88004ec28bd729cb7fefd769e5c2e41a99f6b15e33c95d1e05e25", + "authored-key.json": "c984027d6a21d1846492abb553a838b41c925eb41c132254950eff501c1bc45d", + "verification.json": "fab9d45fd0c224ad1ecd4d4b523fe65b2d429b9719f827c07486f1f6332eb49d", + "block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201", + "slow-comparison.gif": "2ec111697db6dbf06fbd44cf374af28f18da88e03228584bc291a6ba6f0b09dd" +} diff --git a/docs/review/recovery-cycle/sixteen-source-poses.png b/docs/review/recovery-cycle/sixteen-source-poses.png new file mode 100644 index 00000000..a9dca7d7 Binary files /dev/null and b/docs/review/recovery-cycle/sixteen-source-poses.png differ diff --git a/docs/review/recovery-cycle/slow-comparison.gif b/docs/review/recovery-cycle/slow-comparison.gif new file mode 100644 index 00000000..4105379e Binary files /dev/null and b/docs/review/recovery-cycle/slow-comparison.gif differ diff --git a/docs/review/recovery-cycle/source.zip b/docs/review/recovery-cycle/source.zip new file mode 100644 index 00000000..082e4b04 Binary files /dev/null and b/docs/review/recovery-cycle/source.zip differ diff --git a/docs/review/recovery-cycle/verification.json b/docs/review/recovery-cycle/verification.json new file mode 100644 index 00000000..96297ff7 --- /dev/null +++ b/docs/review/recovery-cycle/verification.json @@ -0,0 +1,22 @@ +{ + "status": "SOURCE_GEOMETRY_NOT_ART_OR_RUNTIME", + "cycleSeconds": 0.5, + "uniqueSampleTimes": 16, + "denseSamples": 1001, + "ankleCorrectionAtAuthoredKey": [ + 0.0, + 7.258342943010907, + 5.169537883516771 + ], + "swingEnvelope": "sin(pi*u)^2 / sin(pi*u_key)^2", + "uKey": 0.37499999999999994, + "maxSegmentLengthError": 7.105427357601002e-15, + "supportToeDifferenceFromPriorSource": 1.7763568394002505e-15, + "seamPositionDifference": 0.0, + "authoredKeyDifference": 0.0, + "minimumHeelToeHeight": 0.0, + "runtimeTravelVerified": false, + "heldFrameSlidingResolved": false, + "costumeOrClothAnimated": false, + "gifDuration": "125ms per frame, intentionally slow diagnostic; not shipping cadence" +} diff --git a/docs/review/recovery-fullbody-rejection/README.md b/docs/review/recovery-fullbody-rejection/README.md new file mode 100644 index 00000000..0b8dbaa3 --- /dev/null +++ b/docs/review/recovery-fullbody-rejection/README.md @@ -0,0 +1,11 @@ +# Full-body recovery correction — rejected + +Built-in image_gen edit, 2026-10-15. Reference: SS-contact-key-repair/retained-body-contact.png. Exact prompt retained. Original generated PNG preserved without processing. + +The edit reconnects a visible boot beneath the image-right raised knee, but repeats a front-facing toe/upper treatment rather than the requested rear/heel recovery orientation. It therefore does not resolve the user's lace-placement correction or satisfy the existing controlled-character-source key-pose gate. It must not replace the active art, be extracted into a limb, or be in-betweened as an accepted key. + +The attempt also redraws the whole body; exact preservation of the retained costume pixels is not established. Do not mistake a more complete silhouette for a validated source. + +Next method: keep the editable surface-owned source, refine its ankle/boot transition and review that source assembled in the full pose. Further independent raster attempts at the same recovery orientation are not the next step. + +Validation: the preceding swift test invocation reported 773 tests / 109 suites passing but exited 1 after nested sandbox manifest initialization failed (sandbox_apply: Operation not permitted). This is not a clean command pass. A retry with SwiftPM's nested sandbox disabled was started; result is not established in this document. No runtime code or active resource changed. diff --git a/docs/review/recovery-fullbody-rejection/hashes.json b/docs/review/recovery-fullbody-rejection/hashes.json new file mode 100644 index 00000000..149e866e --- /dev/null +++ b/docs/review/recovery-fullbody-rejection/hashes.json @@ -0,0 +1,5 @@ +{ + "prompt.txt": "5834f4162f45fe357d1df8c2efc1fd643f7b9ceae032927fcb030151789996f8", + "README.md": "c56e984287f7c775140fc51f62bfaaf4d45cd61c1a593f01b52ce48713b65bc2", + "source.png": "76a2c48e2ba222f40a5b28bfb1542e4805af1dd21f27d64814c9c20f6efad3aa" +} diff --git a/docs/review/recovery-fullbody-rejection/prompt.txt b/docs/review/recovery-fullbody-rejection/prompt.txt new file mode 100644 index 00000000..481babf8 --- /dev/null +++ b/docs/review/recovery-fullbody-rejection/prompt.txt @@ -0,0 +1 @@ +Edit this single full-body elevated top-down game sprite. Preserve the hooded urban street-theater survivor identity, gray weathered coat, brass shoulder patches, diagonal satchel strap, black gloves, knee pads, detailed painterly material style and elevated view. Preserve the existing planted leg on image LEFT with its front-facing laced boot. Correct ONLY the missing recovering lower leg on image RIGHT: the existing raised knee bends and its shin goes backward away from the viewer, with ONE connected boot behind/below the raised knee. Show the boot's plain leather heel counter and a small dark outsole as appropriate to a flexed recovery pose; NO laces on heel, sole or back of shaft. Front tongue and laces of this raised boot must be hidden by correct orientation and occlusion. Keep knee/shin/ankle/boot connected with plausible anatomy, no detached shoe, no duplicate toe, no extra limbs. The resulting pose is a restrained run contact key, not a standing pose. Keep original full character, fixed elevated camera, no side-scroller view. Transparent background, no text, no aura, no glow, no ground shadow. Full character centered with all pixels inside canvas. diff --git a/docs/review/recovery-fullbody-rejection/source.zip b/docs/review/recovery-fullbody-rejection/source.zip new file mode 100644 index 00000000..31fe28ee Binary files /dev/null and b/docs/review/recovery-fullbody-rejection/source.zip differ diff --git a/docs/review/recovery-leg-source/README.md b/docs/review/recovery-leg-source/README.md new file mode 100644 index 00000000..73df8f83 --- /dev/null +++ b/docs/review/recovery-leg-source/README.md @@ -0,0 +1,27 @@ +# Recovery-leg source: rejected paint and editable volume guide + +Status: SOURCE GEOMETRY EXPERIMENT. No generated component is admitted. + +Authority: SS-specs d602775, controlled-character-source.md BP-002/BP-008 permits authored hidden surfaces and a controlled 3D source pilot, while rejecting geometry proxies as final art. Runtime parent 5a5c338. No new gameplay, presentation policy or spec pin is required for this experiment. + +## Observations and change of method + +The preceding contact key does not reveal the recovery boot. Built-in image_gen produced source-initial.png from that key and the retained neutral costume. The connected lower-leg component points its toe upward in image space, contrary to the existing authored recovery guide. The focused pitch correction instead produced two visible boots in source-duplicated-boot.png. Both outputs are rejected for assembly. Exact prompts are retained; no clipping or registration hides those failures. + +The next safe source action was to make the concealed volume explicit using the existing pose model, rather than infer hidden anatomy from the raster. boot_geometry.py imports the existing block.py and its parameters, samples the anatomical left leg at time zero, and constructs a closed shoe loft, attached shaft and trouser segment. Heel/toe/ankle/knee positions are unchanged from that model. The shape recipe is boot-shape.json; recovery-leg.obj is editable mesh output. No Blender or other engine is required to reproduce it. + +The shoe's length and maximum width use the earlier proposed block's 10 and 4 source units. Cross sections, shaft and trouser radii are explicitly authored guide values, not measurements recovered from the painted character. The components are closed separately; their intersections have not been validated as a production mesh or skinning topology. + +## Visual review + +geometry-guide.png shows the same pose from elevated south and the side. In the elevated projection the shin overlaps much of the boot; the side diagnostic separates the shin, heel and toe. This provides an explicit source relationship for the next paint attempt. It does not establish matching costume proportions, acceptable gait, a final viewing angle or correct world contact. The isolated study does not include thigh/coat occlusion or a complete character assembly. + +The original contact key, active runtime art and metadata remain untouched. Next painting work must follow this geometry and maintain one connected boot, then be reviewed both isolated and assembled behind the original knee/thigh. Only after source range/depth and full-body counter-motion checks should the south cycle be expanded. Four facings, complete 16-frame locomotion, actual renderer travel and device acceptance remain open. + +## Research + +Animation Mentor's [Building Appealing Character Poses](https://www.animationmentor.com/blog/tutorial-building-appealing-character-poses-for-animation/), retrieved 2026-10-15, recommends reviewing meaning, silhouette, line of action and counter-pose. This supports a silhouette check but does not prescribe the proposed outward-foot variant, boot dimensions, contact intervals or camera. The tutorial video was not inspected. The existing controlled-source spec supplies the 3D source-method research; no additional runtime dependency is introduced. + +## Reproduction and verification + +Python 3 + Pillow: `python3 boot_geometry.py`. It exports recovery-leg.obj, geometry-guide.png and geometry-record.json. Checks require finite unique vertices, nondegenerate face index sets and two incident faces per component edge. These establish basic source-mesh structure only, not anatomical/skin/art quality. Script reproduction passed. No production code or runtime resource changed; no new simulator/device/core test result is claimed. Raw image-generation outputs, prompts, guide parameters and hashes remain in the source archive. diff --git a/docs/review/recovery-leg-source/boot-shape.json b/docs/review/recovery-leg-source/boot-shape.json new file mode 100644 index 00000000..d92d0674 --- /dev/null +++ b/docs/review/recovery-leg-source/boot-shape.json @@ -0,0 +1,7 @@ +{ + "status": "authored volume guide, not inferred from painted source", + "sections": [[-10,1.3,2.5],[-9,1.8,3],[-6,2,3],[-3,2,2.4],[-1,1.8,1.5],[0,0.6,0.8]], + "length": 10, + "maximumWidth": 4, + "notes": "Length and width match the existing proposed block. Cross sections, shaft and trouser radii are newly authored guide values. No anatomy or benchmark fidelity claim." +} diff --git a/docs/review/recovery-leg-source/geometry-guide.png b/docs/review/recovery-leg-source/geometry-guide.png new file mode 100644 index 00000000..01e7cb1e Binary files /dev/null and b/docs/review/recovery-leg-source/geometry-guide.png differ diff --git a/docs/review/recovery-leg-source/geometry-record.json b/docs/review/recovery-leg-source/geometry-record.json new file mode 100644 index 00000000..316509d9 --- /dev/null +++ b/docs/review/recovery-leg-source/geometry-record.json @@ -0,0 +1,82 @@ +{ + "status": "AUTHORED_GEOMETRY_GUIDE_NOT_FINAL_ART", + "poseTime": 0, + "side": "left", + "vertices": 96, + "faces": 70, + "landmarks": { + "side": "left", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 4.380158913320182, + 8.422052443133484, + 15.29854825885614 + ], + "ankle": [ + 5.0, + -4.769755155095135, + 12.498189474953392 + ], + "heel": [ + 5.0, + -10.600670798194088, + 12.47762827207222 + ], + "toe": [ + 5.0, + -2.007652614624004, + 7.362939767692515 + ], + "contactWorld": null + }, + "shapeParameters": { + "status": "authored volume guide, not inferred from painted source", + "sections": [ + [ + -10, + 1.3, + 2.5 + ], + [ + -9, + 1.8, + 3 + ], + [ + -6, + 2, + 3 + ], + [ + -3, + 2, + 2.4 + ], + [ + -1, + 1.8, + 1.5 + ], + [ + 0, + 0.6, + 0.8 + ] + ], + "length": 10, + "maximumWidth": 4, + "notes": "Length and width match the existing proposed block. Cross sections, shaft and trouser radii are newly authored guide values. No anatomy or benchmark fidelity claim." + }, + "projection": { + "elevationDegrees": 30, + "comparisonScale": 12 + }, + "hiddenAnatomyMeasured": false +} diff --git a/docs/review/recovery-leg-source/sha256.json b/docs/review/recovery-leg-source/sha256.json new file mode 100644 index 00000000..bfad661b --- /dev/null +++ b/docs/review/recovery-leg-source/sha256.json @@ -0,0 +1,14 @@ +{ + "geometry-guide.png": "64cc2ae9d852ce5c419cacab3de1dc590aea284940b1ecaef0e356cf59a67ff8", + "boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "geometry-record.json": "221c27d3f998465fec53554f2d906ccee15f30c84e5db0abb1adffb3118d20ff", + "source-duplicated-boot.png": "e404ac48aaced2617c000d4382e5f8d8dc812103cddd786c770323a7e76f83f4", + "parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "source-initial.png": "824b8b487231169b5ea0db841eb96d1959abb75337c041314002a44e427c6e42", + "pitch-correction-prompt.txt": "9ca9bbc69d53ba0030bf12bb1fca0cba08b118f5aeca0a78adb8f49bebfb5b25", + "prompt.txt": "a14f1d3a906a409f8558f6189a2cac9e90c25d4cb7ceeb0bb6b8cc3b9a8fe236", + "recovery-leg.obj": "43d89db5b0e3eecf980a619d5f0bfd7628f3be2f622377b0feee4dd1613447c2", + "README.md": "a815e4592e1941acb972fab215b1a44417515c4533366b144f39b0f74578056b", + "boot_geometry.py": "f3c65a748613054b952190c6a0ca866934e69b4241bfa782ce54d236bb23fa0d", + "block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201" +} diff --git a/docs/review/recovery-leg-source/source.zip b/docs/review/recovery-leg-source/source.zip new file mode 100644 index 00000000..e3204d61 Binary files /dev/null and b/docs/review/recovery-leg-source/source.zip differ diff --git a/docs/review/recovery-pose-correction/README.md b/docs/review/recovery-pose-correction/README.md new file mode 100644 index 00000000..0647bd6c --- /dev/null +++ b/docs/review/recovery-pose-correction/README.md @@ -0,0 +1,15 @@ +# Recovery contact-key source correction + +Status: authored key geometry, not final art, not a complete gait and not admitted to runtime. + +The prior source knee projected to (218.28, 281.77) on the 384px source canvas, while the visible raised knee-pad center is approximately (214,244). That annotation describes a visible pad, not a measured hidden anatomical joint. Prior registration kept the upper body while using a different lower-limb pose, so boot paint alone could not resolve the source mismatch. + +solve_key.py authors a replacement key with the existing hip and both 13.5-unit segment lengths. It constrains the knee's projected vertical coordinate to the approximate pad center, chooses the forward sphere/plane intersection, and places the ankle on the shin-length sphere toward the prior ankle. Knee lateral coordinate 3.55 is authored. Heel/toe follow the existing foot pitch. These are explicit proposed hidden coordinates, not reconstructed anatomy. The new projected knee is (213.3,244). No nonuniform image registration or limb stretch is used. + +The owned boot surfaces are regenerated from that pose. The full-character comparison places the mesh behind retained paint and also exposes it as an overlay. This improves knee registration but the proxy boot still needs silhouette, ankle/shaft continuity, proportions and costume-material refinement; it is not benchmark art. Painting and animated interpolation remain open. The existing block.py timing curve is deliberately not presented as updated by this single-key solve. + +Authority: SS-specs d602775 controlled-character-source.md requires reviewed source keys and explicitly authored hidden landmarks before in-betweening. This source experiment stays within that authority; no active metadata, simulation or renderer code changes. + +Reproduce with Python + NumPy + Pillow: solve_key.py, then orientation.py. Exact source files and generated key JSON are included. Segment lengths and source ownership assertions passed. Four isolated views and full-character comparison were inspected. The character artwork itself is unchanged. + +Core validation: swift test --disable-sandbox finished with exit 0; 773 tests in 109 suites passed in 405.259 seconds. The earlier plain swift test reported the same test total but exit 1 due to nested sandbox manifest initialization, so it was not counted as a clean pass. No new simulator or physical-device result is claimed. diff --git a/docs/review/recovery-pose-correction/fullpose-comparison.png b/docs/review/recovery-pose-correction/fullpose-comparison.png new file mode 100644 index 00000000..ad5cb07b Binary files /dev/null and b/docs/review/recovery-pose-correction/fullpose-comparison.png differ diff --git a/docs/review/recovery-pose-correction/hashes.json b/docs/review/recovery-pose-correction/hashes.json new file mode 100644 index 00000000..6c9673c1 --- /dev/null +++ b/docs/review/recovery-pose-correction/hashes.json @@ -0,0 +1,21 @@ +{ + "geometry-guide.png": "d078627e04a9dabf5b183456d32a58339a5b632fd53f11ae01cd276f9ba1479d", + "fullpose-proxy.png": "ba70fc75148b008fadf89782b614dbb82ed9642be598eab7ffd7e18104368dd1", + "boot-shape.json": "6fddb2735ae24158ffa42a33c89a313c32c5bc8441b72c161d5a5b46d01f18eb", + "geometry-record.json": "5d1ffe941af861e696d5932e71b4c852fe951699550cba249baa3b09dbcdaff1", + "parameters.json": "ac1cd23f161740ac40565969ab09d8c0455e6473d254b4faf60a8b3b0e4726fe", + "orientation.py": "090e7c0861de3c08840ebb8827ea444a9893b9b2461c552be2db3b179e852033", + "orientation-review.png": "65ea8a08af901db47dbe4fe0226f74ebdc5e3fdaba14e47e57bc138c18e703a5", + "fullpose-behind.png": "5bc549482bc1600be4b69c8f03f2b3a835cafd9e582950213a5aa691a4cfe686", + "recovery-leg.obj": "675f5d6137faa9506a0b90644bff1649ec7406cfb11280977b5f5f79df6ad9b6", + "key-comparison.json": "8e9cfaad07a0b49c2e4694836fb4d2ffe66fe92e556270d952c01f5d3a3927f5", + "retained-contact.png": "787c923f215c991eef0d283418ae9c01b4cb40623ea2d1a33dd31f2fa0731bfa", + "README.md": "fdabc043989e2f53de9b02399f06ca487cbf6692d133b80223d74beabdeac6d2", + "surface-ownership.json": "38364e55b5f8c3f0abd3ab321d5d85b1a4fec23070922edaaae775f61a580f91", + "fullpose-comparison.png": "4a518dd0cf2a913f9cf523c01f9c5328c37eb3bdcb4051f70d290cf6cbd1bef0", + "solve_key.py": "78adb9c35ffa0c6d85b3ebdfb812bb08c071a097d174455f2ff3649791521ac9", + "authored-key.json": "c984027d6a21d1846492abb553a838b41c925eb41c132254950eff501c1bc45d", + "recovery-leg-owned.obj": "a2e32c5957bfcace49b1628b3344a2bf31cc124ad80f7edfcbffe5ea5779ca00", + "boot_geometry.py": "5906e901969edd9d21b85b16be28b993d9b44c6a3ecea32f0e88ad5183d17823", + "block.py": "f4d142db8158077ccf9ea1a4e079f622919e82d12a8ed7743030f370b96ed201" +} diff --git a/docs/review/recovery-pose-correction/key-comparison.json b/docs/review/recovery-pose-correction/key-comparison.json new file mode 100644 index 00000000..141cd242 --- /dev/null +++ b/docs/review/recovery-pose-correction/key-comparison.json @@ -0,0 +1,85 @@ +{ + "status": "AUTHORED_CONTACT_KEY_NOT_A_CYCLE", + "approximateVisibleKneePadAnnotation": [ + 214, + 244 + ], + "annotationIsAnatomicalJointMeasurement": false, + "old": { + "side": "left", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 4.380158913320182, + 8.422052443133484, + 15.29854825885614 + ], + "ankle": [ + 5.0, + -4.769755155095135, + 12.498189474953392 + ], + "heel": [ + 5.0, + -10.600670798194088, + 12.47762827207222 + ], + "toe": [ + 5.0, + -2.007652614624004, + 7.362939767692515 + ], + "contactWorld": null + }, + "new": { + "side": "left", + "phase": 0.25, + "contact": false, + "angle": 30.76171875, + "hip": [ + 2.1, + 0, + 25.6 + ], + "knee": [ + 3.55, + 13.421110620834579, + 25.454090084911115 + ], + "ankle": [ + 5.0, + 2.4885877879157725, + 17.667727358470163 + ], + "heel": [ + 5.0, + -3.3423278551831803, + 17.64716615558899 + ], + "toe": [ + 5.0, + 5.250690328386904, + 12.532477651209286 + ], + "contactWorld": null + }, + "oldProjectedKnee": [ + 218.2809534799211, + 281.7725687302508 + ], + "newProjectedKnee": [ + 213.3, + 243.99999999999997 + ], + "segmentLengths": [ + 13.5, + 13.500000000000002 + ], + "limits": "Forward branch selected by author; foot pitch retained; hidden ankle/toe proposed, not measured. Timing curve not updated." +} diff --git a/docs/review/recovery-pose-correction/source.zip b/docs/review/recovery-pose-correction/source.zip new file mode 100644 index 00000000..af10d1ac Binary files /dev/null and b/docs/review/recovery-pose-correction/source.zip differ diff --git a/docs/review/reduced-motion-validation/README.md b/docs/review/reduced-motion-validation/README.md new file mode 100644 index 00000000..ded8259f --- /dev/null +++ b/docs/review/reduced-motion-validation/README.md @@ -0,0 +1,21 @@ +# Reduced Motion frame coverage repair — 2026-10-15 + +## Change +The candidate PlayerCandidateScene now retains the exact PresentationSnapshot used for rendering and reuses it for post-action telemetry. Previously telemetry recomputed the full snapshot for facing and clip fields, adding redundant scene projection work during playback. It now records diagnostic time and snapshot construction count. Reduced Motion validation runs three independent captures, each keeping the strict 16-frame assertion, route, source timing, travel checks and repeated-cycle checks. + +This is a review-harness repair, not a change to Reduced Motion policy, shipping animation clocks or gameplay. No source frames were removed, slowed, held, synthesized or relabelled. The prior failing capture skipped frame index 3 amid roughly 40–60 ms callbacks; the texture was available and the walking branch uses the same clip with Reduced Motion on and off. + +## Verification +- Unrecorded app run: 111 named tests / 113 executions passed; all three Reduced Motion captures displayed all 16 frames. Median/p95 callback intervals 16.67 ms; maxima 16.67–33.33 ms. +- Recording-enabled app run: 111 named tests / 113 executions passed; all three Reduced Motion captures displayed all 16 frames. Median/p95 callback intervals 16.67 ms; maxima 33.33–40.66 ms. +- Five ClipTimingTests passed (0.396 seconds). +- Unchanged core last full run: 773 tests / 109 suites passed in 832.380 seconds, prior to this harness-only change. Not rerun in full this turn. +- git diff --check passed. + +The app runs were serial, without concurrent core tests. The older failure had recording and a concurrent full core suite; the repaired runs do not isolate their individual contributions. Six successful repetitions establish the tested review condition, not immunity to arbitrary system load. Callback timestamps are SpriteKit scene-update telemetry, not physical display scanout or device performance certification. Original failed evidence remains in SS-player-clean-review/test-summary.json. + +## Evidence +serial-summary.json and recorded-summary.json are the result summaries. serial/ and recorded/ contain per-capture metrics, post-action records and comparison.json. The original new recording is ../SS-player-startup-review/reduced-motion-regression.mov. timing-tests.log contains the focused core timing result. + +## Next gate +The user reports twiggy legs. art-feedback.md records a proposed modest increase in calf/trouser and boot-shaft volume, preserving approved narrow stance, arm swing, knee-pad detail and foot-contact roots. No leg pixels changed during this timing validation. Show that refinement at normal and quarter speed before integrating the shared scene. No shipping assets admitted and no device retest performed. diff --git a/docs/review/reduced-motion-validation/art-feedback.md b/docs/review/reduced-motion-validation/art-feedback.md new file mode 100644 index 00000000..cb4e3bf3 --- /dev/null +++ b/docs/review/reduced-motion-validation/art-feedback.md @@ -0,0 +1,7 @@ +# Player leg-volume follow-up + +User feedback, 2026-10-15: the clean silhouette looks better, but the legs look a little twiggy. + +Next proposed art revision: add modest calf/trouser and boot-shaft volume to match the torso, preserving the approved narrower stance, arm swing, knee-pad detail, foot-contact roots and cycle timing. Do not widen the stance to create apparent mass. Keep heel, tongue and laces on their correct surfaces; preserve coat overlap. Compare normal and quarter speed independently at the actual gameplay scale. No volume value or hidden-surface design is approved by this note. + +This change is deliberately separate from the Reduced Motion scheduling validation. No leg pixels were changed in that validation run. Shared-scene integration remains gated on the animation result and visual review. diff --git a/docs/review/reduced-motion-validation/recorded-comparison.json b/docs/review/reduced-motion-validation/recorded-comparison.json new file mode 100644 index 00000000..8c690a9f --- /dev/null +++ b/docs/review/reduced-motion-validation/recorded-comparison.json @@ -0,0 +1,7734 @@ +[ + { + "axis": 16383, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.24921941757202148, + "frameCosts": [ + { + "renderSeconds": 0.0008139610290527344, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006608963012695312, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.00061798095703125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006990432739257812, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.005446910858154297, + "tick": 1 + }, + { + "renderSeconds": 0.0021570920944213867, + "simulationSeconds": 0.006070971488952637, + "tick": 2 + }, + { + "renderSeconds": 0.0022690296173095703, + "simulationSeconds": 0.006418943405151367, + "tick": 3 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.006227016448974609, + "tick": 4 + }, + { + "renderSeconds": 0.002813100814819336, + "simulationSeconds": 0.013739943504333496, + "tick": 6 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.007179975509643555, + "tick": 7 + }, + { + "renderSeconds": 0.003865957260131836, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0035810470581054688, + "simulationSeconds": 0.009495019912719727, + "tick": 8 + }, + { + "renderSeconds": 0.0056639909744262695, + "simulationSeconds": 0.013038992881774902, + "tick": 9 + }, + { + "renderSeconds": 0.0033990144729614258, + "simulationSeconds": 0.026600956916809082, + "tick": 12 + }, + { + "renderSeconds": 0.0031499862670898438, + "simulationSeconds": 0.019102931022644043, + "tick": 15 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0.012542963027954102, + "tick": 17 + }, + { + "renderSeconds": 0.002965092658996582, + "simulationSeconds": 0.006855964660644531, + "tick": 18 + }, + { + "renderSeconds": 0.0030781030654907227, + "simulationSeconds": 0.0062329769134521484, + "tick": 19 + }, + { + "renderSeconds": 0.002368927001953125, + "simulationSeconds": 0.016301989555358887, + "tick": 21 + }, + { + "renderSeconds": 0.0027240514755249023, + "simulationSeconds": 0.006230950355529785, + "tick": 22 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.006461977958679199, + "tick": 23 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.006695985794067383, + "tick": 24 + }, + { + "renderSeconds": 0.0029020309448242188, + "simulationSeconds": 0.007101893424987793, + "tick": 25 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.0069119930267333984, + "tick": 26 + }, + { + "renderSeconds": 0.002550959587097168, + "simulationSeconds": 0.013134002685546875, + "tick": 28 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.006420016288757324, + "tick": 29 + }, + { + "renderSeconds": 0.0028399229049682617, + "simulationSeconds": 0.006170034408569336, + "tick": 30 + }, + { + "renderSeconds": 0.0035839080810546875, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 30 + }, + { + "renderSeconds": 0.002789020538330078, + "simulationSeconds": 0.007270932197570801, + "tick": 31 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.0066100358963012695, + "tick": 32 + }, + { + "renderSeconds": 0.0034220218658447266, + "simulationSeconds": 0.006544947624206543, + "tick": 33 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.006644010543823242, + "tick": 34 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0.013276100158691406, + "tick": 36 + }, + { + "renderSeconds": 0.002659916877746582, + "simulationSeconds": 0.007835030555725098, + "tick": 37 + }, + { + "renderSeconds": 0.002646923065185547, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 37 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.006773948669433594, + "tick": 38 + }, + { + "renderSeconds": 0.0025719404220581055, + "simulationSeconds": 0.0066070556640625, + "tick": 39 + }, + { + "renderSeconds": 0.004266023635864258, + "simulationSeconds": 0.007996082305908203, + "tick": 40 + }, + { + "renderSeconds": 0.0031850337982177734, + "simulationSeconds": 0.007710933685302734, + "tick": 41 + }, + { + "renderSeconds": 0.0032570362091064453, + "simulationSeconds": 0.01506507396697998, + "tick": 43 + }, + { + "renderSeconds": 0.0036859512329101562, + "simulationSeconds": 0.007032036781311035, + "tick": 44 + }, + { + "renderSeconds": 0.002786993980407715, + "simulationSeconds": 0.014757990837097168, + "tick": 46 + }, + { + "renderSeconds": 0.0035039186477661133, + "simulationSeconds": 0.01577293872833252, + "tick": 48 + }, + { + "renderSeconds": 0.0031930208206176758, + "simulationSeconds": 0.007678985595703125, + "tick": 49 + }, + { + "renderSeconds": 0.0034499168395996094, + "simulationSeconds": 0.015372991561889648, + "tick": 51 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.012684941291809082, + "tick": 53 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.012511014938354492, + "tick": 55 + }, + { + "renderSeconds": 0.0029898881912231445, + "simulationSeconds": 0.006351947784423828, + "tick": 56 + }, + { + "renderSeconds": 0.0029979944229125977, + "simulationSeconds": 0.012637019157409668, + "tick": 58 + }, + { + "renderSeconds": 0.0026540756225585938, + "simulationSeconds": 0.006488919258117676, + "tick": 59 + }, + { + "renderSeconds": 0.0028939247131347656, + "simulationSeconds": 0.006697893142700195, + "tick": 60 + }, + { + "renderSeconds": 0.0028399229049682617, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.002630949020385742, + "simulationSeconds": 0.00625300407409668, + "tick": 61 + }, + { + "renderSeconds": 0.002878904342651367, + "simulationSeconds": 0.007162928581237793, + "tick": 62 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.007163047790527344, + "tick": 63 + }, + { + "renderSeconds": 0.0031380653381347656, + "simulationSeconds": 0.007423996925354004, + "tick": 64 + }, + { + "renderSeconds": 0.0031120777130126953, + "simulationSeconds": 0.013870954513549805, + "tick": 66 + }, + { + "renderSeconds": 0.0031090974807739258, + "simulationSeconds": 0.007189035415649414, + "tick": 67 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.0069179534912109375, + "tick": 68 + }, + { + "renderSeconds": 0.0030488967895507812, + "simulationSeconds": 0.0069730281829833984, + "tick": 69 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.007815003395080566, + "tick": 70 + }, + { + "renderSeconds": 0.0037260055541992188, + "simulationSeconds": 0.0072220563888549805, + "tick": 71 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.01462399959564209, + "tick": 73 + }, + { + "renderSeconds": 0.0036679506301879883, + "simulationSeconds": 0.007215976715087891, + "tick": 74 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0.0075490474700927734, + "tick": 75 + }, + { + "renderSeconds": 0.0031130313873291016, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.003371000289916992, + "simulationSeconds": 0.007804989814758301, + "tick": 76 + }, + { + "renderSeconds": 0.0035369396209716797, + "simulationSeconds": 0.007456064224243164, + "tick": 77 + }, + { + "renderSeconds": 0.00321197509765625, + "simulationSeconds": 0.008337974548339844, + "tick": 78 + }, + { + "renderSeconds": 0.003515005111694336, + "simulationSeconds": 0.007725954055786133, + "tick": 79 + }, + { + "renderSeconds": 0.0033550262451171875, + "simulationSeconds": 0.014622092247009277, + "tick": 81 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.006781935691833496, + "tick": 82 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.006249070167541504, + "tick": 83 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.006952047348022461, + "tick": 84 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.006229043006896973, + "tick": 85 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.006532907485961914, + "tick": 86 + }, + { + "renderSeconds": 0.002519965171813965, + "simulationSeconds": 0.01209402084350586, + "tick": 88 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.006257057189941406, + "tick": 89 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.00713193416595459, + "tick": 90 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0030269622802734375, + "simulationSeconds": 0.006704092025756836, + "tick": 91 + }, + { + "renderSeconds": 0.002933025360107422, + "simulationSeconds": 0.007050991058349609, + "tick": 92 + }, + { + "renderSeconds": 0.003243088722229004, + "simulationSeconds": 0.007733941078186035, + "tick": 93 + }, + { + "renderSeconds": 0.0036809444427490234, + "simulationSeconds": 0.007380962371826172, + "tick": 94 + }, + { + "renderSeconds": 0.002644062042236328, + "simulationSeconds": 0.01391899585723877, + "tick": 96 + }, + { + "renderSeconds": 0.0032330751419067383, + "simulationSeconds": 0.006433963775634766, + "tick": 97 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.006528019905090332, + "tick": 98 + }, + { + "renderSeconds": 0.002908945083618164, + "simulationSeconds": 0.0065250396728515625, + "tick": 99 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.006273984909057617, + "tick": 100 + }, + { + "renderSeconds": 0.0029050111770629883, + "simulationSeconds": 0.00671994686126709, + "tick": 101 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.015025019645690918, + "tick": 103 + }, + { + "renderSeconds": 0.0030089616775512695, + "simulationSeconds": 0.0075190067291259766, + "tick": 104 + }, + { + "renderSeconds": 0.0030330419540405273, + "simulationSeconds": 0.007504940032958984, + "tick": 105 + }, + { + "renderSeconds": 0.003229975700378418, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.003350973129272461, + "simulationSeconds": 0.008021950721740723, + "tick": 106 + }, + { + "renderSeconds": 0.0033730268478393555, + "simulationSeconds": 0.007535099983215332, + "tick": 107 + }, + { + "renderSeconds": 0.003144979476928711, + "simulationSeconds": 0.0075910091400146484, + "tick": 108 + }, + { + "renderSeconds": 0.0035489797592163086, + "simulationSeconds": 0.007331967353820801, + "tick": 109 + }, + { + "renderSeconds": 0.0030350685119628906, + "simulationSeconds": 0.014551043510437012, + "tick": 111 + }, + { + "renderSeconds": 0.0033910274505615234, + "simulationSeconds": 0.007302045822143555, + "tick": 112 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.006291985511779785, + "tick": 113 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0.007043957710266113, + "tick": 114 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.006251931190490723, + "tick": 115 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.006492018699645996, + "tick": 116 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.012519001960754395, + "tick": 118 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.006658077239990234, + "tick": 119 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.007351040840148926, + "tick": 120 + }, + { + "renderSeconds": 0.003394007682800293, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0033540725708007812, + "simulationSeconds": 0.0075190067291259766, + "tick": 121 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.0071800947189331055, + "tick": 122 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.006621003150939941, + "tick": 123 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.006496071815490723, + "tick": 124 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.014914989471435547, + "tick": 126 + }, + { + "renderSeconds": 0.0029609203338623047, + "simulationSeconds": 0.0070809125900268555, + "tick": 127 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0.006083011627197266, + "tick": 128 + }, + { + "renderSeconds": 0.0027850866317749023, + "simulationSeconds": 0.007295966148376465, + "tick": 129 + }, + { + "renderSeconds": 0.003126978874206543, + "simulationSeconds": 0.007122993469238281, + "tick": 130 + }, + { + "renderSeconds": 0.002975940704345703, + "simulationSeconds": 0.007348060607910156, + "tick": 131 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0.014020919799804688, + "tick": 133 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 0.007372021675109863, + "tick": 134 + }, + { + "renderSeconds": 0.0033850669860839844, + "simulationSeconds": 0.008096933364868164, + "tick": 135 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.007376909255981445, + "tick": 136 + }, + { + "renderSeconds": 0.0032639503479003906, + "simulationSeconds": 0.008520007133483887, + "tick": 137 + }, + { + "renderSeconds": 0.002933025360107422, + "simulationSeconds": 0.006724953651428223, + "tick": 138 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006788969039916992, + "tick": 139 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 0.01429593563079834, + "tick": 141 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.006187915802001953, + "tick": 142 + }, + { + "renderSeconds": 0.0024880170822143555, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0025080442428588867, + "simulationSeconds": 0.0064089298248291016, + "tick": 143 + }, + { + "renderSeconds": 0.0028649568557739258, + "simulationSeconds": 0.005825996398925781, + "tick": 144 + }, + { + "renderSeconds": 0.0025290250778198242, + "simulationSeconds": 0.006631970405578613, + "tick": 145 + }, + { + "renderSeconds": 0.0026799440383911133, + "simulationSeconds": 0.005789995193481445, + "tick": 146 + }, + { + "renderSeconds": 0.0025510787963867188, + "simulationSeconds": 0.012295961380004883, + "tick": 148 + }, + { + "renderSeconds": 0.003408074378967285, + "simulationSeconds": 0.006740927696228027, + "tick": 149 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.007284998893737793, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03496029166853987, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 212, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.00876307487487793, + "preparationSeconds": 0.5469779968261719, + "reducedMotion": false, + "renderSeconds": 0.4097926616668701, + "repetition": 0, + "scenePreparationSeconds": 0.18821799755096436, + "simulationSeconds": 1.054547905921936, + "snapshotBuildCount": 139, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.58241668320261, + "callbackMaxMS": 52.04045833670534 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.244215726852417, + "frameCosts": [ + { + "renderSeconds": 0.0009289979934692383, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001139998435974121, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.000782012939453125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009530782699584961, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.005568027496337891, + "simulationSeconds": 0.01948404312133789, + "tick": 2 + }, + { + "renderSeconds": 0.0043659210205078125, + "simulationSeconds": 0.026178956031799316, + "tick": 4 + }, + { + "renderSeconds": 0.003549933433532715, + "simulationSeconds": 0.021361947059631348, + "tick": 7 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.02104198932647705, + "tick": 10 + }, + { + "renderSeconds": 0.0026150941848754883, + "simulationSeconds": 0.012807965278625488, + "tick": 12 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.01382601261138916, + "tick": 14 + }, + { + "renderSeconds": 0.0032039880752563477, + "simulationSeconds": 0.006479978561401367, + "tick": 15 + }, + { + "renderSeconds": 0.0029730796813964844, + "simulationSeconds": 1.9073486328125e-06, + "tick": 15 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.012830018997192383, + "tick": 17 + }, + { + "renderSeconds": 0.002976059913635254, + "simulationSeconds": 0.00622403621673584, + "tick": 18 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.006165981292724609, + "tick": 19 + }, + { + "renderSeconds": 0.0037610530853271484, + "simulationSeconds": 0.00789499282836914, + "tick": 20 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 0.007241964340209961, + "tick": 21 + }, + { + "renderSeconds": 0.003042936325073242, + "simulationSeconds": 0.015137076377868652, + "tick": 23 + }, + { + "renderSeconds": 0.0031280517578125, + "simulationSeconds": 0, + "tick": 23 + }, + { + "renderSeconds": 0.003280043601989746, + "simulationSeconds": 0.016026020050048828, + "tick": 25 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.00733792781829834, + "tick": 26 + }, + { + "renderSeconds": 0.002917051315307617, + "simulationSeconds": 0.012840032577514648, + "tick": 28 + }, + { + "renderSeconds": 0.003213047981262207, + "simulationSeconds": 0.006181955337524414, + "tick": 29 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006616950035095215, + "tick": 30 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 30 + }, + { + "renderSeconds": 0.0025309324264526367, + "simulationSeconds": 0.013013005256652832, + "tick": 32 + }, + { + "renderSeconds": 0.002474069595336914, + "simulationSeconds": 0.006525993347167969, + "tick": 33 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.007254958152770996, + "tick": 34 + }, + { + "renderSeconds": 0.0027979612350463867, + "simulationSeconds": 0.007009029388427734, + "tick": 35 + }, + { + "renderSeconds": 0.003780961036682129, + "simulationSeconds": 0.01115107536315918, + "tick": 36 + }, + { + "renderSeconds": 0.0036870241165161133, + "simulationSeconds": 0.009042978286743164, + "tick": 37 + }, + { + "renderSeconds": 0.004266023635864258, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.004204988479614258, + "simulationSeconds": 0.008749008178710938, + "tick": 38 + }, + { + "renderSeconds": 0.0035589933395385742, + "simulationSeconds": 0.01792299747467041, + "tick": 40 + }, + { + "renderSeconds": 0.0034040212631225586, + "simulationSeconds": 0.01424098014831543, + "tick": 42 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.013252973556518555, + "tick": 44 + }, + { + "renderSeconds": 0.003376007080078125, + "simulationSeconds": 0.006971955299377441, + "tick": 45 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.012490987777709961, + "tick": 47 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.006331086158752441, + "tick": 48 + }, + { + "renderSeconds": 0.0027240514755249023, + "simulationSeconds": 0.006266951560974121, + "tick": 49 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.008022069931030273, + "tick": 50 + }, + { + "renderSeconds": 0.004011988639831543, + "simulationSeconds": 0.006088972091674805, + "tick": 51 + }, + { + "renderSeconds": 0.0028009414672851562, + "simulationSeconds": 0.0066879987716674805, + "tick": 52 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.006249070167541504, + "tick": 53 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.012480974197387695, + "tick": 55 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.007279038429260254, + "tick": 56 + }, + { + "renderSeconds": 0.0036660432815551758, + "simulationSeconds": 0.008986949920654297, + "tick": 57 + }, + { + "renderSeconds": 0.0036649703979492188, + "simulationSeconds": 0.009680986404418945, + "tick": 58 + }, + { + "renderSeconds": 0.0038470029830932617, + "simulationSeconds": 0.009320974349975586, + "tick": 59 + }, + { + "renderSeconds": 0.003515958786010742, + "simulationSeconds": 0.008836984634399414, + "tick": 60 + }, + { + "renderSeconds": 0.0028760433197021484, + "simulationSeconds": 0.014398932456970215, + "tick": 62 + }, + { + "renderSeconds": 0.00315701961517334, + "simulationSeconds": 0.007583022117614746, + "tick": 63 + }, + { + "renderSeconds": 0.003134012222290039, + "simulationSeconds": 0.007291078567504883, + "tick": 64 + }, + { + "renderSeconds": 0.002601027488708496, + "simulationSeconds": 0.013015985488891602, + "tick": 66 + }, + { + "renderSeconds": 0.003329038619995117, + "simulationSeconds": 0.0061370134353637695, + "tick": 67 + }, + { + "renderSeconds": 0.0029751062393188477, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.0060269832611083984, + "tick": 68 + }, + { + "renderSeconds": 0.0026929378509521484, + "simulationSeconds": 0.013267993927001953, + "tick": 70 + }, + { + "renderSeconds": 0.003084897994995117, + "simulationSeconds": 0.006717085838317871, + "tick": 71 + }, + { + "renderSeconds": 0.004107952117919922, + "simulationSeconds": 0.006628990173339844, + "tick": 72 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.0065920352935791016, + "tick": 73 + }, + { + "renderSeconds": 0.0037409067153930664, + "simulationSeconds": 0.006751060485839844, + "tick": 74 + }, + { + "renderSeconds": 0.0024750232696533203, + "simulationSeconds": 0.006206035614013672, + "tick": 75 + }, + { + "renderSeconds": 0.003031015396118164, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002505064010620117, + "simulationSeconds": 0.012351036071777344, + "tick": 77 + }, + { + "renderSeconds": 0.002841949462890625, + "simulationSeconds": 0.0068520307540893555, + "tick": 78 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.006704092025756836, + "tick": 79 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.0070879459381103516, + "tick": 80 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.006006002426147461, + "tick": 81 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.007769107818603516, + "tick": 82 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006595015525817871, + "tick": 83 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.012477993965148926, + "tick": 85 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.006667017936706543, + "tick": 86 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.00640106201171875, + "tick": 87 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.006391048431396484, + "tick": 88 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0.0063179731369018555, + "tick": 89 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.0069730281829833984, + "tick": 90 + }, + { + "renderSeconds": 0.0028209686279296875, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.002891063690185547, + "simulationSeconds": 0.012773990631103516, + "tick": 92 + }, + { + "renderSeconds": 0.004117012023925781, + "simulationSeconds": 0.00707697868347168, + "tick": 93 + }, + { + "renderSeconds": 0.003236055374145508, + "simulationSeconds": 0.007125973701477051, + "tick": 94 + }, + { + "renderSeconds": 0.003735065460205078, + "simulationSeconds": 0.007655978202819824, + "tick": 95 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.006320953369140625, + "tick": 96 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 0.007089972496032715, + "tick": 97 + }, + { + "renderSeconds": 0.0025920867919921875, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.003225088119506836, + "simulationSeconds": 0.0063430070877075195, + "tick": 98 + }, + { + "renderSeconds": 0.0025600194931030273, + "simulationSeconds": 0.012855052947998047, + "tick": 100 + }, + { + "renderSeconds": 0.0033010244369506836, + "simulationSeconds": 0.006817936897277832, + "tick": 101 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.0072890520095825195, + "tick": 102 + }, + { + "renderSeconds": 0.0031369924545288086, + "simulationSeconds": 0.0070819854736328125, + "tick": 103 + }, + { + "renderSeconds": 0.0034230947494506836, + "simulationSeconds": 0.0069959163665771484, + "tick": 104 + }, + { + "renderSeconds": 0.002868056297302246, + "simulationSeconds": 0.007876992225646973, + "tick": 105 + }, + { + "renderSeconds": 0.003176093101501465, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.0037490129470825195, + "simulationSeconds": 0.017506003379821777, + "tick": 107 + }, + { + "renderSeconds": 0.0034140348434448242, + "simulationSeconds": 0.008889079093933105, + "tick": 108 + }, + { + "renderSeconds": 0.00315701961517334, + "simulationSeconds": 0.016038060188293457, + "tick": 110 + }, + { + "renderSeconds": 0.004036068916320801, + "simulationSeconds": 0.007714986801147461, + "tick": 111 + }, + { + "renderSeconds": 0.0032559633255004883, + "simulationSeconds": 0.007979035377502441, + "tick": 112 + }, + { + "renderSeconds": 0.0033140182495117188, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.003042936325073242, + "simulationSeconds": 0.007848978042602539, + "tick": 113 + }, + { + "renderSeconds": 0.0030279159545898438, + "simulationSeconds": 0.0147169828414917, + "tick": 115 + }, + { + "renderSeconds": 0.002994060516357422, + "simulationSeconds": 0.012498021125793457, + "tick": 117 + }, + { + "renderSeconds": 0.0029369592666625977, + "simulationSeconds": 0.006696105003356934, + "tick": 118 + }, + { + "renderSeconds": 0.00324404239654541, + "simulationSeconds": 0.00636899471282959, + "tick": 119 + }, + { + "renderSeconds": 0.0030400753021240234, + "simulationSeconds": 0.006374001502990723, + "tick": 120 + }, + { + "renderSeconds": 0.002726912498474121, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.002710103988647461, + "simulationSeconds": 0.012455940246582031, + "tick": 122 + }, + { + "renderSeconds": 0.003086090087890625, + "simulationSeconds": 0.006953001022338867, + "tick": 123 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.00727999210357666, + "tick": 124 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 0.007326960563659668, + "tick": 125 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.007275104522705078, + "tick": 126 + }, + { + "renderSeconds": 0.0027799606323242188, + "simulationSeconds": 0.007333040237426758, + "tick": 127 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.007176041603088379, + "tick": 128 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0.014872074127197266, + "tick": 130 + }, + { + "renderSeconds": 0.003605961799621582, + "simulationSeconds": 0.007572054862976074, + "tick": 131 + }, + { + "renderSeconds": 0.00371706485748291, + "simulationSeconds": 0.008427977561950684, + "tick": 132 + }, + { + "renderSeconds": 0.0026750564575195312, + "simulationSeconds": 0.007195949554443359, + "tick": 133 + }, + { + "renderSeconds": 0.003448963165283203, + "simulationSeconds": 0.00728297233581543, + "tick": 134 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.007318019866943359, + "tick": 135 + }, + { + "renderSeconds": 0.0027549266815185547, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002595067024230957, + "simulationSeconds": 0.01300203800201416, + "tick": 137 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.006007075309753418, + "tick": 138 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.006322026252746582, + "tick": 139 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.006204962730407715, + "tick": 140 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.008177995681762695, + "tick": 141 + }, + { + "renderSeconds": 0.0032280683517456055, + "simulationSeconds": 0.006882905960083008, + "tick": 142 + }, + { + "renderSeconds": 0.0032099485397338867, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0029910802841186523, + "simulationSeconds": 0.0068929195404052734, + "tick": 143 + }, + { + "renderSeconds": 0.002762913703918457, + "simulationSeconds": 0.015578985214233398, + "tick": 145 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.006246089935302734, + "tick": 146 + }, + { + "renderSeconds": 0.002660989761352539, + "simulationSeconds": 0.0064879655838012695, + "tick": 147 + }, + { + "renderSeconds": 0.0032619237899780273, + "simulationSeconds": 0.0063239336013793945, + "tick": 148 + }, + { + "renderSeconds": 0.0032979249954223633, + "simulationSeconds": 0.0062410831451416016, + "tick": 149 + }, + { + "renderSeconds": 0.002705097198486328, + "simulationSeconds": 0.006440997123718262, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.038219874986680225, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 208, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.0070493221282958984, + "preparationSeconds": 0.5406920909881592, + "reducedMotion": false, + "renderSeconds": 0.41687119007110596, + "repetition": 2, + "scenePreparationSeconds": 0.18046903610229492, + "simulationSeconds": 1.0739643573760986, + "snapshotBuildCount": 137, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333332557231, + "callbackMaxMS": 55.02762499963865 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2576568126678467, + "frameCosts": [ + { + "renderSeconds": 0.0008679628372192383, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0010470151901245117, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0008360147476196289, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011470317840576172, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0030069351196289062, + "simulationSeconds": 0.005318999290466309, + "tick": 1 + }, + { + "renderSeconds": 0.002713918685913086, + "simulationSeconds": 0.006268024444580078, + "tick": 2 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.006520986557006836, + "tick": 3 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.006503939628601074, + "tick": 4 + }, + { + "renderSeconds": 0.0033550262451171875, + "simulationSeconds": 0.006363987922668457, + "tick": 5 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.0063849687576293945, + "tick": 6 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.0066089630126953125, + "tick": 7 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.006896018981933594, + "tick": 8 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.00630497932434082, + "tick": 9 + }, + { + "renderSeconds": 0.0028580427169799805, + "simulationSeconds": 0.0065310001373291016, + "tick": 10 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.006168007850646973, + "tick": 11 + }, + { + "renderSeconds": 0.0034749507904052734, + "simulationSeconds": 0.007683992385864258, + "tick": 12 + }, + { + "renderSeconds": 0.0033829212188720703, + "simulationSeconds": 0.0075730085372924805, + "tick": 13 + }, + { + "renderSeconds": 0.0032900571823120117, + "simulationSeconds": 0.015344977378845215, + "tick": 15 + }, + { + "renderSeconds": 0.003459930419921875, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.003174901008605957, + "simulationSeconds": 0.00722503662109375, + "tick": 16 + }, + { + "renderSeconds": 0.0034710168838500977, + "simulationSeconds": 0.006659984588623047, + "tick": 17 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.006703019142150879, + "tick": 18 + }, + { + "renderSeconds": 0.0030090808868408203, + "simulationSeconds": 0.007360935211181641, + "tick": 19 + }, + { + "renderSeconds": 0.0033129453659057617, + "simulationSeconds": 0.006628990173339844, + "tick": 20 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.013100028038024902, + "tick": 22 + }, + { + "renderSeconds": 0.0033959150314331055, + "simulationSeconds": 0.007210969924926758, + "tick": 23 + }, + { + "renderSeconds": 0.0028269290924072266, + "simulationSeconds": 0.00631403923034668, + "tick": 24 + }, + { + "renderSeconds": 0.0032039880752563477, + "simulationSeconds": 0.0066100358963012695, + "tick": 25 + }, + { + "renderSeconds": 0.0031849145889282227, + "simulationSeconds": 0.0073130130767822266, + "tick": 26 + }, + { + "renderSeconds": 0.003641963005065918, + "simulationSeconds": 0.0077561140060424805, + "tick": 27 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006819009780883789, + "tick": 28 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.015867948532104492, + "tick": 30 + }, + { + "renderSeconds": 0.0027800798416137695, + "simulationSeconds": 0.01320195198059082, + "tick": 32 + }, + { + "renderSeconds": 0.0028901100158691406, + "simulationSeconds": 0.013721942901611328, + "tick": 34 + }, + { + "renderSeconds": 0.0027180910110473633, + "simulationSeconds": 0.006412029266357422, + "tick": 35 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.005995988845825195, + "tick": 36 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.006237030029296875, + "tick": 37 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.006106972694396973, + "tick": 38 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.007695913314819336, + "tick": 39 + }, + { + "renderSeconds": 0.0037679672241210938, + "simulationSeconds": 0.007876038551330566, + "tick": 40 + }, + { + "renderSeconds": 0.0037859678268432617, + "simulationSeconds": 0.00940704345703125, + "tick": 41 + }, + { + "renderSeconds": 0.0037779808044433594, + "simulationSeconds": 0.008931994438171387, + "tick": 42 + }, + { + "renderSeconds": 0.003941059112548828, + "simulationSeconds": 0.008633017539978027, + "tick": 43 + }, + { + "renderSeconds": 0.0035899877548217773, + "simulationSeconds": 0.01842796802520752, + "tick": 45 + }, + { + "renderSeconds": 0.0030480623245239258, + "simulationSeconds": 0.016440987586975098, + "tick": 47 + }, + { + "renderSeconds": 0.003721952438354492, + "simulationSeconds": 0.007380962371826172, + "tick": 48 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.0067909955978393555, + "tick": 49 + }, + { + "renderSeconds": 0.0029469728469848633, + "simulationSeconds": 0.006528019905090332, + "tick": 50 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 0.006431937217712402, + "tick": 51 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0.006249070167541504, + "tick": 52 + }, + { + "renderSeconds": 0.0029069185256958008, + "simulationSeconds": 0.006299018859863281, + "tick": 53 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.006785035133361816, + "tick": 54 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.006411075592041016, + "tick": 55 + }, + { + "renderSeconds": 0.0034650564193725586, + "simulationSeconds": 0.006731986999511719, + "tick": 56 + }, + { + "renderSeconds": 0.00321197509765625, + "simulationSeconds": 0.008118033409118652, + "tick": 57 + }, + { + "renderSeconds": 0.0035229921340942383, + "simulationSeconds": 0.00739598274230957, + "tick": 58 + }, + { + "renderSeconds": 0.0031069517135620117, + "simulationSeconds": 0.0131760835647583, + "tick": 60 + }, + { + "renderSeconds": 0.00318300724029541, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 60 + }, + { + "renderSeconds": 0.0033059120178222656, + "simulationSeconds": 0.007585048675537109, + "tick": 61 + }, + { + "renderSeconds": 0.003824949264526367, + "simulationSeconds": 0.006716012954711914, + "tick": 62 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.006564974784851074, + "tick": 63 + }, + { + "renderSeconds": 0.0030390024185180664, + "simulationSeconds": 0.0062628984451293945, + "tick": 64 + }, + { + "renderSeconds": 0.0029380321502685547, + "simulationSeconds": 0.006749987602233887, + "tick": 65 + }, + { + "renderSeconds": 0.003722071647644043, + "simulationSeconds": 0.0074700117111206055, + "tick": 66 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.008006095886230469, + "tick": 67 + }, + { + "renderSeconds": 0.0035129785537719727, + "simulationSeconds": 0.007104039192199707, + "tick": 68 + }, + { + "renderSeconds": 0.003159046173095703, + "simulationSeconds": 0.00754702091217041, + "tick": 69 + }, + { + "renderSeconds": 0.003551006317138672, + "simulationSeconds": 0.0073299407958984375, + "tick": 70 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.0074149370193481445, + "tick": 71 + }, + { + "renderSeconds": 0.003625035285949707, + "simulationSeconds": 0.007884979248046875, + "tick": 72 + }, + { + "renderSeconds": 0.0032689571380615234, + "simulationSeconds": 0.007351994514465332, + "tick": 73 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.015259027481079102, + "tick": 75 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0.015222907066345215, + "tick": 77 + }, + { + "renderSeconds": 0.00335693359375, + "simulationSeconds": 0.007071018218994141, + "tick": 78 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0.0066258907318115234, + "tick": 79 + }, + { + "renderSeconds": 0.002919912338256836, + "simulationSeconds": 0.00636899471282959, + "tick": 80 + }, + { + "renderSeconds": 0.002865910530090332, + "simulationSeconds": 0.006259918212890625, + "tick": 81 + }, + { + "renderSeconds": 0.003291010856628418, + "simulationSeconds": 0.006945013999938965, + "tick": 82 + }, + { + "renderSeconds": 0.0032199621200561523, + "simulationSeconds": 0.006332993507385254, + "tick": 83 + }, + { + "renderSeconds": 0.003186941146850586, + "simulationSeconds": 0.006084918975830078, + "tick": 84 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.0065860748291015625, + "tick": 85 + }, + { + "renderSeconds": 0.003319978713989258, + "simulationSeconds": 0.006873965263366699, + "tick": 86 + }, + { + "renderSeconds": 0.003114938735961914, + "simulationSeconds": 0.006734967231750488, + "tick": 87 + }, + { + "renderSeconds": 0.0029990673065185547, + "simulationSeconds": 0.0062770843505859375, + "tick": 88 + }, + { + "renderSeconds": 0.0032030344009399414, + "simulationSeconds": 0.013133049011230469, + "tick": 90 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.0036150217056274414, + "simulationSeconds": 0.00761103630065918, + "tick": 91 + }, + { + "renderSeconds": 0.003256082534790039, + "simulationSeconds": 0.007156968116760254, + "tick": 92 + }, + { + "renderSeconds": 0.00335693359375, + "simulationSeconds": 0.0077179670333862305, + "tick": 93 + }, + { + "renderSeconds": 0.0041790008544921875, + "simulationSeconds": 0.0073740482330322266, + "tick": 94 + }, + { + "renderSeconds": 0.00336301326751709, + "simulationSeconds": 0.0070879459381103516, + "tick": 95 + }, + { + "renderSeconds": 0.0041429996490478516, + "simulationSeconds": 0.008118987083435059, + "tick": 96 + }, + { + "renderSeconds": 0.0029469728469848633, + "simulationSeconds": 0.006425976753234863, + "tick": 97 + }, + { + "renderSeconds": 0.003297090530395508, + "simulationSeconds": 0.006708979606628418, + "tick": 98 + }, + { + "renderSeconds": 0.0029529333114624023, + "simulationSeconds": 0.006925106048583984, + "tick": 99 + }, + { + "renderSeconds": 0.0029189586639404297, + "simulationSeconds": 0.006682991981506348, + "tick": 100 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.006777048110961914, + "tick": 101 + }, + { + "renderSeconds": 0.002901911735534668, + "simulationSeconds": 0.006994962692260742, + "tick": 102 + }, + { + "renderSeconds": 0.0032510757446289062, + "simulationSeconds": 0.007346034049987793, + "tick": 103 + }, + { + "renderSeconds": 0.0031790733337402344, + "simulationSeconds": 0.01479196548461914, + "tick": 105 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.01511693000793457, + "tick": 107 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.01332402229309082, + "tick": 109 + }, + { + "renderSeconds": 0.0032520294189453125, + "simulationSeconds": 0.006577014923095703, + "tick": 110 + }, + { + "renderSeconds": 0.002913951873779297, + "simulationSeconds": 0.007194995880126953, + "tick": 111 + }, + { + "renderSeconds": 0.0033750534057617188, + "simulationSeconds": 0.0063179731369018555, + "tick": 112 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.007134079933166504, + "tick": 113 + }, + { + "renderSeconds": 0.003052949905395508, + "simulationSeconds": 0.006319999694824219, + "tick": 114 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.006525993347167969, + "tick": 115 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.0072710514068603516, + "tick": 116 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 0.007658958435058594, + "tick": 117 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.00725400447845459, + "tick": 118 + }, + { + "renderSeconds": 0.003053903579711914, + "simulationSeconds": 0.015302062034606934, + "tick": 120 + }, + { + "renderSeconds": 0.003303050994873047, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003392934799194336, + "simulationSeconds": 0.0076770782470703125, + "tick": 121 + }, + { + "renderSeconds": 0.0034279823303222656, + "simulationSeconds": 0.007253050804138184, + "tick": 122 + }, + { + "renderSeconds": 0.0032470226287841797, + "simulationSeconds": 0.007559061050415039, + "tick": 123 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.006713986396789551, + "tick": 124 + }, + { + "renderSeconds": 0.0027239322662353516, + "simulationSeconds": 0.007653951644897461, + "tick": 125 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0.00647890567779541, + "tick": 126 + }, + { + "renderSeconds": 0.003258943557739258, + "simulationSeconds": 0.007678985595703125, + "tick": 127 + }, + { + "renderSeconds": 0.0030590295791625977, + "simulationSeconds": 0.007379055023193359, + "tick": 128 + }, + { + "renderSeconds": 0.0036600828170776367, + "simulationSeconds": 0.007737994194030762, + "tick": 129 + }, + { + "renderSeconds": 0.003423929214477539, + "simulationSeconds": 0.006233096122741699, + "tick": 130 + }, + { + "renderSeconds": 0.002619028091430664, + "simulationSeconds": 0.006904006004333496, + "tick": 131 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0.006062030792236328, + "tick": 132 + }, + { + "renderSeconds": 0.0032581090927124023, + "simulationSeconds": 0.006987929344177246, + "tick": 133 + }, + { + "renderSeconds": 0.0029829740524291992, + "simulationSeconds": 0.013222932815551758, + "tick": 135 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.0032269954681396484, + "simulationSeconds": 0.007375955581665039, + "tick": 136 + }, + { + "renderSeconds": 0.00344693660736084, + "simulationSeconds": 0.007665038108825684, + "tick": 137 + }, + { + "renderSeconds": 0.003435969352722168, + "simulationSeconds": 0.006763100624084473, + "tick": 138 + }, + { + "renderSeconds": 0.0038160085678100586, + "simulationSeconds": 0.007094979286193848, + "tick": 139 + }, + { + "renderSeconds": 0.003549933433532715, + "simulationSeconds": 0.006853938102722168, + "tick": 140 + }, + { + "renderSeconds": 0.003914952278137207, + "simulationSeconds": 0.007831931114196777, + "tick": 141 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.006587982177734375, + "tick": 142 + }, + { + "renderSeconds": 0.0028650760650634766, + "simulationSeconds": 0.006832003593444824, + "tick": 143 + }, + { + "renderSeconds": 0.0026029348373413086, + "simulationSeconds": 0.006101012229919434, + "tick": 144 + }, + { + "renderSeconds": 0.0031690597534179688, + "simulationSeconds": 0.007758021354675293, + "tick": 145 + }, + { + "renderSeconds": 0.0035619735717773438, + "simulationSeconds": 0.006838083267211914, + "tick": 146 + }, + { + "renderSeconds": 0.003126978874206543, + "simulationSeconds": 0.0073310136795043945, + "tick": 147 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006065011024475098, + "tick": 148 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.014598965644836426, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04749975001323037, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 218, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.008580565452575684, + "preparationSeconds": 0.6123360395431519, + "reducedMotion": false, + "renderSeconds": 0.43891382217407227, + "repetition": 1, + "scenePreparationSeconds": 0.24041199684143066, + "simulationSeconds": 1.0581530332565308, + "snapshotBuildCount": 142, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333335467614, + "callbackMaxMS": 41.79195832693949 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.24934649467468262, + "frameCosts": [ + { + "renderSeconds": 0.0010010004043579102, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001363992691040039, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008550882339477539, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008100271224975586, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.00321805477142334, + "simulationSeconds": 0.0059659481048583984, + "tick": 1 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.0065310001373291016, + "tick": 2 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.0065500736236572266, + "tick": 3 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.0064879655838012695, + "tick": 4 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.013836979866027832, + "tick": 6 + }, + { + "renderSeconds": 0.0030220746994018555, + "simulationSeconds": 0.007692933082580566, + "tick": 7 + }, + { + "renderSeconds": 0.0032329559326171875, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0043010711669921875, + "simulationSeconds": 0.009162068367004395, + "tick": 8 + }, + { + "renderSeconds": 0.003860950469970703, + "simulationSeconds": 0.010498046875, + "tick": 9 + }, + { + "renderSeconds": 0.0031499862670898438, + "simulationSeconds": 0.014407038688659668, + "tick": 11 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.0073500871658325195, + "tick": 12 + }, + { + "renderSeconds": 0.0031179189682006836, + "simulationSeconds": 0.014662027359008789, + "tick": 14 + }, + { + "renderSeconds": 0.0031900405883789062, + "simulationSeconds": 0.01457202434539795, + "tick": 16 + }, + { + "renderSeconds": 0.002846956253051758, + "simulationSeconds": 0.014503002166748047, + "tick": 18 + }, + { + "renderSeconds": 0.002656102180480957, + "simulationSeconds": 0.007523894309997559, + "tick": 19 + }, + { + "renderSeconds": 0.0030870437622070312, + "simulationSeconds": 0.012939929962158203, + "tick": 21 + }, + { + "renderSeconds": 0.002532958984375, + "simulationSeconds": 0.00662994384765625, + "tick": 22 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 0.006952047348022461, + "tick": 23 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0.0066100358963012695, + "tick": 24 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006635069847106934, + "tick": 25 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.00810098648071289, + "tick": 26 + }, + { + "renderSeconds": 0.0030019283294677734, + "simulationSeconds": 0.007565021514892578, + "tick": 27 + }, + { + "renderSeconds": 0.0044269561767578125, + "simulationSeconds": 0.01900005340576172, + "tick": 29 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.014469027519226074, + "tick": 31 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.0070580244064331055, + "tick": 32 + }, + { + "renderSeconds": 0.002929091453552246, + "simulationSeconds": 0.006528973579406738, + "tick": 33 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.006043910980224609, + "tick": 34 + }, + { + "renderSeconds": 0.0027080774307250977, + "simulationSeconds": 0.012857913970947266, + "tick": 36 + }, + { + "renderSeconds": 0.0037230253219604492, + "simulationSeconds": 0.00731205940246582, + "tick": 37 + }, + { + "renderSeconds": 0.0032410621643066406, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.007006049156188965, + "tick": 38 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.0069539546966552734, + "tick": 39 + }, + { + "renderSeconds": 0.003692030906677246, + "simulationSeconds": 0.008193016052246094, + "tick": 40 + }, + { + "renderSeconds": 0.003847956657409668, + "simulationSeconds": 0.009142041206359863, + "tick": 41 + }, + { + "renderSeconds": 0.004104018211364746, + "simulationSeconds": 0.009691953659057617, + "tick": 42 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.025892019271850586, + "tick": 45 + }, + { + "renderSeconds": 0.002957940101623535, + "simulationSeconds": 0.014011979103088379, + "tick": 47 + }, + { + "renderSeconds": 0.0026750564575195312, + "simulationSeconds": 0.01332700252532959, + "tick": 49 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.013404011726379395, + "tick": 51 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.007156014442443848, + "tick": 52 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0024449825286865234, + "simulationSeconds": 0.007730007171630859, + "tick": 53 + }, + { + "renderSeconds": 0.003041982650756836, + "simulationSeconds": 0.006379961967468262, + "tick": 54 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.00645899772644043, + "tick": 55 + }, + { + "renderSeconds": 0.0031670331954956055, + "simulationSeconds": 0.007030010223388672, + "tick": 56 + }, + { + "renderSeconds": 0.003298044204711914, + "simulationSeconds": 0.007580995559692383, + "tick": 57 + }, + { + "renderSeconds": 0.0031369924545288086, + "simulationSeconds": 0.014878034591674805, + "tick": 59 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.007483959197998047, + "tick": 60 + }, + { + "renderSeconds": 0.003497004508972168, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0033979415893554688, + "simulationSeconds": 0.007580995559692383, + "tick": 61 + }, + { + "renderSeconds": 0.0035740137100219727, + "simulationSeconds": 0.0074340105056762695, + "tick": 62 + }, + { + "renderSeconds": 0.003733992576599121, + "simulationSeconds": 0.007287025451660156, + "tick": 63 + }, + { + "renderSeconds": 0.0032351016998291016, + "simulationSeconds": 0.00651395320892334, + "tick": 64 + }, + { + "renderSeconds": 0.0025099515914916992, + "simulationSeconds": 0.013316035270690918, + "tick": 66 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.00660097599029541, + "tick": 67 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 0.006286025047302246, + "tick": 68 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0.007520079612731934, + "tick": 69 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.007305026054382324, + "tick": 70 + }, + { + "renderSeconds": 0.0032889842987060547, + "simulationSeconds": 0.007177948951721191, + "tick": 71 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 0.007463932037353516, + "tick": 72 + }, + { + "renderSeconds": 0.003569960594177246, + "simulationSeconds": 0.015022039413452148, + "tick": 74 + }, + { + "renderSeconds": 0.0037980079650878906, + "simulationSeconds": 0.007498025894165039, + "tick": 75 + }, + { + "renderSeconds": 0.003229975700378418, + "simulationSeconds": 9.5367431640625e-07, + "tick": 75 + }, + { + "renderSeconds": 0.0031290054321289062, + "simulationSeconds": 0.00642704963684082, + "tick": 76 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.007436037063598633, + "tick": 77 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.007588028907775879, + "tick": 78 + }, + { + "renderSeconds": 0.002849102020263672, + "simulationSeconds": 0.0066329240798950195, + "tick": 79 + }, + { + "renderSeconds": 0.0025550127029418945, + "simulationSeconds": 0.012386083602905273, + "tick": 81 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006350994110107422, + "tick": 82 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0032030344009399414, + "simulationSeconds": 0.007853984832763672, + "tick": 83 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.007585048675537109, + "tick": 84 + }, + { + "renderSeconds": 0.003253936767578125, + "simulationSeconds": 0.007874011993408203, + "tick": 85 + }, + { + "renderSeconds": 0.003726959228515625, + "simulationSeconds": 0.009073019027709961, + "tick": 86 + }, + { + "renderSeconds": 0.0035369396209716797, + "simulationSeconds": 0.00943601131439209, + "tick": 87 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.018007993698120117, + "tick": 89 + }, + { + "renderSeconds": 0.003242969512939453, + "simulationSeconds": 0.015823960304260254, + "tick": 91 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.013894915580749512, + "tick": 93 + }, + { + "renderSeconds": 0.0033669471740722656, + "simulationSeconds": 0.006716012954711914, + "tick": 94 + }, + { + "renderSeconds": 0.002454996109008789, + "simulationSeconds": 0.012037992477416992, + "tick": 96 + }, + { + "renderSeconds": 0.00268399715423584, + "simulationSeconds": 0.007817983627319336, + "tick": 97 + }, + { + "renderSeconds": 0.003268003463745117, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 97 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006144046783447266, + "tick": 98 + }, + { + "renderSeconds": 0.003229975700378418, + "simulationSeconds": 0.006142973899841309, + "tick": 99 + }, + { + "renderSeconds": 0.0031189918518066406, + "simulationSeconds": 0.007366061210632324, + "tick": 100 + }, + { + "renderSeconds": 0.0033609867095947266, + "simulationSeconds": 0.0075070858001708984, + "tick": 101 + }, + { + "renderSeconds": 0.0031189918518066406, + "simulationSeconds": 0.0074310302734375, + "tick": 102 + }, + { + "renderSeconds": 0.0036209821701049805, + "simulationSeconds": 0.016268014907836914, + "tick": 104 + }, + { + "renderSeconds": 0.003800034523010254, + "simulationSeconds": 0.0072220563888549805, + "tick": 105 + }, + { + "renderSeconds": 0.003462076187133789, + "simulationSeconds": 0.007182955741882324, + "tick": 106 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.007335066795349121, + "tick": 107 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.0077190399169921875, + "tick": 108 + }, + { + "renderSeconds": 0.0035380125045776367, + "simulationSeconds": 0.0069969892501831055, + "tick": 109 + }, + { + "renderSeconds": 0.0036100149154663086, + "simulationSeconds": 0.01545095443725586, + "tick": 111 + }, + { + "renderSeconds": 0.0034619569778442383, + "simulationSeconds": 0.007781028747558594, + "tick": 112 + }, + { + "renderSeconds": 0.0031659603118896484, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 0.00716400146484375, + "tick": 113 + }, + { + "renderSeconds": 0.0034459829330444336, + "simulationSeconds": 0.009413003921508789, + "tick": 114 + }, + { + "renderSeconds": 0.0041959285736083984, + "simulationSeconds": 0.008857965469360352, + "tick": 115 + }, + { + "renderSeconds": 0.0034339427947998047, + "simulationSeconds": 0.007126927375793457, + "tick": 116 + }, + { + "renderSeconds": 0.003278970718383789, + "simulationSeconds": 0.023483991622924805, + "tick": 119 + }, + { + "renderSeconds": 0.003204941749572754, + "simulationSeconds": 0.014245033264160156, + "tick": 121 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 121 + }, + { + "renderSeconds": 0.0030399560928344727, + "simulationSeconds": 0.0063610076904296875, + "tick": 122 + }, + { + "renderSeconds": 0.002583026885986328, + "simulationSeconds": 0.00647890567779541, + "tick": 123 + }, + { + "renderSeconds": 0.002321958541870117, + "simulationSeconds": 0.006957054138183594, + "tick": 124 + }, + { + "renderSeconds": 0.0028839111328125, + "simulationSeconds": 0.012807011604309082, + "tick": 126 + }, + { + "renderSeconds": 0.003343939781188965, + "simulationSeconds": 0.006358027458190918, + "tick": 127 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0026950836181640625, + "simulationSeconds": 0.006978034973144531, + "tick": 128 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.006330966949462891, + "tick": 129 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.006555080413818359, + "tick": 130 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.006173968315124512, + "tick": 131 + }, + { + "renderSeconds": 0.0030739307403564453, + "simulationSeconds": 0.007292032241821289, + "tick": 132 + }, + { + "renderSeconds": 0.002947092056274414, + "simulationSeconds": 0.015126943588256836, + "tick": 134 + }, + { + "renderSeconds": 0.0030939579010009766, + "simulationSeconds": 0.007733941078186035, + "tick": 135 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.008670926094055176, + "tick": 136 + }, + { + "renderSeconds": 0.0026720762252807617, + "simulationSeconds": 0.005977988243103027, + "tick": 137 + }, + { + "renderSeconds": 0.002819061279296875, + "simulationSeconds": 0.007342934608459473, + "tick": 138 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.00725400447845459, + "tick": 139 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.014519095420837402, + "tick": 141 + }, + { + "renderSeconds": 0.0036829710006713867, + "simulationSeconds": 0.007052063941955566, + "tick": 142 + }, + { + "renderSeconds": 0.003319978713989258, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.007357954978942871, + "tick": 143 + }, + { + "renderSeconds": 0.0030629634857177734, + "simulationSeconds": 0.00725102424621582, + "tick": 144 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.0074460506439208984, + "tick": 145 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.00799703598022461, + "tick": 146 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.007335066795349121, + "tick": 147 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.014858007431030273, + "tick": 149 + }, + { + "renderSeconds": 0.0035920143127441406, + "simulationSeconds": 0.006826043128967285, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04114075002144091, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 202, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.007003426551818848, + "preparationSeconds": 0.5742089748382568, + "reducedMotion": false, + "renderSeconds": 0.41152191162109375, + "repetition": 0, + "scenePreparationSeconds": 0.20873594284057617, + "simulationSeconds": 1.096597671508789, + "snapshotBuildCount": 135, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 35.60516666038893, + "callbackMaxMS": 41.715291648870334 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.26379644870758057, + "frameCosts": [ + { + "renderSeconds": 0.0007810592651367188, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0007950067520141602, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008780956268310547, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001022934913635254, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.005725979804992676, + "tick": 1 + }, + { + "renderSeconds": 0.003014087677001953, + "simulationSeconds": 0.00710606575012207, + "tick": 2 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.0062400102615356445, + "tick": 3 + }, + { + "renderSeconds": 0.003352046012878418, + "simulationSeconds": 0.008383035659790039, + "tick": 4 + }, + { + "renderSeconds": 0.003216981887817383, + "simulationSeconds": 0.007440924644470215, + "tick": 5 + }, + { + "renderSeconds": 0.003213047981262207, + "simulationSeconds": 0.007892966270446777, + "tick": 6 + }, + { + "renderSeconds": 0.0031599998474121094, + "simulationSeconds": 0.00825202465057373, + "tick": 7 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.014519929885864258, + "tick": 9 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.007653951644897461, + "tick": 10 + }, + { + "renderSeconds": 0.0032629966735839844, + "simulationSeconds": 0.007009983062744141, + "tick": 11 + }, + { + "renderSeconds": 0.002993941307067871, + "simulationSeconds": 0.006826996803283691, + "tick": 12 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0.006659030914306641, + "tick": 13 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.012312889099121094, + "tick": 15 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.006693005561828613, + "tick": 16 + }, + { + "renderSeconds": 0.002662062644958496, + "simulationSeconds": 0.00625300407409668, + "tick": 17 + }, + { + "renderSeconds": 0.002526998519897461, + "simulationSeconds": 0.006318926811218262, + "tick": 18 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.006695985794067383, + "tick": 19 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.006199002265930176, + "tick": 20 + }, + { + "renderSeconds": 0.002393007278442383, + "simulationSeconds": 0.006512999534606934, + "tick": 21 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0.0064389705657958984, + "tick": 22 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.007218003273010254, + "tick": 23 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.0076580047607421875, + "tick": 24 + }, + { + "renderSeconds": 0.0028780698776245117, + "simulationSeconds": 0.0070629119873046875, + "tick": 25 + }, + { + "renderSeconds": 0.0034760236740112305, + "simulationSeconds": 0.0076749324798583984, + "tick": 26 + }, + { + "renderSeconds": 0.003141045570373535, + "simulationSeconds": 0.0074040889739990234, + "tick": 27 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.007652997970581055, + "tick": 28 + }, + { + "renderSeconds": 0.0037000179290771484, + "simulationSeconds": 0.01683497428894043, + "tick": 30 + }, + { + "renderSeconds": 0.003989100456237793, + "simulationSeconds": 0.009386897087097168, + "tick": 31 + }, + { + "renderSeconds": 0.003423929214477539, + "simulationSeconds": 0.007533073425292969, + "tick": 32 + }, + { + "renderSeconds": 0.0034890174865722656, + "simulationSeconds": 0.00745391845703125, + "tick": 33 + }, + { + "renderSeconds": 0.0030640363693237305, + "simulationSeconds": 0.00798797607421875, + "tick": 34 + }, + { + "renderSeconds": 0.0032449960708618164, + "simulationSeconds": 0.007095932960510254, + "tick": 35 + }, + { + "renderSeconds": 0.002458930015563965, + "simulationSeconds": 0.006402015686035156, + "tick": 36 + }, + { + "renderSeconds": 0.0025479793548583984, + "simulationSeconds": 0.005931973457336426, + "tick": 37 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006761074066162109, + "tick": 38 + }, + { + "renderSeconds": 0.0029228925704956055, + "simulationSeconds": 0.006092071533203125, + "tick": 39 + }, + { + "renderSeconds": 0.003054022789001465, + "simulationSeconds": 0.0062760114669799805, + "tick": 40 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.007049083709716797, + "tick": 41 + }, + { + "renderSeconds": 0.003030061721801758, + "simulationSeconds": 0.007501959800720215, + "tick": 42 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.006995081901550293, + "tick": 43 + }, + { + "renderSeconds": 0.0030809640884399414, + "simulationSeconds": 0.015148043632507324, + "tick": 45 + }, + { + "renderSeconds": 0.0033249855041503906, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.003610968589782715, + "simulationSeconds": 0.007383942604064941, + "tick": 46 + }, + { + "renderSeconds": 0.0031189918518066406, + "simulationSeconds": 0.006003975868225098, + "tick": 47 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.006502985954284668, + "tick": 48 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.006369948387145996, + "tick": 49 + }, + { + "renderSeconds": 0.003278970718383789, + "simulationSeconds": 0.006844043731689453, + "tick": 50 + }, + { + "renderSeconds": 0.002570033073425293, + "simulationSeconds": 0.006431937217712402, + "tick": 51 + }, + { + "renderSeconds": 0.003030061721801758, + "simulationSeconds": 0.006446957588195801, + "tick": 52 + }, + { + "renderSeconds": 0.0024809837341308594, + "simulationSeconds": 0.006302952766418457, + "tick": 53 + }, + { + "renderSeconds": 0.0032199621200561523, + "simulationSeconds": 0.007223963737487793, + "tick": 54 + }, + { + "renderSeconds": 0.002404928207397461, + "simulationSeconds": 0.006296992301940918, + "tick": 55 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.0066640377044677734, + "tick": 56 + }, + { + "renderSeconds": 0.00295102596282959, + "simulationSeconds": 0.006109952926635742, + "tick": 57 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.0067670345306396484, + "tick": 58 + }, + { + "renderSeconds": 0.0027719736099243164, + "simulationSeconds": 0.013347029685974121, + "tick": 60 + }, + { + "renderSeconds": 0.003328084945678711, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.007516980171203613, + "tick": 61 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 0.007230997085571289, + "tick": 62 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.006363987922668457, + "tick": 63 + }, + { + "renderSeconds": 0.0031279325485229492, + "simulationSeconds": 0.007057070732116699, + "tick": 64 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.006918072700500488, + "tick": 65 + }, + { + "renderSeconds": 0.0032500028610229492, + "simulationSeconds": 0.007503986358642578, + "tick": 66 + }, + { + "renderSeconds": 0.0028399229049682617, + "simulationSeconds": 0.0065119266510009766, + "tick": 67 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.007052063941955566, + "tick": 68 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.006392955780029297, + "tick": 69 + }, + { + "renderSeconds": 0.0024979114532470703, + "simulationSeconds": 0.0065680742263793945, + "tick": 70 + }, + { + "renderSeconds": 0.002461075782775879, + "simulationSeconds": 0.006114959716796875, + "tick": 71 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.006454944610595703, + "tick": 72 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.006291031837463379, + "tick": 73 + }, + { + "renderSeconds": 0.0030089616775512695, + "simulationSeconds": 0.012994050979614258, + "tick": 75 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002545952796936035, + "simulationSeconds": 0.006552934646606445, + "tick": 76 + }, + { + "renderSeconds": 0.0029069185256958008, + "simulationSeconds": 0.006227970123291016, + "tick": 77 + }, + { + "renderSeconds": 0.002996087074279785, + "simulationSeconds": 0.007375955581665039, + "tick": 78 + }, + { + "renderSeconds": 0.003204941749572754, + "simulationSeconds": 0.006961941719055176, + "tick": 79 + }, + { + "renderSeconds": 0.00309598445892334, + "simulationSeconds": 0.007430076599121094, + "tick": 80 + }, + { + "renderSeconds": 0.0033469200134277344, + "simulationSeconds": 0.007112026214599609, + "tick": 81 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006353974342346191, + "tick": 82 + }, + { + "renderSeconds": 0.0028541088104248047, + "simulationSeconds": 0.006682038307189941, + "tick": 83 + }, + { + "renderSeconds": 0.0029380321502685547, + "simulationSeconds": 0.006569981575012207, + "tick": 84 + }, + { + "renderSeconds": 0.0031729936599731445, + "simulationSeconds": 0.006437897682189941, + "tick": 85 + }, + { + "renderSeconds": 0.0026460886001586914, + "simulationSeconds": 0.006296992301940918, + "tick": 86 + }, + { + "renderSeconds": 0.003374934196472168, + "simulationSeconds": 0.006587982177734375, + "tick": 87 + }, + { + "renderSeconds": 0.0029799938201904297, + "simulationSeconds": 0.006608009338378906, + "tick": 88 + }, + { + "renderSeconds": 0.0034199953079223633, + "simulationSeconds": 0.014325976371765137, + "tick": 90 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.004107952117919922, + "simulationSeconds": 0.006618022918701172, + "tick": 91 + }, + { + "renderSeconds": 0.003364086151123047, + "simulationSeconds": 0.007218003273010254, + "tick": 92 + }, + { + "renderSeconds": 0.0038809776306152344, + "simulationSeconds": 0.00904393196105957, + "tick": 93 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.00666499137878418, + "tick": 94 + }, + { + "renderSeconds": 0.0029450654983520508, + "simulationSeconds": 0.006609916687011719, + "tick": 95 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.007259011268615723, + "tick": 96 + }, + { + "renderSeconds": 0.0037380456924438477, + "simulationSeconds": 0.0075550079345703125, + "tick": 97 + }, + { + "renderSeconds": 0.003671884536743164, + "simulationSeconds": 0.006640076637268066, + "tick": 98 + }, + { + "renderSeconds": 0.0036259889602661133, + "simulationSeconds": 0.00807201862335205, + "tick": 99 + }, + { + "renderSeconds": 0.0029969215393066406, + "simulationSeconds": 0.007274985313415527, + "tick": 100 + }, + { + "renderSeconds": 0.0035780668258666992, + "simulationSeconds": 0.01714193820953369, + "tick": 102 + }, + { + "renderSeconds": 0.004321932792663574, + "simulationSeconds": 0.009222984313964844, + "tick": 103 + }, + { + "renderSeconds": 0.0040400028228759766, + "simulationSeconds": 0.018095970153808594, + "tick": 105 + }, + { + "renderSeconds": 0.003283977508544922, + "simulationSeconds": 0.007421016693115234, + "tick": 106 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.014532923698425293, + "tick": 108 + }, + { + "renderSeconds": 0.0034040212631225586, + "simulationSeconds": 0.006360054016113281, + "tick": 109 + }, + { + "renderSeconds": 0.003903985023498535, + "simulationSeconds": 0.006582975387573242, + "tick": 110 + }, + { + "renderSeconds": 0.0031861066818237305, + "simulationSeconds": 0.006234884262084961, + "tick": 111 + }, + { + "renderSeconds": 0.002610921859741211, + "simulationSeconds": 0.007679939270019531, + "tick": 112 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.0071070194244384766, + "tick": 113 + }, + { + "renderSeconds": 0.00291597843170166, + "simulationSeconds": 0.007145047187805176, + "tick": 114 + }, + { + "renderSeconds": 0.0028679370880126953, + "simulationSeconds": 0.00692594051361084, + "tick": 115 + }, + { + "renderSeconds": 0.0030399560928344727, + "simulationSeconds": 0.006350040435791016, + "tick": 116 + }, + { + "renderSeconds": 0.0034040212631225586, + "simulationSeconds": 0.005941033363342285, + "tick": 117 + }, + { + "renderSeconds": 0.002989053726196289, + "simulationSeconds": 0.020107030868530273, + "tick": 120 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0035779476165771484, + "simulationSeconds": 0.007236957550048828, + "tick": 121 + }, + { + "renderSeconds": 0.003304004669189453, + "simulationSeconds": 0.0076340436935424805, + "tick": 122 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 0.0073490142822265625, + "tick": 123 + }, + { + "renderSeconds": 0.0041539669036865234, + "simulationSeconds": 0.008419036865234375, + "tick": 124 + }, + { + "renderSeconds": 0.003091096878051758, + "simulationSeconds": 0.0076770782470703125, + "tick": 125 + }, + { + "renderSeconds": 0.0034459829330444336, + "simulationSeconds": 0.007192015647888184, + "tick": 126 + }, + { + "renderSeconds": 0.0029599666595458984, + "simulationSeconds": 0.008027911186218262, + "tick": 127 + }, + { + "renderSeconds": 0.003448009490966797, + "simulationSeconds": 0.007243037223815918, + "tick": 128 + }, + { + "renderSeconds": 0.0029859542846679688, + "simulationSeconds": 0.007027029991149902, + "tick": 129 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.007142066955566406, + "tick": 130 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.007420063018798828, + "tick": 131 + }, + { + "renderSeconds": 0.0033529996871948242, + "simulationSeconds": 0.008284926414489746, + "tick": 132 + }, + { + "renderSeconds": 0.003898024559020996, + "simulationSeconds": 0.009279012680053711, + "tick": 133 + }, + { + "renderSeconds": 0.0034390687942504883, + "simulationSeconds": 0.019563913345336914, + "tick": 135 + }, + { + "renderSeconds": 0.002794981002807617, + "simulationSeconds": 0.007331967353820801, + "tick": 136 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.007551908493041992, + "tick": 137 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.0068939924240112305, + "tick": 138 + }, + { + "renderSeconds": 0.0035969018936157227, + "simulationSeconds": 0.007422924041748047, + "tick": 139 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.007324934005737305, + "tick": 140 + }, + { + "renderSeconds": 0.0032259225845336914, + "simulationSeconds": 0.007375001907348633, + "tick": 141 + }, + { + "renderSeconds": 0.003910064697265625, + "simulationSeconds": 0.007636070251464844, + "tick": 142 + }, + { + "renderSeconds": 0.0034050941467285156, + "simulationSeconds": 0.007028937339782715, + "tick": 143 + }, + { + "renderSeconds": 0.004037976264953613, + "simulationSeconds": 0.008450984954833984, + "tick": 144 + }, + { + "renderSeconds": 0.003497004508972168, + "simulationSeconds": 0.009006023406982422, + "tick": 145 + }, + { + "renderSeconds": 0.00338900089263916, + "simulationSeconds": 0.008730053901672363, + "tick": 146 + }, + { + "renderSeconds": 0.003079056739807129, + "simulationSeconds": 0.007536053657531738, + "tick": 147 + }, + { + "renderSeconds": 0.0036650896072387695, + "simulationSeconds": 0.00881803035736084, + "tick": 148 + }, + { + "renderSeconds": 0.0034829378128051758, + "simulationSeconds": 0.017300963401794434, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.0419298333581537, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 228, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.0071201324462890625, + "preparationSeconds": 0.5011110305786133, + "reducedMotion": true, + "renderSeconds": 0.4432142972946167, + "repetition": 2, + "scenePreparationSeconds": 0.16708099842071533, + "simulationSeconds": 1.079158067703247, + "snapshotBuildCount": 146, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333335467614 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2545740604400635, + "frameCosts": [ + { + "renderSeconds": 0.0010780096054077148, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0008230209350585938, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000764012336730957, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0008249282836914062, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0034019947052001953, + "simulationSeconds": 0.005805015563964844, + "tick": 1 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.006662964820861816, + "tick": 2 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.007173061370849609, + "tick": 3 + }, + { + "renderSeconds": 0.0039058923721313477, + "simulationSeconds": 0.018903017044067383, + "tick": 5 + }, + { + "renderSeconds": 0.00398099422454834, + "simulationSeconds": 0.017499089241027832, + "tick": 7 + }, + { + "renderSeconds": 0.0030580759048461914, + "simulationSeconds": 0.008307933807373047, + "tick": 8 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.007172942161560059, + "tick": 9 + }, + { + "renderSeconds": 0.002846956253051758, + "simulationSeconds": 0.007393002510070801, + "tick": 10 + }, + { + "renderSeconds": 0.002644062042236328, + "simulationSeconds": 0.012665987014770508, + "tick": 12 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.006265997886657715, + "tick": 13 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.006680965423583984, + "tick": 14 + }, + { + "renderSeconds": 0.00241696834564209, + "simulationSeconds": 0.0066030025482177734, + "tick": 15 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0029430389404296875, + "simulationSeconds": 0.006932973861694336, + "tick": 16 + }, + { + "renderSeconds": 0.0025440454483032227, + "simulationSeconds": 0.006383061408996582, + "tick": 17 + }, + { + "renderSeconds": 0.002702951431274414, + "simulationSeconds": 0.006433010101318359, + "tick": 18 + }, + { + "renderSeconds": 0.002373933792114258, + "simulationSeconds": 0.011967062950134277, + "tick": 20 + }, + { + "renderSeconds": 0.00253903865814209, + "simulationSeconds": 0.007311105728149414, + "tick": 21 + }, + { + "renderSeconds": 0.002728104591369629, + "simulationSeconds": 0.006187915802001953, + "tick": 22 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0038869380950927734, + "simulationSeconds": 0.00807201862335205, + "tick": 23 + }, + { + "renderSeconds": 0.00391697883605957, + "simulationSeconds": 0.009066939353942871, + "tick": 24 + }, + { + "renderSeconds": 0.0034869909286499023, + "simulationSeconds": 0.008998990058898926, + "tick": 25 + }, + { + "renderSeconds": 0.003466963768005371, + "simulationSeconds": 0.01714801788330078, + "tick": 27 + }, + { + "renderSeconds": 0.0025550127029418945, + "simulationSeconds": 0.01423192024230957, + "tick": 29 + }, + { + "renderSeconds": 0.003000974655151367, + "simulationSeconds": 0.0062639713287353516, + "tick": 30 + }, + { + "renderSeconds": 0.0024929046630859375, + "simulationSeconds": 0.006819009780883789, + "tick": 31 + }, + { + "renderSeconds": 0.0030579566955566406, + "simulationSeconds": 0.006441950798034668, + "tick": 32 + }, + { + "renderSeconds": 0.002940058708190918, + "simulationSeconds": 0.0065310001373291016, + "tick": 33 + }, + { + "renderSeconds": 0.0024930238723754883, + "simulationSeconds": 0.012670040130615234, + "tick": 35 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.0068509578704833984, + "tick": 36 + }, + { + "renderSeconds": 0.003000974655151367, + "simulationSeconds": 0.006645917892456055, + "tick": 37 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0029430389404296875, + "simulationSeconds": 0.006476044654846191, + "tick": 38 + }, + { + "renderSeconds": 0.0027490854263305664, + "simulationSeconds": 0.006265997886657715, + "tick": 39 + }, + { + "renderSeconds": 0.003268003463745117, + "simulationSeconds": 0.007044076919555664, + "tick": 40 + }, + { + "renderSeconds": 0.002884984016418457, + "simulationSeconds": 0.014081954956054688, + "tick": 42 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.007257938385009766, + "tick": 43 + }, + { + "renderSeconds": 0.003769993782043457, + "simulationSeconds": 0.008900046348571777, + "tick": 44 + }, + { + "renderSeconds": 0.003903985023498535, + "simulationSeconds": 0.009126067161560059, + "tick": 45 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.002946019172668457, + "simulationSeconds": 0.007552981376647949, + "tick": 46 + }, + { + "renderSeconds": 0.003437042236328125, + "simulationSeconds": 0.0073239803314208984, + "tick": 47 + }, + { + "renderSeconds": 0.004061102867126465, + "simulationSeconds": 0.008626937866210938, + "tick": 48 + }, + { + "renderSeconds": 0.00277101993560791, + "simulationSeconds": 0.017648935317993164, + "tick": 50 + }, + { + "renderSeconds": 0.0028290748596191406, + "simulationSeconds": 0.014402985572814941, + "tick": 52 + }, + { + "renderSeconds": 0.00324404239654541, + "simulationSeconds": 0.006314992904663086, + "tick": 53 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.006349921226501465, + "tick": 54 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.006608009338378906, + "tick": 55 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.014579057693481445, + "tick": 57 + }, + { + "renderSeconds": 0.0027750730514526367, + "simulationSeconds": 0.007010936737060547, + "tick": 58 + }, + { + "renderSeconds": 0.0031180381774902344, + "simulationSeconds": 0.006109952926635742, + "tick": 59 + }, + { + "renderSeconds": 0.0026319026947021484, + "simulationSeconds": 0.006309986114501953, + "tick": 60 + }, + { + "renderSeconds": 0.0026450157165527344, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0026830434799194336, + "simulationSeconds": 0.0066070556640625, + "tick": 61 + }, + { + "renderSeconds": 0.0029249191284179688, + "simulationSeconds": 0.006228089332580566, + "tick": 62 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.0066699981689453125, + "tick": 63 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.012192010879516602, + "tick": 65 + }, + { + "renderSeconds": 0.0031709671020507812, + "simulationSeconds": 0.006187081336975098, + "tick": 66 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006555080413818359, + "tick": 67 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0024139881134033203, + "simulationSeconds": 0.006451964378356934, + "tick": 68 + }, + { + "renderSeconds": 0.0026930570602416992, + "simulationSeconds": 0.0068160295486450195, + "tick": 69 + }, + { + "renderSeconds": 0.0025540590286254883, + "simulationSeconds": 0.006531953811645508, + "tick": 70 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 0.012989997863769531, + "tick": 72 + }, + { + "renderSeconds": 0.0032171010971069336, + "simulationSeconds": 0.0067490339279174805, + "tick": 73 + }, + { + "renderSeconds": 0.0027239322662353516, + "simulationSeconds": 0.006479978561401367, + "tick": 74 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.0061910152435302734, + "tick": 75 + }, + { + "renderSeconds": 0.0031620264053344727, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.003489971160888672, + "simulationSeconds": 0.00766599178314209, + "tick": 76 + }, + { + "renderSeconds": 0.002695918083190918, + "simulationSeconds": 0.007025957107543945, + "tick": 77 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.006029009819030762, + "tick": 78 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.016087055206298828, + "tick": 80 + }, + { + "renderSeconds": 0.0042580366134643555, + "simulationSeconds": 0.00789797306060791, + "tick": 81 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.006909012794494629, + "tick": 82 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.006790041923522949, + "tick": 83 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.006370902061462402, + "tick": 84 + }, + { + "renderSeconds": 0.0028249025344848633, + "simulationSeconds": 0.006215095520019531, + "tick": 85 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.012369990348815918, + "tick": 87 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 0.006526947021484375, + "tick": 88 + }, + { + "renderSeconds": 0.0033800601959228516, + "simulationSeconds": 0.00849604606628418, + "tick": 89 + }, + { + "renderSeconds": 0.0032029151916503906, + "simulationSeconds": 0.0073909759521484375, + "tick": 90 + }, + { + "renderSeconds": 0.0031310319900512695, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0030089616775512695, + "simulationSeconds": 0.007425069808959961, + "tick": 91 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.007379055023193359, + "tick": 92 + }, + { + "renderSeconds": 0.0031009912490844727, + "simulationSeconds": 0.007121086120605469, + "tick": 93 + }, + { + "renderSeconds": 0.0030840635299682617, + "simulationSeconds": 0.01432502269744873, + "tick": 95 + }, + { + "renderSeconds": 0.0035670995712280273, + "simulationSeconds": 0.008082985877990723, + "tick": 96 + }, + { + "renderSeconds": 0.002805948257446289, + "simulationSeconds": 0.006570100784301758, + "tick": 97 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.0065239667892456055, + "tick": 98 + }, + { + "renderSeconds": 0.0033069849014282227, + "simulationSeconds": 0.006553053855895996, + "tick": 99 + }, + { + "renderSeconds": 0.0037419795989990234, + "simulationSeconds": 0.0063620805740356445, + "tick": 100 + }, + { + "renderSeconds": 0.0028520822525024414, + "simulationSeconds": 0.014793038368225098, + "tick": 102 + }, + { + "renderSeconds": 0.0032809972763061523, + "simulationSeconds": 0.0072280168533325195, + "tick": 103 + }, + { + "renderSeconds": 0.003493070602416992, + "simulationSeconds": 0.007658958435058594, + "tick": 104 + }, + { + "renderSeconds": 0.002579927444458008, + "simulationSeconds": 0.007236003875732422, + "tick": 105 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.006829977035522461, + "tick": 106 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.007221102714538574, + "tick": 107 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.007604002952575684, + "tick": 108 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.014670014381408691, + "tick": 110 + }, + { + "renderSeconds": 0.0029109716415405273, + "simulationSeconds": 0.006965994834899902, + "tick": 111 + }, + { + "renderSeconds": 0.00315093994140625, + "simulationSeconds": 0.007546901702880859, + "tick": 112 + }, + { + "renderSeconds": 0.003139019012451172, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0033309459686279297, + "simulationSeconds": 0.007429003715515137, + "tick": 113 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.007179975509643555, + "tick": 114 + }, + { + "renderSeconds": 0.003076910972595215, + "simulationSeconds": 0.007262110710144043, + "tick": 115 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.01943504810333252, + "tick": 117 + }, + { + "renderSeconds": 0.0032820701599121094, + "simulationSeconds": 0.007568001747131348, + "tick": 118 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.014782905578613281, + "tick": 120 + }, + { + "renderSeconds": 0.0030999183654785156, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.003834962844848633, + "simulationSeconds": 0.007025003433227539, + "tick": 121 + }, + { + "renderSeconds": 0.0027729272842407227, + "simulationSeconds": 0.0064820051193237305, + "tick": 122 + }, + { + "renderSeconds": 0.0027850866317749023, + "simulationSeconds": 0.006551980972290039, + "tick": 123 + }, + { + "renderSeconds": 0.0023109912872314453, + "simulationSeconds": 0.012259960174560547, + "tick": 125 + }, + { + "renderSeconds": 0.002406001091003418, + "simulationSeconds": 0.006473898887634277, + "tick": 126 + }, + { + "renderSeconds": 0.002680063247680664, + "simulationSeconds": 0.007364988327026367, + "tick": 127 + }, + { + "renderSeconds": 0.0036650896072387695, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0028229951858520508, + "simulationSeconds": 0.007086992263793945, + "tick": 128 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0.007990002632141113, + "tick": 129 + }, + { + "renderSeconds": 0.003139019012451172, + "simulationSeconds": 0.007066965103149414, + "tick": 130 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.015260934829711914, + "tick": 132 + }, + { + "renderSeconds": 0.003194093704223633, + "simulationSeconds": 0.007400035858154297, + "tick": 133 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.006440997123718262, + "tick": 134 + }, + { + "renderSeconds": 0.0028439760208129883, + "simulationSeconds": 0.006597042083740234, + "tick": 135 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.006248950958251953, + "tick": 136 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.006543993949890137, + "tick": 137 + }, + { + "renderSeconds": 0.0029560327529907227, + "simulationSeconds": 0.005971074104309082, + "tick": 138 + }, + { + "renderSeconds": 0.002480030059814453, + "simulationSeconds": 0.01526796817779541, + "tick": 140 + }, + { + "renderSeconds": 0.0026770830154418945, + "simulationSeconds": 0.006218075752258301, + "tick": 141 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.0063790082931518555, + "tick": 142 + }, + { + "renderSeconds": 0.0025010108947753906, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0024170875549316406, + "simulationSeconds": 0.006294965744018555, + "tick": 143 + }, + { + "renderSeconds": 0.002642035484313965, + "simulationSeconds": 0.005797028541564941, + "tick": 144 + }, + { + "renderSeconds": 0.0025870800018310547, + "simulationSeconds": 0.006698012351989746, + "tick": 145 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.012734055519104004, + "tick": 147 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.0064460039138793945, + "tick": 148 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.006159067153930664, + "tick": 149 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.006456971168518066, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.050853041670052335, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 226, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.007132053375244141, + "preparationSeconds": 0.5609750747680664, + "reducedMotion": true, + "renderSeconds": 0.42320239543914795, + "repetition": 3, + "scenePreparationSeconds": 0.20320606231689453, + "simulationSeconds": 1.059475302696228, + "snapshotBuildCount": 146, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 40.29595831525512 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.25535523891448975, + "frameCosts": [ + { + "renderSeconds": 0.0009399652481079102, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000885009765625, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0008970499038696289, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0009660720825195312, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0032160282135009766, + "simulationSeconds": 0.0057179927825927734, + "tick": 1 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.00678098201751709, + "tick": 2 + }, + { + "renderSeconds": 0.002682924270629883, + "simulationSeconds": 0.007351040840148926, + "tick": 3 + }, + { + "renderSeconds": 0.0032500028610229492, + "simulationSeconds": 0.013224959373474121, + "tick": 5 + }, + { + "renderSeconds": 0.0030499696731567383, + "simulationSeconds": 0.0068340301513671875, + "tick": 6 + }, + { + "renderSeconds": 0.004496097564697266, + "simulationSeconds": 0.00792396068572998, + "tick": 7 + }, + { + "renderSeconds": 0.003350973129272461, + "simulationSeconds": 9.5367431640625e-07, + "tick": 7 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0.006953001022338867, + "tick": 8 + }, + { + "renderSeconds": 0.002937912940979004, + "simulationSeconds": 0.007651925086975098, + "tick": 9 + }, + { + "renderSeconds": 0.0030039548873901367, + "simulationSeconds": 0.006470084190368652, + "tick": 10 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.012730002403259277, + "tick": 12 + }, + { + "renderSeconds": 0.0032050609588623047, + "simulationSeconds": 0.00651395320892334, + "tick": 13 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.006228923797607422, + "tick": 14 + }, + { + "renderSeconds": 0.00333404541015625, + "simulationSeconds": 0.00640106201171875, + "tick": 15 + }, + { + "renderSeconds": 0.003080010414123535, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.003672957420349121, + "simulationSeconds": 0.007411003112792969, + "tick": 16 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.006304025650024414, + "tick": 17 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.007884979248046875, + "tick": 18 + }, + { + "renderSeconds": 0.0036760568618774414, + "simulationSeconds": 0.01450800895690918, + "tick": 20 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.014181971549987793, + "tick": 22 + }, + { + "renderSeconds": 0.0030630826950073242, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0031919479370117188, + "simulationSeconds": 0.007160067558288574, + "tick": 23 + }, + { + "renderSeconds": 0.003634929656982422, + "simulationSeconds": 0.0076220035552978516, + "tick": 24 + }, + { + "renderSeconds": 0.0033370256423950195, + "simulationSeconds": 0.00781404972076416, + "tick": 25 + }, + { + "renderSeconds": 0.0029610395431518555, + "simulationSeconds": 0.015658020973205566, + "tick": 27 + }, + { + "renderSeconds": 0.002926945686340332, + "simulationSeconds": 0.013122916221618652, + "tick": 29 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.01320803165435791, + "tick": 31 + }, + { + "renderSeconds": 0.00247800350189209, + "simulationSeconds": 0.006536006927490234, + "tick": 32 + }, + { + "renderSeconds": 0.0026389360427856445, + "simulationSeconds": 0.006255984306335449, + "tick": 33 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.012704014778137207, + "tick": 35 + }, + { + "renderSeconds": 0.002460002899169922, + "simulationSeconds": 0.006072998046875, + "tick": 36 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.005922079086303711, + "tick": 37 + }, + { + "renderSeconds": 0.002521038055419922, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0028470754623413086, + "simulationSeconds": 0.007035970687866211, + "tick": 38 + }, + { + "renderSeconds": 0.0032219886779785156, + "simulationSeconds": 0.007588028907775879, + "tick": 39 + }, + { + "renderSeconds": 0.00356900691986084, + "simulationSeconds": 0.009163975715637207, + "tick": 40 + }, + { + "renderSeconds": 0.003628969192504883, + "simulationSeconds": 0.018388986587524414, + "tick": 42 + }, + { + "renderSeconds": 0.002770066261291504, + "simulationSeconds": 0.01635599136352539, + "tick": 44 + }, + { + "renderSeconds": 0.003382086753845215, + "simulationSeconds": 0.007174015045166016, + "tick": 45 + }, + { + "renderSeconds": 0.003442049026489258, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0035070180892944336, + "simulationSeconds": 0.007786989212036133, + "tick": 46 + }, + { + "renderSeconds": 0.0030080080032348633, + "simulationSeconds": 0.007727980613708496, + "tick": 47 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.006381988525390625, + "tick": 48 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.015165090560913086, + "tick": 50 + }, + { + "renderSeconds": 0.003059983253479004, + "simulationSeconds": 0.007156014442443848, + "tick": 51 + }, + { + "renderSeconds": 0.003302931785583496, + "simulationSeconds": 0.007219076156616211, + "tick": 52 + }, + { + "renderSeconds": 0.003007054328918457, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.00658106803894043, + "tick": 53 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.006011962890625, + "tick": 54 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0.006827950477600098, + "tick": 55 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.013849973678588867, + "tick": 57 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.007153987884521484, + "tick": 58 + }, + { + "renderSeconds": 0.003484010696411133, + "simulationSeconds": 0.007364988327026367, + "tick": 59 + }, + { + "renderSeconds": 0.003049015998840332, + "simulationSeconds": 0.007425069808959961, + "tick": 60 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 60 + }, + { + "renderSeconds": 0.003339052200317383, + "simulationSeconds": 0.007660984992980957, + "tick": 61 + }, + { + "renderSeconds": 0.003222942352294922, + "simulationSeconds": 0.0071680545806884766, + "tick": 62 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0.007534980773925781, + "tick": 63 + }, + { + "renderSeconds": 0.00324404239654541, + "simulationSeconds": 0.01536095142364502, + "tick": 65 + }, + { + "renderSeconds": 0.0029299259185791016, + "simulationSeconds": 0.01371300220489502, + "tick": 67 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.006943941116333008, + "tick": 68 + }, + { + "renderSeconds": 0.002617955207824707, + "simulationSeconds": 0.006237983703613281, + "tick": 69 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.006662964820861816, + "tick": 70 + }, + { + "renderSeconds": 0.0028829574584960938, + "simulationSeconds": 0.012717962265014648, + "tick": 72 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 0.006581902503967285, + "tick": 73 + }, + { + "renderSeconds": 0.0033299922943115234, + "simulationSeconds": 0.006493091583251953, + "tick": 74 + }, + { + "renderSeconds": 0.00270998477935791, + "simulationSeconds": 0.006384015083312988, + "tick": 75 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 75 + }, + { + "renderSeconds": 0.0029140710830688477, + "simulationSeconds": 0.00707697868347168, + "tick": 76 + }, + { + "renderSeconds": 0.003080010414123535, + "simulationSeconds": 0.006399989128112793, + "tick": 77 + }, + { + "renderSeconds": 0.0030379295349121094, + "simulationSeconds": 0.006538987159729004, + "tick": 78 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.012562036514282227, + "tick": 80 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.006706953048706055, + "tick": 81 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.0061910152435302734, + "tick": 82 + }, + { + "renderSeconds": 0.0027959346771240234, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0026549100875854492, + "simulationSeconds": 0.00610506534576416, + "tick": 83 + }, + { + "renderSeconds": 0.00266110897064209, + "simulationSeconds": 0.006834983825683594, + "tick": 84 + }, + { + "renderSeconds": 0.002498030662536621, + "simulationSeconds": 0.0061980485916137695, + "tick": 85 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.014878034591674805, + "tick": 87 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.007555961608886719, + "tick": 88 + }, + { + "renderSeconds": 0.0031660795211791992, + "simulationSeconds": 0.007255911827087402, + "tick": 89 + }, + { + "renderSeconds": 0.003697991371154785, + "simulationSeconds": 0.007735013961791992, + "tick": 90 + }, + { + "renderSeconds": 0.0031120777130126953, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0032949447631835938, + "simulationSeconds": 0.007128000259399414, + "tick": 91 + }, + { + "renderSeconds": 0.0031540393829345703, + "simulationSeconds": 0.007795929908752441, + "tick": 92 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.006906986236572266, + "tick": 93 + }, + { + "renderSeconds": 0.003052949905395508, + "simulationSeconds": 0.014100074768066406, + "tick": 95 + }, + { + "renderSeconds": 0.003340005874633789, + "simulationSeconds": 0.007197022438049316, + "tick": 96 + }, + { + "renderSeconds": 0.003412961959838867, + "simulationSeconds": 0.007029056549072266, + "tick": 97 + }, + { + "renderSeconds": 0.0032759904861450195, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0031229257583618164, + "simulationSeconds": 0.007272005081176758, + "tick": 98 + }, + { + "renderSeconds": 0.0036350488662719727, + "simulationSeconds": 0.007447004318237305, + "tick": 99 + }, + { + "renderSeconds": 0.0031249523162841797, + "simulationSeconds": 0.007794022560119629, + "tick": 100 + }, + { + "renderSeconds": 0.0033119916915893555, + "simulationSeconds": 0.015313982963562012, + "tick": 102 + }, + { + "renderSeconds": 0.0030280351638793945, + "simulationSeconds": 0.013208985328674316, + "tick": 104 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.0062830448150634766, + "tick": 105 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0.0074340105056762695, + "tick": 106 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.006107926368713379, + "tick": 107 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.00654292106628418, + "tick": 108 + }, + { + "renderSeconds": 0.0028150081634521484, + "simulationSeconds": 0.012685060501098633, + "tick": 110 + }, + { + "renderSeconds": 0.0028220415115356445, + "simulationSeconds": 0.006612062454223633, + "tick": 111 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.006049990653991699, + "tick": 112 + }, + { + "renderSeconds": 0.0029050111770629883, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.002846956253051758, + "simulationSeconds": 0.006133079528808594, + "tick": 113 + }, + { + "renderSeconds": 0.0024410486221313477, + "simulationSeconds": 0.00651097297668457, + "tick": 114 + }, + { + "renderSeconds": 0.002429962158203125, + "simulationSeconds": 0.00631403923034668, + "tick": 115 + }, + { + "renderSeconds": 0.002601027488708496, + "simulationSeconds": 0.012387990951538086, + "tick": 117 + }, + { + "renderSeconds": 0.002976059913635254, + "simulationSeconds": 0.0062340497970581055, + "tick": 118 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0.006742954254150391, + "tick": 119 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.006804108619689941, + "tick": 120 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0031620264053344727, + "simulationSeconds": 0.007096052169799805, + "tick": 121 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.007164955139160156, + "tick": 122 + }, + { + "renderSeconds": 0.0030580759048461914, + "simulationSeconds": 0.007527947425842285, + "tick": 123 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.012789011001586914, + "tick": 125 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.006551980972290039, + "tick": 126 + }, + { + "renderSeconds": 0.0027360916137695312, + "simulationSeconds": 0.006314992904663086, + "tick": 127 + }, + { + "renderSeconds": 0.002673029899597168, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002521038055419922, + "simulationSeconds": 0.006124019622802734, + "tick": 128 + }, + { + "renderSeconds": 0.0026210546493530273, + "simulationSeconds": 0.0069620609283447266, + "tick": 129 + }, + { + "renderSeconds": 0.002606034278869629, + "simulationSeconds": 0.006545901298522949, + "tick": 130 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.01498103141784668, + "tick": 132 + }, + { + "renderSeconds": 0.003443002700805664, + "simulationSeconds": 0.007455945014953613, + "tick": 133 + }, + { + "renderSeconds": 0.002836942672729492, + "simulationSeconds": 0.006867051124572754, + "tick": 134 + }, + { + "renderSeconds": 0.0030940771102905273, + "simulationSeconds": 0.006347060203552246, + "tick": 135 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002460956573486328, + "simulationSeconds": 0.006121993064880371, + "tick": 136 + }, + { + "renderSeconds": 0.0029449462890625, + "simulationSeconds": 0.006206035614013672, + "tick": 137 + }, + { + "renderSeconds": 0.002751946449279785, + "simulationSeconds": 0.006042003631591797, + "tick": 138 + }, + { + "renderSeconds": 0.0025060176849365234, + "simulationSeconds": 0.013828039169311523, + "tick": 140 + }, + { + "renderSeconds": 0.003137946128845215, + "simulationSeconds": 0.006116986274719238, + "tick": 141 + }, + { + "renderSeconds": 0.0034829378128051758, + "simulationSeconds": 0.00739598274230957, + "tick": 142 + }, + { + "renderSeconds": 0.0030150413513183594, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 0.00793302059173584, + "tick": 143 + }, + { + "renderSeconds": 0.0028020143508911133, + "simulationSeconds": 0.006132006645202637, + "tick": 144 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0.007791996002197266, + "tick": 145 + }, + { + "renderSeconds": 0.002721071243286133, + "simulationSeconds": 0.013762950897216797, + "tick": 147 + }, + { + "renderSeconds": 0.003236055374145508, + "simulationSeconds": 0.00710606575012207, + "tick": 148 + }, + { + "renderSeconds": 0.0035419464111328125, + "simulationSeconds": 0.0076520442962646484, + "tick": 149 + }, + { + "renderSeconds": 0.0032160282135009766, + "simulationSeconds": 0.007082939147949219, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.041588124993722886, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 226, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.007581830024719238, + "preparationSeconds": 0.5596098899841309, + "reducedMotion": true, + "renderSeconds": 0.4295734167098999, + "repetition": 1, + "scenePreparationSeconds": 0.1971949338912964, + "simulationSeconds": 1.0409482717514038, + "snapshotBuildCount": 146, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 40.65854169311933 + }, + { + "axis": 8191, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2611832618713379, + "frameCosts": [ + { + "renderSeconds": 0.0009011030197143555, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009660720825195312, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0009419918060302734, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0008220672607421875, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0.005627036094665527, + "tick": 1 + }, + { + "renderSeconds": 0.00324404239654541, + "simulationSeconds": 0.0075730085372924805, + "tick": 2 + }, + { + "renderSeconds": 0.003117084503173828, + "simulationSeconds": 0.007195949554443359, + "tick": 3 + }, + { + "renderSeconds": 0.004809021949768066, + "simulationSeconds": 0.018333911895751953, + "tick": 5 + }, + { + "renderSeconds": 0.003535032272338867, + "simulationSeconds": 0.020395994186401367, + "tick": 7 + }, + { + "renderSeconds": 0.004431009292602539, + "simulationSeconds": 0.00926506519317627, + "tick": 8 + }, + { + "renderSeconds": 0.0031720399856567383, + "simulationSeconds": 0.007438063621520996, + "tick": 9 + }, + { + "renderSeconds": 0.0029860734939575195, + "simulationSeconds": 0.007223963737487793, + "tick": 10 + }, + { + "renderSeconds": 0.0028810501098632812, + "simulationSeconds": 0.01429295539855957, + "tick": 12 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.01477205753326416, + "tick": 14 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.006207942962646484, + "tick": 15 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.006090998649597168, + "tick": 16 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.006088972091674805, + "tick": 17 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006577014923095703, + "tick": 18 + }, + { + "renderSeconds": 0.002904057502746582, + "simulationSeconds": 0.012380003929138184, + "tick": 20 + }, + { + "renderSeconds": 0.0029300451278686523, + "simulationSeconds": 0.007484078407287598, + "tick": 21 + }, + { + "renderSeconds": 0.003697991371154785, + "simulationSeconds": 0.0073729753494262695, + "tick": 22 + }, + { + "renderSeconds": 0.0029120445251464844, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0026390552520751953, + "simulationSeconds": 0.00701594352722168, + "tick": 23 + }, + { + "renderSeconds": 0.00351107120513916, + "simulationSeconds": 0.006528973579406738, + "tick": 24 + }, + { + "renderSeconds": 0.003322005271911621, + "simulationSeconds": 0.006752967834472656, + "tick": 25 + }, + { + "renderSeconds": 0.0029859542846679688, + "simulationSeconds": 0.012964010238647461, + "tick": 27 + }, + { + "renderSeconds": 0.0036039352416992188, + "simulationSeconds": 0.007005929946899414, + "tick": 28 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006225109100341797, + "tick": 29 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.006456971168518066, + "tick": 30 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0032880306243896484, + "simulationSeconds": 0.006340980529785156, + "tick": 31 + }, + { + "renderSeconds": 0.002485036849975586, + "simulationSeconds": 0.006801962852478027, + "tick": 32 + }, + { + "renderSeconds": 0.0030219554901123047, + "simulationSeconds": 0.0073659420013427734, + "tick": 33 + }, + { + "renderSeconds": 0.0029059648513793945, + "simulationSeconds": 0.016816020011901855, + "tick": 35 + }, + { + "renderSeconds": 0.003224015235900879, + "simulationSeconds": 0.007354021072387695, + "tick": 36 + }, + { + "renderSeconds": 0.0032880306243896484, + "simulationSeconds": 0.0075179338455200195, + "tick": 37 + }, + { + "renderSeconds": 0.003358006477355957, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.006779074668884277, + "tick": 38 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.006354928016662598, + "tick": 39 + }, + { + "renderSeconds": 0.0027800798416137695, + "simulationSeconds": 0.00612795352935791, + "tick": 40 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.015508055686950684, + "tick": 42 + }, + { + "renderSeconds": 0.003365039825439453, + "simulationSeconds": 0.007215976715087891, + "tick": 43 + }, + { + "renderSeconds": 0.0034350156784057617, + "simulationSeconds": 0.007234096527099609, + "tick": 44 + }, + { + "renderSeconds": 0.002557992935180664, + "simulationSeconds": 0.006400942802429199, + "tick": 45 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.003193974494934082, + "simulationSeconds": 0.006600022315979004, + "tick": 46 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.006429910659790039, + "tick": 47 + }, + { + "renderSeconds": 0.0031440258026123047, + "simulationSeconds": 0.007887005805969238, + "tick": 48 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.014230012893676758, + "tick": 50 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0.006094932556152344, + "tick": 51 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 0.007166028022766113, + "tick": 52 + }, + { + "renderSeconds": 0.0032509565353393555, + "simulationSeconds": 9.5367431640625e-07, + "tick": 52 + }, + { + "renderSeconds": 0.003430008888244629, + "simulationSeconds": 0.007259011268615723, + "tick": 53 + }, + { + "renderSeconds": 0.004705071449279785, + "simulationSeconds": 0.008082032203674316, + "tick": 54 + }, + { + "renderSeconds": 0.003997087478637695, + "simulationSeconds": 0.007200956344604492, + "tick": 55 + }, + { + "renderSeconds": 0.002978086471557617, + "simulationSeconds": 0.015486001968383789, + "tick": 57 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.014851927757263184, + "tick": 59 + }, + { + "renderSeconds": 0.0034509897232055664, + "simulationSeconds": 0.007058978080749512, + "tick": 60 + }, + { + "renderSeconds": 0.0032140016555786133, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.007527947425842285, + "tick": 61 + }, + { + "renderSeconds": 0.0031670331954956055, + "simulationSeconds": 0.008620977401733398, + "tick": 62 + }, + { + "renderSeconds": 0.003908038139343262, + "simulationSeconds": 0.007200002670288086, + "tick": 63 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.013251066207885742, + "tick": 65 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.006739020347595215, + "tick": 66 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0.007081031799316406, + "tick": 67 + }, + { + "renderSeconds": 0.002955913543701172, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 67 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.008005023002624512, + "tick": 68 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.006286978721618652, + "tick": 69 + }, + { + "renderSeconds": 0.0030170679092407227, + "simulationSeconds": 0.0074269771575927734, + "tick": 70 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.014032959938049316, + "tick": 72 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.007138967514038086, + "tick": 73 + }, + { + "renderSeconds": 0.0028460025787353516, + "simulationSeconds": 0.006676912307739258, + "tick": 74 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 0.005982041358947754, + "tick": 75 + }, + { + "renderSeconds": 0.003207087516784668, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0031338930130004883, + "simulationSeconds": 0.007205009460449219, + "tick": 76 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 0.007117033004760742, + "tick": 77 + }, + { + "renderSeconds": 0.003062009811401367, + "simulationSeconds": 0.00751805305480957, + "tick": 78 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.014085054397583008, + "tick": 80 + }, + { + "renderSeconds": 0.0029529333114624023, + "simulationSeconds": 0.007093071937561035, + "tick": 81 + }, + { + "renderSeconds": 0.003000974655151367, + "simulationSeconds": 0.0070879459381103516, + "tick": 82 + }, + { + "renderSeconds": 0.003206968307495117, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.003261089324951172, + "simulationSeconds": 0.007345914840698242, + "tick": 83 + }, + { + "renderSeconds": 0.0035789012908935547, + "simulationSeconds": 0.007634997367858887, + "tick": 84 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.0071070194244384766, + "tick": 85 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.014793038368225098, + "tick": 87 + }, + { + "renderSeconds": 0.003182053565979004, + "simulationSeconds": 0.006291985511779785, + "tick": 88 + }, + { + "renderSeconds": 0.0030330419540405273, + "simulationSeconds": 0.006268978118896484, + "tick": 89 + }, + { + "renderSeconds": 0.002928018569946289, + "simulationSeconds": 0.006535053253173828, + "tick": 90 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0027420520782470703, + "simulationSeconds": 0.006432056427001953, + "tick": 91 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.006769061088562012, + "tick": 92 + }, + { + "renderSeconds": 0.0024489164352416992, + "simulationSeconds": 0.006443977355957031, + "tick": 93 + }, + { + "renderSeconds": 0.002550959587097168, + "simulationSeconds": 0.01279294490814209, + "tick": 95 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0.006963968276977539, + "tick": 96 + }, + { + "renderSeconds": 0.002640962600708008, + "simulationSeconds": 0.006204962730407715, + "tick": 97 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0.006268024444580078, + "tick": 98 + }, + { + "renderSeconds": 0.0025559663772583008, + "simulationSeconds": 0.006466031074523926, + "tick": 99 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006554007530212402, + "tick": 100 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.012801051139831543, + "tick": 102 + }, + { + "renderSeconds": 0.002877950668334961, + "simulationSeconds": 0.006446957588195801, + "tick": 103 + }, + { + "renderSeconds": 0.003213047981262207, + "simulationSeconds": 0.00657200813293457, + "tick": 104 + }, + { + "renderSeconds": 0.0030460357666015625, + "simulationSeconds": 0.006372928619384766, + "tick": 105 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.006365060806274414, + "tick": 106 + }, + { + "renderSeconds": 0.0029959678649902344, + "simulationSeconds": 0.007115960121154785, + "tick": 107 + }, + { + "renderSeconds": 0.003538966178894043, + "simulationSeconds": 0.007537961006164551, + "tick": 108 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.014086008071899414, + "tick": 110 + }, + { + "renderSeconds": 0.003206014633178711, + "simulationSeconds": 0.007357001304626465, + "tick": 111 + }, + { + "renderSeconds": 0.003352046012878418, + "simulationSeconds": 0.007357001304626465, + "tick": 112 + }, + { + "renderSeconds": 0.003175020217895508, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0035179853439331055, + "simulationSeconds": 0.007238984107971191, + "tick": 113 + }, + { + "renderSeconds": 0.003526926040649414, + "simulationSeconds": 0.007009983062744141, + "tick": 114 + }, + { + "renderSeconds": 0.0034750699996948242, + "simulationSeconds": 0.006114959716796875, + "tick": 115 + }, + { + "renderSeconds": 0.0025609731674194336, + "simulationSeconds": 0.013469934463500977, + "tick": 117 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.0065490007400512695, + "tick": 118 + }, + { + "renderSeconds": 0.0033609867095947266, + "simulationSeconds": 0.007619976997375488, + "tick": 119 + }, + { + "renderSeconds": 0.0030039548873901367, + "simulationSeconds": 0.007493019104003906, + "tick": 120 + }, + { + "renderSeconds": 0.0035550594329833984, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0029500722885131836, + "simulationSeconds": 0.0061969757080078125, + "tick": 121 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.007747054100036621, + "tick": 122 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.007301926612854004, + "tick": 123 + }, + { + "renderSeconds": 0.0023980140686035156, + "simulationSeconds": 0.014616966247558594, + "tick": 125 + }, + { + "renderSeconds": 0.0035070180892944336, + "simulationSeconds": 0.006865024566650391, + "tick": 126 + }, + { + "renderSeconds": 0.003092050552368164, + "simulationSeconds": 0.007720947265625, + "tick": 127 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0024510622024536133, + "simulationSeconds": 0.0069010257720947266, + "tick": 128 + }, + { + "renderSeconds": 0.0032279491424560547, + "simulationSeconds": 0.006912946701049805, + "tick": 129 + }, + { + "renderSeconds": 0.00295102596282959, + "simulationSeconds": 0.007434964179992676, + "tick": 130 + }, + { + "renderSeconds": 0.0026929378509521484, + "simulationSeconds": 0.014242053031921387, + "tick": 132 + }, + { + "renderSeconds": 0.0033299922943115234, + "simulationSeconds": 0.00713801383972168, + "tick": 133 + }, + { + "renderSeconds": 0.0032329559326171875, + "simulationSeconds": 0.007057070732116699, + "tick": 134 + }, + { + "renderSeconds": 0.0029550790786743164, + "simulationSeconds": 0.007328987121582031, + "tick": 135 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.0025690793991088867, + "simulationSeconds": 0.006178021430969238, + "tick": 136 + }, + { + "renderSeconds": 0.003102898597717285, + "simulationSeconds": 0.007993102073669434, + "tick": 137 + }, + { + "renderSeconds": 0.00306093692779541, + "simulationSeconds": 0.007324934005737305, + "tick": 138 + }, + { + "renderSeconds": 0.0029920339584350586, + "simulationSeconds": 0.013898015022277832, + "tick": 140 + }, + { + "renderSeconds": 0.0028420686721801758, + "simulationSeconds": 0.00666201114654541, + "tick": 141 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.006325960159301758, + "tick": 142 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0023140907287597656, + "simulationSeconds": 0.005778908729553223, + "tick": 143 + }, + { + "renderSeconds": 0.002830028533935547, + "simulationSeconds": 0.006394028663635254, + "tick": 144 + }, + { + "renderSeconds": 0.0031080245971679688, + "simulationSeconds": 0.007112026214599609, + "tick": 145 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 0.014343023300170898, + "tick": 147 + }, + { + "renderSeconds": 0.003401041030883789, + "simulationSeconds": 0.00701904296875, + "tick": 148 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.006476998329162598, + "tick": 149 + }, + { + "renderSeconds": 0.0028390884399414062, + "simulationSeconds": 0.006433963775634766, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.04290154165937565, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 232, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.007877469062805176, + "preparationSeconds": 0.5237690210342407, + "reducedMotion": false, + "renderSeconds": 0.44445812702178955, + "repetition": 0, + "scenePreparationSeconds": 0.17865300178527832, + "simulationSeconds": 1.0573004484176636, + "snapshotBuildCount": 149, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333332557231 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2234405279159546, + "frameCosts": [ + { + "renderSeconds": 0.1898660659790039, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003994941711425781, + "simulationSeconds": 0.07355606555938721, + "tick": 12 + }, + { + "renderSeconds": 0.002496957778930664, + "simulationSeconds": 0.03718602657318115, + "tick": 18 + }, + { + "renderSeconds": 0.003352046012878418, + "simulationSeconds": 0.019122004508972168, + "tick": 21 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.013077020645141602, + "tick": 23 + }, + { + "renderSeconds": 0.0028859376907348633, + "simulationSeconds": 0.006898045539855957, + "tick": 24 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.006183981895446777, + "tick": 25 + }, + { + "renderSeconds": 0.003431081771850586, + "simulationSeconds": 0.0067670345306396484, + "tick": 26 + }, + { + "renderSeconds": 0.0033000707626342773, + "simulationSeconds": 0.006588935852050781, + "tick": 27 + }, + { + "renderSeconds": 0.002212047576904297, + "simulationSeconds": 0.006844997406005859, + "tick": 28 + }, + { + "renderSeconds": 0.003217935562133789, + "simulationSeconds": 0.006620049476623535, + "tick": 29 + }, + { + "renderSeconds": 0.0033431053161621094, + "simulationSeconds": 0.007454991340637207, + "tick": 30 + }, + { + "renderSeconds": 0.003047943115234375, + "simulationSeconds": 0.006374001502990723, + "tick": 31 + }, + { + "renderSeconds": 0.0034029483795166016, + "simulationSeconds": 0.006729006767272949, + "tick": 32 + }, + { + "renderSeconds": 0.0026210546493530273, + "simulationSeconds": 0.0066869258880615234, + "tick": 33 + }, + { + "renderSeconds": 0.0033229589462280273, + "simulationSeconds": 0.0066519975662231445, + "tick": 34 + }, + { + "renderSeconds": 0.0028649568557739258, + "simulationSeconds": 0.00692903995513916, + "tick": 35 + }, + { + "renderSeconds": 0.0031290054321289062, + "simulationSeconds": 0.006464958190917969, + "tick": 36 + }, + { + "renderSeconds": 0.0028040409088134766, + "simulationSeconds": 0.006933927536010742, + "tick": 37 + }, + { + "renderSeconds": 0.00321805477142334, + "simulationSeconds": 0.006582975387573242, + "tick": 38 + }, + { + "renderSeconds": 0.002659916877746582, + "simulationSeconds": 0.0069561004638671875, + "tick": 39 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.007176041603088379, + "tick": 40 + }, + { + "renderSeconds": 0.003787994384765625, + "simulationSeconds": 0.006751060485839844, + "tick": 41 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.013271093368530273, + "tick": 43 + }, + { + "renderSeconds": 0.0031319856643676758, + "simulationSeconds": 0.006580948829650879, + "tick": 44 + }, + { + "renderSeconds": 0.0034519433975219727, + "simulationSeconds": 0.006895899772644043, + "tick": 45 + }, + { + "renderSeconds": 0.0028960704803466797, + "simulationSeconds": 0.007917046546936035, + "tick": 46 + }, + { + "renderSeconds": 0.0034279823303222656, + "simulationSeconds": 0.006515026092529297, + "tick": 47 + }, + { + "renderSeconds": 0.002772092819213867, + "simulationSeconds": 0.006410002708435059, + "tick": 48 + }, + { + "renderSeconds": 0.0033930540084838867, + "simulationSeconds": 0.007223010063171387, + "tick": 49 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.006561994552612305, + "tick": 50 + }, + { + "renderSeconds": 0.0032389163970947266, + "simulationSeconds": 0.006494045257568359, + "tick": 51 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0.006497025489807129, + "tick": 52 + }, + { + "renderSeconds": 0.003076910972595215, + "simulationSeconds": 0.006879091262817383, + "tick": 53 + }, + { + "renderSeconds": 0.0026509761810302734, + "simulationSeconds": 0.006554961204528809, + "tick": 54 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.006627917289733887, + "tick": 55 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.006219983100891113, + "tick": 56 + }, + { + "renderSeconds": 0.0028170347213745117, + "simulationSeconds": 0.006196022033691406, + "tick": 57 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.006275057792663574, + "tick": 58 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0.0061299800872802734, + "tick": 59 + }, + { + "renderSeconds": 0.003549933433532715, + "simulationSeconds": 0.006492972373962402, + "tick": 60 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.006674051284790039, + "tick": 61 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.006065011024475098, + "tick": 62 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.006806015968322754, + "tick": 63 + }, + { + "renderSeconds": 0.0034520626068115234, + "simulationSeconds": 0.006451964378356934, + "tick": 64 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 0.006937980651855469, + "tick": 65 + }, + { + "renderSeconds": 0.0033121109008789062, + "simulationSeconds": 0.006757974624633789, + "tick": 66 + }, + { + "renderSeconds": 0.0032949447631835938, + "simulationSeconds": 0.006908059120178223, + "tick": 67 + }, + { + "renderSeconds": 0.0031930208206176758, + "simulationSeconds": 0.006407976150512695, + "tick": 68 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.0072269439697265625, + "tick": 69 + }, + { + "renderSeconds": 0.0031789541244506836, + "simulationSeconds": 0.006020069122314453, + "tick": 70 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 0.006510019302368164, + "tick": 71 + }, + { + "renderSeconds": 0.0030480623245239258, + "simulationSeconds": 0.007277011871337891, + "tick": 72 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.0068160295486450195, + "tick": 73 + }, + { + "renderSeconds": 0.002991914749145508, + "simulationSeconds": 0.0066149234771728516, + "tick": 74 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.006112933158874512, + "tick": 75 + }, + { + "renderSeconds": 0.0030440092086791992, + "simulationSeconds": 0.006515979766845703, + "tick": 76 + }, + { + "renderSeconds": 0.0034050941467285156, + "simulationSeconds": 0.006654024124145508, + "tick": 77 + }, + { + "renderSeconds": 0.0029889345169067383, + "simulationSeconds": 0.006574034690856934, + "tick": 78 + }, + { + "renderSeconds": 0.0031479597091674805, + "simulationSeconds": 0.006224989891052246, + "tick": 79 + }, + { + "renderSeconds": 0.0029540061950683594, + "simulationSeconds": 0.006431937217712402, + "tick": 80 + }, + { + "renderSeconds": 0.002895951271057129, + "simulationSeconds": 0.00675201416015625, + "tick": 81 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.006533980369567871, + "tick": 82 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006562948226928711, + "tick": 83 + }, + { + "renderSeconds": 0.0032809972763061523, + "simulationSeconds": 0.0065479278564453125, + "tick": 84 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006376981735229492, + "tick": 85 + }, + { + "renderSeconds": 0.002980947494506836, + "simulationSeconds": 0.006507992744445801, + "tick": 86 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.007472991943359375, + "tick": 87 + }, + { + "renderSeconds": 0.0035840272903442383, + "simulationSeconds": 0.007023930549621582, + "tick": 88 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.006159067153930664, + "tick": 89 + }, + { + "renderSeconds": 0.0032079219818115234, + "simulationSeconds": 0.007134079933166504, + "tick": 90 + }, + { + "renderSeconds": 0.003243088722229004, + "simulationSeconds": 0.006371021270751953, + "tick": 91 + }, + { + "renderSeconds": 0.00333404541015625, + "simulationSeconds": 0.006927013397216797, + "tick": 92 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.015661001205444336, + "tick": 93 + }, + { + "renderSeconds": 0.0035489797592163086, + "simulationSeconds": 0.00707399845123291, + "tick": 94 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.0070819854736328125, + "tick": 95 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.018374085426330566, + "tick": 97 + }, + { + "renderSeconds": 0.0032330751419067383, + "simulationSeconds": 0.006624937057495117, + "tick": 98 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.006393909454345703, + "tick": 99 + }, + { + "renderSeconds": 0.0033420324325561523, + "simulationSeconds": 0.006399035453796387, + "tick": 100 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.006060004234313965, + "tick": 101 + }, + { + "renderSeconds": 0.008744955062866211, + "simulationSeconds": 0.007152080535888672, + "tick": 102 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.013082027435302734, + "tick": 104 + }, + { + "renderSeconds": 0.003103017807006836, + "simulationSeconds": 0.0064890384674072266, + "tick": 105 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.007924079895019531, + "tick": 106 + }, + { + "renderSeconds": 0.0035129785537719727, + "simulationSeconds": 0.007055997848510742, + "tick": 107 + }, + { + "renderSeconds": 0.003289937973022461, + "simulationSeconds": 0.00778508186340332, + "tick": 108 + }, + { + "renderSeconds": 0.003231048583984375, + "simulationSeconds": 0.007082939147949219, + "tick": 109 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.007744908332824707, + "tick": 110 + }, + { + "renderSeconds": 0.003588080406188965, + "simulationSeconds": 0.007697939872741699, + "tick": 111 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0.007715940475463867, + "tick": 112 + }, + { + "renderSeconds": 0.003405928611755371, + "simulationSeconds": 0.007436990737915039, + "tick": 113 + }, + { + "renderSeconds": 0.002557992935180664, + "simulationSeconds": 0.007072091102600098, + "tick": 114 + }, + { + "renderSeconds": 0.0035300254821777344, + "simulationSeconds": 0.006865978240966797, + "tick": 115 + }, + { + "renderSeconds": 0.002583026885986328, + "simulationSeconds": 0.006219983100891113, + "tick": 116 + }, + { + "renderSeconds": 0.0030601024627685547, + "simulationSeconds": 0.006564974784851074, + "tick": 117 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.006592988967895508, + "tick": 118 + }, + { + "renderSeconds": 0.0030759572982788086, + "simulationSeconds": 0.006627917289733887, + "tick": 119 + }, + { + "renderSeconds": 0.0031249523162841797, + "simulationSeconds": 0.008383989334106445, + "tick": 120 + }, + { + "renderSeconds": 0.003283977508544922, + "simulationSeconds": 0.007292032241821289, + "tick": 121 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.007670998573303223, + "tick": 122 + }, + { + "renderSeconds": 0.0033179521560668945, + "simulationSeconds": 0.007484078407287598, + "tick": 123 + }, + { + "renderSeconds": 0.0031120777130126953, + "simulationSeconds": 0.007861971855163574, + "tick": 124 + }, + { + "renderSeconds": 0.0032570362091064453, + "simulationSeconds": 0.007954001426696777, + "tick": 125 + }, + { + "renderSeconds": 0.0031069517135620117, + "simulationSeconds": 0.007614016532897949, + "tick": 126 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.007889032363891602, + "tick": 127 + }, + { + "renderSeconds": 0.0031870603561401367, + "simulationSeconds": 0.007460951805114746, + "tick": 128 + }, + { + "renderSeconds": 0.0036079883575439453, + "simulationSeconds": 0.009304046630859375, + "tick": 129 + }, + { + "renderSeconds": 0.003702998161315918, + "simulationSeconds": 0.0104600191116333, + "tick": 130 + }, + { + "renderSeconds": 0.0036429166793823242, + "simulationSeconds": 0.0074520111083984375, + "tick": 131 + }, + { + "renderSeconds": 0.0036580562591552734, + "simulationSeconds": 0.01002204418182373, + "tick": 132 + }, + { + "renderSeconds": 0.0032869577407836914, + "simulationSeconds": 0.007354021072387695, + "tick": 133 + }, + { + "renderSeconds": 0.0031690597534179688, + "simulationSeconds": 0.007886052131652832, + "tick": 134 + }, + { + "renderSeconds": 0.0036950111389160156, + "simulationSeconds": 0.008798956871032715, + "tick": 135 + }, + { + "renderSeconds": 0.003612995147705078, + "simulationSeconds": 0.009028077125549316, + "tick": 136 + }, + { + "renderSeconds": 0.004230976104736328, + "simulationSeconds": 0.009835958480834961, + "tick": 137 + }, + { + "renderSeconds": 0.0029840469360351562, + "simulationSeconds": 0.008386015892028809, + "tick": 138 + }, + { + "renderSeconds": 0.0030889511108398438, + "simulationSeconds": 0.008005023002624512, + "tick": 139 + }, + { + "renderSeconds": 0.002939939498901367, + "simulationSeconds": 0.0073490142822265625, + "tick": 140 + }, + { + "renderSeconds": 0.0039520263671875, + "simulationSeconds": 0.008398056030273438, + "tick": 141 + }, + { + "renderSeconds": 0.0031069517135620117, + "simulationSeconds": 0.007181048393249512, + "tick": 142 + }, + { + "renderSeconds": 0.0034149885177612305, + "simulationSeconds": 0.008275985717773438, + "tick": 143 + }, + { + "renderSeconds": 0.003818035125732422, + "simulationSeconds": 0.01440894603729248, + "tick": 145 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.007736086845397949, + "tick": 146 + }, + { + "renderSeconds": 0.0032750368118286133, + "simulationSeconds": 0.008035063743591309, + "tick": 147 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 0.006999015808105469, + "tick": 148 + }, + { + "renderSeconds": 0.0032720565795898438, + "simulationSeconds": 0.0071610212326049805, + "tick": 149 + }, + { + "renderSeconds": 0.002987980842590332, + "simulationSeconds": 0.006968975067138672, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 196, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.006923198699951172, + "preparationSeconds": 0.364190936088562, + "reducedMotion": false, + "renderSeconds": 0.5939937829971313, + "repetition": 1, + "scenePreparationSeconds": 0, + "simulationSeconds": 1.0520715713500977, + "snapshotBuildCount": 128, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 33.33333332557231, + "callbackMaxMS": 207.31175001128577 + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.2106708288192749, + "frameCosts": [ + { + "renderSeconds": 0.0009380578994750977, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0011140108108520508, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0009659528732299805, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007429122924804688, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0032570362091064453, + "simulationSeconds": 0.005738973617553711, + "tick": 1 + }, + { + "renderSeconds": 0.0030660629272460938, + "simulationSeconds": 0.007187962532043457, + "tick": 2 + }, + { + "renderSeconds": 0.0029859542846679688, + "simulationSeconds": 0.007277011871337891, + "tick": 3 + }, + { + "renderSeconds": 0.003628969192504883, + "simulationSeconds": 0.009916067123413086, + "tick": 4 + }, + { + "renderSeconds": 0.0037909746170043945, + "simulationSeconds": 0.021242976188659668, + "tick": 6 + }, + { + "renderSeconds": 0.003137946128845215, + "simulationSeconds": 0.017019033432006836, + "tick": 8 + }, + { + "renderSeconds": 0.003430962562561035, + "simulationSeconds": 0.007664918899536133, + "tick": 9 + }, + { + "renderSeconds": 0.002953052520751953, + "simulationSeconds": 0.01231396198272705, + "tick": 11 + }, + { + "renderSeconds": 0.002147078514099121, + "simulationSeconds": 0.012531042098999023, + "tick": 13 + }, + { + "renderSeconds": 0.0027669668197631836, + "simulationSeconds": 0.006559967994689941, + "tick": 14 + }, + { + "renderSeconds": 0.0028290748596191406, + "simulationSeconds": 0.006600022315979004, + "tick": 15 + }, + { + "renderSeconds": 0.0029670000076293945, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.002389073371887207, + "simulationSeconds": 0.006577968597412109, + "tick": 16 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.006490945816040039, + "tick": 17 + }, + { + "renderSeconds": 0.0025500059127807617, + "simulationSeconds": 0.006471991539001465, + "tick": 18 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.007656097412109375, + "tick": 19 + }, + { + "renderSeconds": 0.00299990177154541, + "simulationSeconds": 0.015022039413452148, + "tick": 21 + }, + { + "renderSeconds": 0.0031659603118896484, + "simulationSeconds": 0.0072830915451049805, + "tick": 22 + }, + { + "renderSeconds": 0.0035010576248168945, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.003059983253479004, + "simulationSeconds": 0.00718998908996582, + "tick": 23 + }, + { + "renderSeconds": 0.00330197811126709, + "simulationSeconds": 0.0076830387115478516, + "tick": 24 + }, + { + "renderSeconds": 0.0029140710830688477, + "simulationSeconds": 0.014521956443786621, + "tick": 26 + }, + { + "renderSeconds": 0.003114938735961914, + "simulationSeconds": 0.014786958694458008, + "tick": 28 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.012843012809753418, + "tick": 30 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.013620972633361816, + "tick": 32 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.0066519975662231445, + "tick": 33 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.007918953895568848, + "tick": 34 + }, + { + "renderSeconds": 0.0028769969940185547, + "simulationSeconds": 0.014050006866455078, + "tick": 36 + }, + { + "renderSeconds": 0.0026350021362304688, + "simulationSeconds": 0.00631403923034668, + "tick": 37 + }, + { + "renderSeconds": 0.0036569833755493164, + "simulationSeconds": 0.006777048110961914, + "tick": 38 + }, + { + "renderSeconds": 0.0025539398193359375, + "simulationSeconds": 0.006262063980102539, + "tick": 39 + }, + { + "renderSeconds": 0.003141045570373535, + "simulationSeconds": 0.007678985595703125, + "tick": 40 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0.006369948387145996, + "tick": 41 + }, + { + "renderSeconds": 0.0028710365295410156, + "simulationSeconds": 0.012861967086791992, + "tick": 43 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 0.006414055824279785, + "tick": 44 + }, + { + "renderSeconds": 0.003016948699951172, + "simulationSeconds": 0.006471037864685059, + "tick": 45 + }, + { + "renderSeconds": 0.0027130842208862305, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.0023720264434814453, + "simulationSeconds": 0.006554007530212402, + "tick": 46 + }, + { + "renderSeconds": 0.002812981605529785, + "simulationSeconds": 0.006360054016113281, + "tick": 47 + }, + { + "renderSeconds": 0.0028009414672851562, + "simulationSeconds": 0.0072220563888549805, + "tick": 48 + }, + { + "renderSeconds": 0.0029098987579345703, + "simulationSeconds": 0.007167935371398926, + "tick": 49 + }, + { + "renderSeconds": 0.002812027931213379, + "simulationSeconds": 0.014333963394165039, + "tick": 51 + }, + { + "renderSeconds": 0.0034030675888061523, + "simulationSeconds": 0.0069730281829833984, + "tick": 52 + }, + { + "renderSeconds": 0.004130005836486816, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.00336301326751709, + "simulationSeconds": 0.0076760053634643555, + "tick": 53 + }, + { + "renderSeconds": 0.002870917320251465, + "simulationSeconds": 0.007354021072387695, + "tick": 54 + }, + { + "renderSeconds": 0.0033919811248779297, + "simulationSeconds": 0.007534027099609375, + "tick": 55 + }, + { + "renderSeconds": 0.003000020980834961, + "simulationSeconds": 0.007291913032531738, + "tick": 56 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.012894988059997559, + "tick": 58 + }, + { + "renderSeconds": 0.002704024314880371, + "simulationSeconds": 0.01400303840637207, + "tick": 60 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.013656020164489746, + "tick": 62 + }, + { + "renderSeconds": 0.003157973289489746, + "simulationSeconds": 0.006667017936706543, + "tick": 63 + }, + { + "renderSeconds": 0.0029480457305908203, + "simulationSeconds": 0.006713986396789551, + "tick": 64 + }, + { + "renderSeconds": 0.0023889541625976562, + "simulationSeconds": 0.013571977615356445, + "tick": 66 + }, + { + "renderSeconds": 0.002480030059814453, + "simulationSeconds": 0.012565970420837402, + "tick": 68 + }, + { + "renderSeconds": 0.002521991729736328, + "simulationSeconds": 0.012552976608276367, + "tick": 70 + }, + { + "renderSeconds": 0.002595067024230957, + "simulationSeconds": 0.006187081336975098, + "tick": 71 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 0.013218998908996582, + "tick": 73 + }, + { + "renderSeconds": 0.002950906753540039, + "simulationSeconds": 0.0070220232009887695, + "tick": 74 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.007198929786682129, + "tick": 75 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002917051315307617, + "simulationSeconds": 0.006935000419616699, + "tick": 76 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.007043957710266113, + "tick": 77 + }, + { + "renderSeconds": 0.0033060312271118164, + "simulationSeconds": 0.007001042366027832, + "tick": 78 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.007665038108825684, + "tick": 79 + }, + { + "renderSeconds": 0.00312197208404541, + "simulationSeconds": 0.014837980270385742, + "tick": 81 + }, + { + "renderSeconds": 0.004027009010314941, + "simulationSeconds": 0.008898019790649414, + "tick": 82 + }, + { + "renderSeconds": 0.0037469863891601562, + "simulationSeconds": 0.006928920745849609, + "tick": 83 + }, + { + "renderSeconds": 0.0033069849014282227, + "simulationSeconds": 0.007292032241821289, + "tick": 84 + }, + { + "renderSeconds": 0.0029239654541015625, + "simulationSeconds": 0.007816910743713379, + "tick": 85 + }, + { + "renderSeconds": 0.0036859512329101562, + "simulationSeconds": 0.007465004920959473, + "tick": 86 + }, + { + "renderSeconds": 0.0033559799194335938, + "simulationSeconds": 0.021028995513916016, + "tick": 89 + }, + { + "renderSeconds": 0.003350973129272461, + "simulationSeconds": 0.007532000541687012, + "tick": 90 + }, + { + "renderSeconds": 0.003347039222717285, + "simulationSeconds": 0.0075980424880981445, + "tick": 91 + }, + { + "renderSeconds": 0.0031419992446899414, + "simulationSeconds": 0.006953001022338867, + "tick": 92 + }, + { + "renderSeconds": 0.002528071403503418, + "simulationSeconds": 0.0077250003814697266, + "tick": 93 + }, + { + "renderSeconds": 0.003146052360534668, + "simulationSeconds": 0.006231904029846191, + "tick": 94 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.01290905475616455, + "tick": 96 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.012509942054748535, + "tick": 98 + }, + { + "renderSeconds": 0.002603888511657715, + "simulationSeconds": 0.012900114059448242, + "tick": 100 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.006041049957275391, + "tick": 101 + }, + { + "renderSeconds": 0.0028110742568969727, + "simulationSeconds": 0.012575984001159668, + "tick": 103 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006155967712402344, + "tick": 104 + }, + { + "renderSeconds": 0.003286004066467285, + "simulationSeconds": 0.00639498233795166, + "tick": 105 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002931952476501465, + "simulationSeconds": 0.007153034210205078, + "tick": 106 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.007104039192199707, + "tick": 107 + }, + { + "renderSeconds": 0.0031610727310180664, + "simulationSeconds": 0.007331967353820801, + "tick": 108 + }, + { + "renderSeconds": 0.0035179853439331055, + "simulationSeconds": 0.009099006652832031, + "tick": 109 + }, + { + "renderSeconds": 0.0028499364852905273, + "simulationSeconds": 0.01699209213256836, + "tick": 111 + }, + { + "renderSeconds": 0.0029469728469848633, + "simulationSeconds": 0.015034914016723633, + "tick": 113 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.013522028923034668, + "tick": 115 + }, + { + "renderSeconds": 0.0032858848571777344, + "simulationSeconds": 0.007329106330871582, + "tick": 116 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.013203978538513184, + "tick": 118 + }, + { + "renderSeconds": 0.0026950836181640625, + "simulationSeconds": 0.013251900672912598, + "tick": 120 + }, + { + "renderSeconds": 0.0038750171661376953, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0027039051055908203, + "simulationSeconds": 0.006394028663635254, + "tick": 121 + }, + { + "renderSeconds": 0.0024629831314086914, + "simulationSeconds": 0.006090044975280762, + "tick": 122 + }, + { + "renderSeconds": 0.002564072608947754, + "simulationSeconds": 0.006338000297546387, + "tick": 123 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.007670998573303223, + "tick": 124 + }, + { + "renderSeconds": 0.004922032356262207, + "simulationSeconds": 0.018642067909240723, + "tick": 126 + }, + { + "renderSeconds": 0.0049659013748168945, + "simulationSeconds": 0.012050032615661621, + "tick": 127 + }, + { + "renderSeconds": 0.0035289525985717773, + "simulationSeconds": 0.009745001792907715, + "tick": 128 + }, + { + "renderSeconds": 0.0031780004501342773, + "simulationSeconds": 0.00866091251373291, + "tick": 129 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.0069599151611328125, + "tick": 130 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.007370948791503906, + "tick": 131 + }, + { + "renderSeconds": 0.002908945083618164, + "simulationSeconds": 0.013907074928283691, + "tick": 133 + }, + { + "renderSeconds": 0.0026439428329467773, + "simulationSeconds": 0.011747002601623535, + "tick": 135 + }, + { + "renderSeconds": 0.002805948257446289, + "simulationSeconds": 0.01134800910949707, + "tick": 137 + }, + { + "renderSeconds": 0.002747058868408203, + "simulationSeconds": 0.011968016624450684, + "tick": 139 + }, + { + "renderSeconds": 0.0026140213012695312, + "simulationSeconds": 0.01097095012664795, + "tick": 141 + }, + { + "renderSeconds": 0.0020149946212768555, + "simulationSeconds": 0.00586092472076416, + "tick": 142 + }, + { + "renderSeconds": 0.0022879838943481445, + "simulationSeconds": 0.0061370134353637695, + "tick": 143 + }, + { + "renderSeconds": 0.0020890235900878906, + "simulationSeconds": 0.006019949913024902, + "tick": 144 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.00622403621673584, + "tick": 145 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.006467938423156738, + "tick": 146 + }, + { + "renderSeconds": 0.0026960372924804688, + "simulationSeconds": 0.014415979385375977, + "tick": 148 + }, + { + "renderSeconds": 0.003557920455932617, + "simulationSeconds": 0.008633017539978027, + "tick": 149 + }, + { + "renderSeconds": 0.003489971160888672, + "simulationSeconds": 0.008771061897277832, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.031099958345294, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 192, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.126572847366333, + "preparationSeconds": 0.5742599964141846, + "reducedMotion": false, + "renderSeconds": 0.36154770851135254, + "repetition": 10, + "scenePreparationSeconds": 0.18182003498077393, + "simulationSeconds": 1.0575480461120605, + "snapshotBuildCount": 123, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 36.747833335539326, + "callbackMaxMS": 42.04749999917112 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.17501294612884521, + "frameCosts": [ + { + "renderSeconds": 0.21810996532440186, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0033899545669555664, + "simulationSeconds": 0.08744895458221436, + "tick": 14 + }, + { + "renderSeconds": 0.002801060676574707, + "simulationSeconds": 0.04440593719482422, + "tick": 21 + }, + { + "renderSeconds": 0.0025979280471801758, + "simulationSeconds": 0.02455902099609375, + "tick": 25 + }, + { + "renderSeconds": 0.0028690099716186523, + "simulationSeconds": 0.018493056297302246, + "tick": 28 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.026653051376342773, + "tick": 31 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.02115809917449951, + "tick": 33 + }, + { + "renderSeconds": 0.0030690431594848633, + "simulationSeconds": 0.019205927848815918, + "tick": 36 + }, + { + "renderSeconds": 0.0034629106521606445, + "simulationSeconds": 0.013353943824768066, + "tick": 38 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.012474894523620605, + "tick": 40 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0.013980984687805176, + "tick": 42 + }, + { + "renderSeconds": 0.0031290054321289062, + "simulationSeconds": 0.01344001293182373, + "tick": 44 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 0.006536960601806641, + "tick": 45 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 0.008211016654968262, + "tick": 46 + }, + { + "renderSeconds": 0.003237009048461914, + "simulationSeconds": 0.006177067756652832, + "tick": 47 + }, + { + "renderSeconds": 0.0028508901596069336, + "simulationSeconds": 0.006765007972717285, + "tick": 48 + }, + { + "renderSeconds": 0.003186941146850586, + "simulationSeconds": 0.0066339969635009766, + "tick": 49 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.006157994270324707, + "tick": 50 + }, + { + "renderSeconds": 0.0039920806884765625, + "simulationSeconds": 0.0059670209884643555, + "tick": 51 + }, + { + "renderSeconds": 0.003319978713989258, + "simulationSeconds": 0.007241010665893555, + "tick": 52 + }, + { + "renderSeconds": 0.0032950639724731445, + "simulationSeconds": 0.007992982864379883, + "tick": 53 + }, + { + "renderSeconds": 0.002817988395690918, + "simulationSeconds": 0.014544010162353516, + "tick": 55 + }, + { + "renderSeconds": 0.0031489133834838867, + "simulationSeconds": 0.007355928421020508, + "tick": 56 + }, + { + "renderSeconds": 0.0032349824905395508, + "simulationSeconds": 0.008156061172485352, + "tick": 57 + }, + { + "renderSeconds": 0.003156900405883789, + "simulationSeconds": 0.0073320865631103516, + "tick": 58 + }, + { + "renderSeconds": 0.0035840272903442383, + "simulationSeconds": 0.007345914840698242, + "tick": 59 + }, + { + "renderSeconds": 0.0033080577850341797, + "simulationSeconds": 0.007256984710693359, + "tick": 60 + }, + { + "renderSeconds": 0.003903985023498535, + "simulationSeconds": 0.007951974868774414, + "tick": 61 + }, + { + "renderSeconds": 0.0033609867095947266, + "simulationSeconds": 0.007097005844116211, + "tick": 62 + }, + { + "renderSeconds": 0.003582000732421875, + "simulationSeconds": 0.012753009796142578, + "tick": 64 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.012574076652526855, + "tick": 66 + }, + { + "renderSeconds": 0.0032140016555786133, + "simulationSeconds": 0.013506054878234863, + "tick": 68 + }, + { + "renderSeconds": 0.0025500059127807617, + "simulationSeconds": 0.006456971168518066, + "tick": 69 + }, + { + "renderSeconds": 0.0032540559768676758, + "simulationSeconds": 0.006181001663208008, + "tick": 70 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.006265997886657715, + "tick": 71 + }, + { + "renderSeconds": 0.003231048583984375, + "simulationSeconds": 0.006262063980102539, + "tick": 72 + }, + { + "renderSeconds": 0.002886056900024414, + "simulationSeconds": 0.006703972816467285, + "tick": 73 + }, + { + "renderSeconds": 0.0036220550537109375, + "simulationSeconds": 0.007259964942932129, + "tick": 74 + }, + { + "renderSeconds": 0.0031589269638061523, + "simulationSeconds": 0.007468104362487793, + "tick": 75 + }, + { + "renderSeconds": 0.004168033599853516, + "simulationSeconds": 0.008877992630004883, + "tick": 76 + }, + { + "renderSeconds": 0.0037910938262939453, + "simulationSeconds": 0.009068012237548828, + "tick": 77 + }, + { + "renderSeconds": 0.004326939582824707, + "simulationSeconds": 0.019276022911071777, + "tick": 79 + }, + { + "renderSeconds": 0.0037360191345214844, + "simulationSeconds": 0.018278002738952637, + "tick": 81 + }, + { + "renderSeconds": 0.0033609867095947266, + "simulationSeconds": 0.009240984916687012, + "tick": 82 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.014106988906860352, + "tick": 84 + }, + { + "renderSeconds": 0.0029250383377075195, + "simulationSeconds": 0.012840986251831055, + "tick": 86 + }, + { + "renderSeconds": 0.003715991973876953, + "simulationSeconds": 0.013290047645568848, + "tick": 88 + }, + { + "renderSeconds": 0.003043055534362793, + "simulationSeconds": 0.006497979164123535, + "tick": 89 + }, + { + "renderSeconds": 0.002970099449157715, + "simulationSeconds": 0.007224917411804199, + "tick": 90 + }, + { + "renderSeconds": 0.0061730146408081055, + "simulationSeconds": 0.0070400238037109375, + "tick": 91 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.006635069847106934, + "tick": 92 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 0.0072470903396606445, + "tick": 93 + }, + { + "renderSeconds": 0.003527045249938965, + "simulationSeconds": 0.006873011589050293, + "tick": 94 + }, + { + "renderSeconds": 0.004851937294006348, + "simulationSeconds": 0.011008024215698242, + "tick": 95 + }, + { + "renderSeconds": 0.0062580108642578125, + "simulationSeconds": 0.02843296527862549, + "tick": 97 + }, + { + "renderSeconds": 0.0036290884017944336, + "simulationSeconds": 0.04252898693084717, + "tick": 101 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 0.019412994384765625, + "tick": 104 + }, + { + "renderSeconds": 0.0025789737701416016, + "simulationSeconds": 0.025573015213012695, + "tick": 107 + }, + { + "renderSeconds": 0.00321197509765625, + "simulationSeconds": 0.013676047325134277, + "tick": 109 + }, + { + "renderSeconds": 0.0025930404663085938, + "simulationSeconds": 0.017097949981689453, + "tick": 111 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.014005064964294434, + "tick": 113 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.014351963996887207, + "tick": 115 + }, + { + "renderSeconds": 0.003090977668762207, + "simulationSeconds": 0.006456971168518066, + "tick": 116 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.00795602798461914, + "tick": 117 + }, + { + "renderSeconds": 0.00468897819519043, + "simulationSeconds": 0.0072820186614990234, + "tick": 118 + }, + { + "renderSeconds": 0.0034009218215942383, + "simulationSeconds": 0.00760197639465332, + "tick": 119 + }, + { + "renderSeconds": 0.0032559633255004883, + "simulationSeconds": 0.01578700542449951, + "tick": 121 + }, + { + "renderSeconds": 0.00309908390045166, + "simulationSeconds": 0.00718998908996582, + "tick": 122 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.008571028709411621, + "tick": 123 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.006741046905517578, + "tick": 124 + }, + { + "renderSeconds": 0.0025370121002197266, + "simulationSeconds": 0.006795048713684082, + "tick": 125 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.00656890869140625, + "tick": 126 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.0076340436935424805, + "tick": 127 + }, + { + "renderSeconds": 0.003319978713989258, + "simulationSeconds": 0.006834983825683594, + "tick": 128 + }, + { + "renderSeconds": 0.0037320852279663086, + "simulationSeconds": 0.00651395320892334, + "tick": 129 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.006353974342346191, + "tick": 130 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.007146000862121582, + "tick": 131 + }, + { + "renderSeconds": 0.002544999122619629, + "simulationSeconds": 0.007339000701904297, + "tick": 132 + }, + { + "renderSeconds": 0.0027320384979248047, + "simulationSeconds": 0.006759047508239746, + "tick": 133 + }, + { + "renderSeconds": 0.0025930404663085938, + "simulationSeconds": 0.0065430402755737305, + "tick": 134 + }, + { + "renderSeconds": 0.0029659271240234375, + "simulationSeconds": 0.007477998733520508, + "tick": 135 + }, + { + "renderSeconds": 0.003249049186706543, + "simulationSeconds": 0.007717013359069824, + "tick": 136 + }, + { + "renderSeconds": 0.0036940574645996094, + "simulationSeconds": 0.007594943046569824, + "tick": 137 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.007449030876159668, + "tick": 138 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.007776975631713867, + "tick": 139 + }, + { + "renderSeconds": 0.003674030303955078, + "simulationSeconds": 0.007982015609741211, + "tick": 140 + }, + { + "renderSeconds": 0.0028700828552246094, + "simulationSeconds": 0.007255911827087402, + "tick": 141 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.006674051284790039, + "tick": 142 + }, + { + "renderSeconds": 0.003117084503173828, + "simulationSeconds": 0.007228970527648926, + "tick": 143 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.006051063537597656, + "tick": 144 + }, + { + "renderSeconds": 0.003056049346923828, + "simulationSeconds": 0.0072040557861328125, + "tick": 145 + }, + { + "renderSeconds": 0.00250399112701416, + "simulationSeconds": 0.0061910152435302734, + "tick": 146 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.006041049957275391, + "tick": 147 + }, + { + "renderSeconds": 0.0025750398635864258, + "simulationSeconds": 0.0059299468994140625, + "tick": 148 + }, + { + "renderSeconds": 0.002745985984802246, + "simulationSeconds": 0.00802004337310791, + "tick": 149 + }, + { + "renderSeconds": 0.0034750699996948242, + "simulationSeconds": 0.006057024002075195, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 130, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004866123199462891, + "preparationSeconds": 0.3612329959869385, + "reducedMotion": false, + "renderSeconds": 0.5220026969909668, + "repetition": 2, + "scenePreparationSeconds": 0, + "simulationSeconds": 1.090637445449829, + "snapshotBuildCount": 96, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 56.8054583563935, + "callbackMaxMS": 248.3185833261814 + } +] \ No newline at end of file diff --git a/docs/review/reduced-motion-validation/recorded-summary.json b/docs/review/reduced-motion-validation/recorded-summary.json new file mode 100644 index 00000000..3057c1bd --- /dev/null +++ b/docs/review/reduced-motion-validation/recorded-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 113, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792109876.36, + "passedTests" : 111, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792109646.799, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "27% of duration", + "text" : "1 longest test run with outlier durations exceeding 19.47s (three standard deviations)" + } + ], + "totalTestCount" : 111 +} diff --git a/docs/review/reduced-motion-validation/serial-comparison.json b/docs/review/reduced-motion-validation/serial-comparison.json new file mode 100644 index 00000000..4bce7ee5 --- /dev/null +++ b/docs/review/reduced-motion-validation/serial-comparison.json @@ -0,0 +1,8479 @@ +[ + { + "axis": 16383, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.22688651084899902, + "frameCosts": [ + { + "renderSeconds": 0.0005340576171875, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009399652481079102, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000903010368347168, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006259679794311523, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0026619434356689453, + "simulationSeconds": 0.004508018493652344, + "tick": 1 + }, + { + "renderSeconds": 0.002107977867126465, + "simulationSeconds": 0.005650997161865234, + "tick": 2 + }, + { + "renderSeconds": 0.002249002456665039, + "simulationSeconds": 0.005505919456481934, + "tick": 3 + }, + { + "renderSeconds": 0.0021599531173706055, + "simulationSeconds": 0.006019949913024902, + "tick": 4 + }, + { + "renderSeconds": 0.002538919448852539, + "simulationSeconds": 0.006219983100891113, + "tick": 5 + }, + { + "renderSeconds": 0.0025739669799804688, + "simulationSeconds": 0.012771010398864746, + "tick": 7 + }, + { + "renderSeconds": 0.0031560659408569336, + "simulationSeconds": 9.5367431640625e-07, + "tick": 7 + }, + { + "renderSeconds": 0.0030080080032348633, + "simulationSeconds": 0.006880998611450195, + "tick": 8 + }, + { + "renderSeconds": 0.0028840303421020508, + "simulationSeconds": 0.0070639848709106445, + "tick": 9 + }, + { + "renderSeconds": 0.00266110897064209, + "simulationSeconds": 0.006642937660217285, + "tick": 10 + }, + { + "renderSeconds": 0.002956986427307129, + "simulationSeconds": 0.007089972496032715, + "tick": 11 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.006340980529785156, + "tick": 12 + }, + { + "renderSeconds": 0.0031260251998901367, + "simulationSeconds": 0.006360054016113281, + "tick": 13 + }, + { + "renderSeconds": 0.0027369260787963867, + "simulationSeconds": 0.012643933296203613, + "tick": 15 + }, + { + "renderSeconds": 0.0029659271240234375, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.006376028060913086, + "tick": 16 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.006471991539001465, + "tick": 17 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006657958030700684, + "tick": 18 + }, + { + "renderSeconds": 0.0027860403060913086, + "simulationSeconds": 0.006309986114501953, + "tick": 19 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.0063359737396240234, + "tick": 20 + }, + { + "renderSeconds": 0.0025180578231811523, + "simulationSeconds": 0.012711048126220703, + "tick": 22 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0025560855865478516, + "simulationSeconds": 0.0065310001373291016, + "tick": 23 + }, + { + "renderSeconds": 0.002850055694580078, + "simulationSeconds": 0.006361961364746094, + "tick": 24 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.007086038589477539, + "tick": 25 + }, + { + "renderSeconds": 0.002644062042236328, + "simulationSeconds": 0.006549954414367676, + "tick": 26 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.006143927574157715, + "tick": 27 + }, + { + "renderSeconds": 0.0031609535217285156, + "simulationSeconds": 0.007837057113647461, + "tick": 28 + }, + { + "renderSeconds": 0.0031129121780395508, + "simulationSeconds": 0.014288067817687988, + "tick": 30 + }, + { + "renderSeconds": 0.0035480260848999023, + "simulationSeconds": 9.5367431640625e-07, + "tick": 30 + }, + { + "renderSeconds": 0.003119945526123047, + "simulationSeconds": 0.007248997688293457, + "tick": 31 + }, + { + "renderSeconds": 0.0031290054321289062, + "simulationSeconds": 0.007194995880126953, + "tick": 32 + }, + { + "renderSeconds": 0.0029369592666625977, + "simulationSeconds": 0.007362961769104004, + "tick": 33 + }, + { + "renderSeconds": 0.002957940101623535, + "simulationSeconds": 0.007178068161010742, + "tick": 34 + }, + { + "renderSeconds": 0.0029489994049072266, + "simulationSeconds": 0.007351994514465332, + "tick": 35 + }, + { + "renderSeconds": 0.0030069351196289062, + "simulationSeconds": 0.01405799388885498, + "tick": 37 + }, + { + "renderSeconds": 0.003076910972595215, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.003144979476928711, + "simulationSeconds": 0.007300972938537598, + "tick": 38 + }, + { + "renderSeconds": 0.003079056739807129, + "simulationSeconds": 0.0071430206298828125, + "tick": 39 + }, + { + "renderSeconds": 0.0029790401458740234, + "simulationSeconds": 0.008925914764404297, + "tick": 40 + }, + { + "renderSeconds": 0.002995014190673828, + "simulationSeconds": 0.0070410966873168945, + "tick": 41 + }, + { + "renderSeconds": 0.0038260221481323242, + "simulationSeconds": 0.009428977966308594, + "tick": 42 + }, + { + "renderSeconds": 0.003529071807861328, + "simulationSeconds": 0.009459972381591797, + "tick": 43 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.015357017517089844, + "tick": 45 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.007300019264221191, + "tick": 46 + }, + { + "renderSeconds": 0.0026470422744750977, + "simulationSeconds": 0.006569027900695801, + "tick": 47 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006817936897277832, + "tick": 48 + }, + { + "renderSeconds": 0.0030820369720458984, + "simulationSeconds": 0.006229996681213379, + "tick": 49 + }, + { + "renderSeconds": 0.002151012420654297, + "simulationSeconds": 0.006582021713256836, + "tick": 50 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.01255500316619873, + "tick": 52 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.00734400749206543, + "tick": 53 + }, + { + "renderSeconds": 0.002646923065185547, + "simulationSeconds": 0.0071599483489990234, + "tick": 54 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.006393074989318848, + "tick": 55 + }, + { + "renderSeconds": 0.0029549598693847656, + "simulationSeconds": 0.006749987602233887, + "tick": 56 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.006370067596435547, + "tick": 57 + }, + { + "renderSeconds": 0.002660989761352539, + "simulationSeconds": 0.006544947624206543, + "tick": 58 + }, + { + "renderSeconds": 0.0027159452438354492, + "simulationSeconds": 0.012392044067382812, + "tick": 60 + }, + { + "renderSeconds": 0.0028519630432128906, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.006569981575012207, + "tick": 61 + }, + { + "renderSeconds": 0.0029419660568237305, + "simulationSeconds": 0.006219983100891113, + "tick": 62 + }, + { + "renderSeconds": 0.00268399715423584, + "simulationSeconds": 0.006591916084289551, + "tick": 63 + }, + { + "renderSeconds": 0.002795100212097168, + "simulationSeconds": 0.00618290901184082, + "tick": 64 + }, + { + "renderSeconds": 0.0022579431533813477, + "simulationSeconds": 0.006641030311584473, + "tick": 65 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.012440919876098633, + "tick": 67 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0029259920120239258, + "simulationSeconds": 0.006364941596984863, + "tick": 68 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.006579995155334473, + "tick": 69 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.0068100690841674805, + "tick": 70 + }, + { + "renderSeconds": 0.0031709671020507812, + "simulationSeconds": 0.006641030311584473, + "tick": 71 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.006223917007446289, + "tick": 72 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.006489992141723633, + "tick": 73 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.012253999710083008, + "tick": 75 + }, + { + "renderSeconds": 0.0026209354400634766, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0.006193041801452637, + "tick": 76 + }, + { + "renderSeconds": 0.0024989843368530273, + "simulationSeconds": 0.006142020225524902, + "tick": 77 + }, + { + "renderSeconds": 0.0025860071182250977, + "simulationSeconds": 0.006330013275146484, + "tick": 78 + }, + { + "renderSeconds": 0.003278970718383789, + "simulationSeconds": 0.007321000099182129, + "tick": 79 + }, + { + "renderSeconds": 0.0030330419540405273, + "simulationSeconds": 0.007508993148803711, + "tick": 80 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 0.014315009117126465, + "tick": 82 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.0070650577545166016, + "tick": 83 + }, + { + "renderSeconds": 0.002978086471557617, + "simulationSeconds": 0.007124066352844238, + "tick": 84 + }, + { + "renderSeconds": 0.002969026565551758, + "simulationSeconds": 0.007352948188781738, + "tick": 85 + }, + { + "renderSeconds": 0.0026820898056030273, + "simulationSeconds": 0.006228923797607422, + "tick": 86 + }, + { + "renderSeconds": 0.002964019775390625, + "simulationSeconds": 0.006595969200134277, + "tick": 87 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.006286978721618652, + "tick": 88 + }, + { + "renderSeconds": 0.0026960372924804688, + "simulationSeconds": 0.012031078338623047, + "tick": 90 + }, + { + "renderSeconds": 0.0029549598693847656, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 90 + }, + { + "renderSeconds": 0.0021109580993652344, + "simulationSeconds": 0.0062760114669799805, + "tick": 91 + }, + { + "renderSeconds": 0.002068042755126953, + "simulationSeconds": 0.006268978118896484, + "tick": 92 + }, + { + "renderSeconds": 0.0020760297775268555, + "simulationSeconds": 0.006170988082885742, + "tick": 93 + }, + { + "renderSeconds": 0.0020810365676879883, + "simulationSeconds": 0.006268978118896484, + "tick": 94 + }, + { + "renderSeconds": 0.0020639896392822266, + "simulationSeconds": 0.006409049034118652, + "tick": 95 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.011580944061279297, + "tick": 97 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.002200007438659668, + "simulationSeconds": 0.007019996643066406, + "tick": 98 + }, + { + "renderSeconds": 0.002095937728881836, + "simulationSeconds": 0.0063179731369018555, + "tick": 99 + }, + { + "renderSeconds": 0.0024770498275756836, + "simulationSeconds": 0.006597995758056641, + "tick": 100 + }, + { + "renderSeconds": 0.0022110939025878906, + "simulationSeconds": 0.0064629316329956055, + "tick": 101 + }, + { + "renderSeconds": 0.0023059844970703125, + "simulationSeconds": 0.006464958190917969, + "tick": 102 + }, + { + "renderSeconds": 0.002187013626098633, + "simulationSeconds": 0.006818056106567383, + "tick": 103 + }, + { + "renderSeconds": 0.0026700496673583984, + "simulationSeconds": 0.011673927307128906, + "tick": 105 + }, + { + "renderSeconds": 0.0030999183654785156, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002254962921142578, + "simulationSeconds": 0.00638890266418457, + "tick": 106 + }, + { + "renderSeconds": 0.0020890235900878906, + "simulationSeconds": 0.00618898868560791, + "tick": 107 + }, + { + "renderSeconds": 0.002516031265258789, + "simulationSeconds": 0.006352901458740234, + "tick": 108 + }, + { + "renderSeconds": 0.002962946891784668, + "simulationSeconds": 0.006376028060913086, + "tick": 109 + }, + { + "renderSeconds": 0.0028799772262573242, + "simulationSeconds": 0.006314992904663086, + "tick": 110 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.014105081558227539, + "tick": 112 + }, + { + "renderSeconds": 0.003247976303100586, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0031419992446899414, + "simulationSeconds": 0.007321953773498535, + "tick": 113 + }, + { + "renderSeconds": 0.0032320022583007812, + "simulationSeconds": 0.007583022117614746, + "tick": 114 + }, + { + "renderSeconds": 0.0036350488662719727, + "simulationSeconds": 0.009297013282775879, + "tick": 115 + }, + { + "renderSeconds": 0.0035439729690551758, + "simulationSeconds": 0.009027957916259766, + "tick": 116 + }, + { + "renderSeconds": 0.003776073455810547, + "simulationSeconds": 0.008836030960083008, + "tick": 117 + }, + { + "renderSeconds": 0.0032329559326171875, + "simulationSeconds": 0.006981968879699707, + "tick": 118 + }, + { + "renderSeconds": 0.003177046775817871, + "simulationSeconds": 0.01449894905090332, + "tick": 120 + }, + { + "renderSeconds": 0.0029380321502685547, + "simulationSeconds": 0.01254892349243164, + "tick": 122 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 9.5367431640625e-07, + "tick": 122 + }, + { + "renderSeconds": 0.002496004104614258, + "simulationSeconds": 0.006349921226501465, + "tick": 123 + }, + { + "renderSeconds": 0.0025910139083862305, + "simulationSeconds": 0.00745999813079834, + "tick": 124 + }, + { + "renderSeconds": 0.0024639368057250977, + "simulationSeconds": 0.006309986114501953, + "tick": 125 + }, + { + "renderSeconds": 0.0026319026947021484, + "simulationSeconds": 0.011981010437011719, + "tick": 127 + }, + { + "renderSeconds": 0.0029560327529907227, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0024219751358032227, + "simulationSeconds": 0.006338000297546387, + "tick": 128 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.0065610408782958984, + "tick": 129 + }, + { + "renderSeconds": 0.0024639368057250977, + "simulationSeconds": 0.006551027297973633, + "tick": 130 + }, + { + "renderSeconds": 0.0025800466537475586, + "simulationSeconds": 0.006799936294555664, + "tick": 131 + }, + { + "renderSeconds": 0.002485990524291992, + "simulationSeconds": 0.006487011909484863, + "tick": 132 + }, + { + "renderSeconds": 0.002642989158630371, + "simulationSeconds": 0.006415963172912598, + "tick": 133 + }, + { + "renderSeconds": 0.002496004104614258, + "simulationSeconds": 0.012187004089355469, + "tick": 135 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.0026029348373413086, + "simulationSeconds": 0.00643002986907959, + "tick": 136 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.006262063980102539, + "tick": 137 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.006631016731262207, + "tick": 138 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 0.006618976593017578, + "tick": 139 + }, + { + "renderSeconds": 0.002569913864135742, + "simulationSeconds": 0.006469011306762695, + "tick": 140 + }, + { + "renderSeconds": 0.0025540590286254883, + "simulationSeconds": 0.011525988578796387, + "tick": 142 + }, + { + "renderSeconds": 0.003144979476928711, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.002541065216064453, + "simulationSeconds": 0.005849957466125488, + "tick": 143 + }, + { + "renderSeconds": 0.0027440786361694336, + "simulationSeconds": 0.006196022033691406, + "tick": 144 + }, + { + "renderSeconds": 0.0026199817657470703, + "simulationSeconds": 0.0061730146408081055, + "tick": 145 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.0059909820556640625, + "tick": 146 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.005941033363342285, + "tick": 147 + }, + { + "renderSeconds": 0.002952098846435547, + "simulationSeconds": 0.006763935089111328, + "tick": 148 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.014047980308532715, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.0337381666759029, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 236, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005091428756713867, + "preparationSeconds": 0.4093019962310791, + "reducedMotion": false, + "renderSeconds": 0.4106459617614746, + "repetition": 0, + "scenePreparationSeconds": 0.11845505237579346, + "simulationSeconds": 0.9984259605407715, + "snapshotBuildCount": 151, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.88695832109079 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2328660488128662, + "frameCosts": [ + { + "renderSeconds": 0.0009369850158691406, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000843048095703125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0012290477752685547, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0009430646896362305, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0033320188522338867, + "simulationSeconds": 0.011346936225891113, + "tick": 2 + }, + { + "renderSeconds": 0.0030289888381958008, + "simulationSeconds": 0.006786942481994629, + "tick": 3 + }, + { + "renderSeconds": 0.003192901611328125, + "simulationSeconds": 0.006640076637268066, + "tick": 4 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0.006691098213195801, + "tick": 5 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.006630063056945801, + "tick": 6 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.006550908088684082, + "tick": 7 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 7 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.006049990653991699, + "tick": 8 + }, + { + "renderSeconds": 0.0026760101318359375, + "simulationSeconds": 0.0117720365524292, + "tick": 10 + }, + { + "renderSeconds": 0.002592921257019043, + "simulationSeconds": 0.006374001502990723, + "tick": 11 + }, + { + "renderSeconds": 0.002460956573486328, + "simulationSeconds": 0.007003068923950195, + "tick": 12 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.006184101104736328, + "tick": 13 + }, + { + "renderSeconds": 0.0026520490646362305, + "simulationSeconds": 0.006368041038513184, + "tick": 14 + }, + { + "renderSeconds": 0.0029050111770629883, + "simulationSeconds": 0.006219983100891113, + "tick": 15 + }, + { + "renderSeconds": 0.0031239986419677734, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0025360584259033203, + "simulationSeconds": 0.012570023536682129, + "tick": 17 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.006705045700073242, + "tick": 18 + }, + { + "renderSeconds": 0.0028350353240966797, + "simulationSeconds": 0.006525993347167969, + "tick": 19 + }, + { + "renderSeconds": 0.0026619434356689453, + "simulationSeconds": 0.006226897239685059, + "tick": 20 + }, + { + "renderSeconds": 0.0028879642486572266, + "simulationSeconds": 0.006502032279968262, + "tick": 21 + }, + { + "renderSeconds": 0.0033560991287231445, + "simulationSeconds": 0.006514906883239746, + "tick": 22 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 22 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.006111025810241699, + "tick": 23 + }, + { + "renderSeconds": 0.0026949644088745117, + "simulationSeconds": 0.013467073440551758, + "tick": 25 + }, + { + "renderSeconds": 0.003321051597595215, + "simulationSeconds": 0.00627291202545166, + "tick": 26 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 0.006613016128540039, + "tick": 27 + }, + { + "renderSeconds": 0.003297090530395508, + "simulationSeconds": 0.006414890289306641, + "tick": 28 + }, + { + "renderSeconds": 0.0027549266815185547, + "simulationSeconds": 0.00671994686126709, + "tick": 29 + }, + { + "renderSeconds": 0.003327012062072754, + "simulationSeconds": 0.007017016410827637, + "tick": 30 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 9.5367431640625e-07, + "tick": 30 + }, + { + "renderSeconds": 0.0026230812072753906, + "simulationSeconds": 0.012879014015197754, + "tick": 32 + }, + { + "renderSeconds": 0.0029959678649902344, + "simulationSeconds": 0.006392955780029297, + "tick": 33 + }, + { + "renderSeconds": 0.0028400421142578125, + "simulationSeconds": 0.006477952003479004, + "tick": 34 + }, + { + "renderSeconds": 0.002853989601135254, + "simulationSeconds": 0.006390929222106934, + "tick": 35 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.006376981735229492, + "tick": 36 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.006492018699645996, + "tick": 37 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 9.5367431640625e-07, + "tick": 37 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.006760001182556152, + "tick": 38 + }, + { + "renderSeconds": 0.002586960792541504, + "simulationSeconds": 0.01187896728515625, + "tick": 40 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.006003022193908691, + "tick": 41 + }, + { + "renderSeconds": 0.0028400421142578125, + "simulationSeconds": 0.0065729618072509766, + "tick": 42 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.0064280033111572266, + "tick": 43 + }, + { + "renderSeconds": 0.002710103988647461, + "simulationSeconds": 0.006563901901245117, + "tick": 44 + }, + { + "renderSeconds": 0.003442049026489258, + "simulationSeconds": 0.00648808479309082, + "tick": 45 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0027180910110473633, + "simulationSeconds": 0.012199044227600098, + "tick": 47 + }, + { + "renderSeconds": 0.003043055534362793, + "simulationSeconds": 0.006428956985473633, + "tick": 48 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0.00718998908996582, + "tick": 49 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.0064629316329956055, + "tick": 50 + }, + { + "renderSeconds": 0.002829909324645996, + "simulationSeconds": 0.006583094596862793, + "tick": 51 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.006466031074523926, + "tick": 52 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 52 + }, + { + "renderSeconds": 0.0030459165573120117, + "simulationSeconds": 0.0071239471435546875, + "tick": 53 + }, + { + "renderSeconds": 0.002501964569091797, + "simulationSeconds": 0.015099048614501953, + "tick": 55 + }, + { + "renderSeconds": 0.0029709339141845703, + "simulationSeconds": 0.006273984909057617, + "tick": 56 + }, + { + "renderSeconds": 0.0025109052658081055, + "simulationSeconds": 0.006019949913024902, + "tick": 57 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.006788015365600586, + "tick": 58 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 0.006022930145263672, + "tick": 59 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.0063849687576293945, + "tick": 60 + }, + { + "renderSeconds": 0.002933979034423828, + "simulationSeconds": 9.5367431640625e-07, + "tick": 60 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.012398004531860352, + "tick": 62 + }, + { + "renderSeconds": 0.0023850202560424805, + "simulationSeconds": 0.006657004356384277, + "tick": 63 + }, + { + "renderSeconds": 0.0020189285278320312, + "simulationSeconds": 0.006670951843261719, + "tick": 64 + }, + { + "renderSeconds": 0.002472996711730957, + "simulationSeconds": 0.00707089900970459, + "tick": 65 + }, + { + "renderSeconds": 0.0022521018981933594, + "simulationSeconds": 0.0066030025482177734, + "tick": 66 + }, + { + "renderSeconds": 0.0021049976348876953, + "simulationSeconds": 0.0065909624099731445, + "tick": 67 + }, + { + "renderSeconds": 0.0029870271682739258, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.0020949840545654297, + "simulationSeconds": 0.006245970726013184, + "tick": 68 + }, + { + "renderSeconds": 0.0026100873947143555, + "simulationSeconds": 0.011417984962463379, + "tick": 70 + }, + { + "renderSeconds": 0.002337932586669922, + "simulationSeconds": 0.006265044212341309, + "tick": 71 + }, + { + "renderSeconds": 0.0021779537200927734, + "simulationSeconds": 0.00651097297668457, + "tick": 72 + }, + { + "renderSeconds": 0.0026439428329467773, + "simulationSeconds": 0.006183981895446777, + "tick": 73 + }, + { + "renderSeconds": 0.0024720430374145508, + "simulationSeconds": 0.006497979164123535, + "tick": 74 + }, + { + "renderSeconds": 0.0028449296951293945, + "simulationSeconds": 0.0064629316329956055, + "tick": 75 + }, + { + "renderSeconds": 0.003091096878051758, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002386927604675293, + "simulationSeconds": 0.012181997299194336, + "tick": 77 + }, + { + "renderSeconds": 0.0026990175247192383, + "simulationSeconds": 0.0063610076904296875, + "tick": 78 + }, + { + "renderSeconds": 0.0030900239944458008, + "simulationSeconds": 0.006966948509216309, + "tick": 79 + }, + { + "renderSeconds": 0.003121018409729004, + "simulationSeconds": 0.007733941078186035, + "tick": 80 + }, + { + "renderSeconds": 0.0031050443649291992, + "simulationSeconds": 0.0072280168533325195, + "tick": 81 + }, + { + "renderSeconds": 0.003906965255737305, + "simulationSeconds": 0.008528947830200195, + "tick": 82 + }, + { + "renderSeconds": 0.0036679506301879883, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 82 + }, + { + "renderSeconds": 0.0036649703979492188, + "simulationSeconds": 0.009235978126525879, + "tick": 83 + }, + { + "renderSeconds": 0.003080010414123535, + "simulationSeconds": 0.015943050384521484, + "tick": 85 + }, + { + "renderSeconds": 0.0030111074447631836, + "simulationSeconds": 0.006971955299377441, + "tick": 86 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.00692903995513916, + "tick": 87 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0.006173968315124512, + "tick": 88 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0.006150960922241211, + "tick": 89 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.0064460039138793945, + "tick": 90 + }, + { + "renderSeconds": 0.002644062042236328, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.012372970581054688, + "tick": 92 + }, + { + "renderSeconds": 0.002813100814819336, + "simulationSeconds": 0.006581902503967285, + "tick": 93 + }, + { + "renderSeconds": 0.003289937973022461, + "simulationSeconds": 0.006721973419189453, + "tick": 94 + }, + { + "renderSeconds": 0.002721071243286133, + "simulationSeconds": 0.0061299800872802734, + "tick": 95 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0.006309032440185547, + "tick": 96 + }, + { + "renderSeconds": 0.0025779008865356445, + "simulationSeconds": 0.006162047386169434, + "tick": 97 + }, + { + "renderSeconds": 0.002708911895751953, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0028400421142578125, + "simulationSeconds": 0.0065419673919677734, + "tick": 98 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0.013508081436157227, + "tick": 100 + }, + { + "renderSeconds": 0.0033189058303833008, + "simulationSeconds": 0.006844997406005859, + "tick": 101 + }, + { + "renderSeconds": 0.0030570030212402344, + "simulationSeconds": 0.00725102424621582, + "tick": 102 + }, + { + "renderSeconds": 0.0029180049896240234, + "simulationSeconds": 0.007369041442871094, + "tick": 103 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.007182955741882324, + "tick": 104 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 0.006694912910461426, + "tick": 105 + }, + { + "renderSeconds": 0.003163933753967285, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002965092658996582, + "simulationSeconds": 0.014101028442382812, + "tick": 107 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.00766301155090332, + "tick": 108 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.0061730146408081055, + "tick": 109 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.006639003753662109, + "tick": 110 + }, + { + "renderSeconds": 0.0027359724044799805, + "simulationSeconds": 0.006827116012573242, + "tick": 111 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 0.006384015083312988, + "tick": 112 + }, + { + "renderSeconds": 0.002640962600708008, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0027800798416137695, + "simulationSeconds": 0.006082057952880859, + "tick": 113 + }, + { + "renderSeconds": 0.0028759241104125977, + "simulationSeconds": 0.013053059577941895, + "tick": 115 + }, + { + "renderSeconds": 0.0029031038284301758, + "simulationSeconds": 0.006639003753662109, + "tick": 116 + }, + { + "renderSeconds": 0.0026100873947143555, + "simulationSeconds": 0.006474971771240234, + "tick": 117 + }, + { + "renderSeconds": 0.003432035446166992, + "simulationSeconds": 0.0065850019454956055, + "tick": 118 + }, + { + "renderSeconds": 0.0025440454483032227, + "simulationSeconds": 0.006927013397216797, + "tick": 119 + }, + { + "renderSeconds": 0.0023020505905151367, + "simulationSeconds": 0.006680011749267578, + "tick": 120 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0, + "tick": 120 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.012464046478271484, + "tick": 122 + }, + { + "renderSeconds": 0.002228975296020508, + "simulationSeconds": 0.0066509246826171875, + "tick": 123 + }, + { + "renderSeconds": 0.0022879838943481445, + "simulationSeconds": 0.006988048553466797, + "tick": 124 + }, + { + "renderSeconds": 0.002024054527282715, + "simulationSeconds": 0.006455063819885254, + "tick": 125 + }, + { + "renderSeconds": 0.0022050142288208008, + "simulationSeconds": 0.006969928741455078, + "tick": 126 + }, + { + "renderSeconds": 0.0021589994430541992, + "simulationSeconds": 0.0066869258880615234, + "tick": 127 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 127 + }, + { + "renderSeconds": 0.0020869970321655273, + "simulationSeconds": 0.006247997283935547, + "tick": 128 + }, + { + "renderSeconds": 0.002577066421508789, + "simulationSeconds": 0.012318968772888184, + "tick": 130 + }, + { + "renderSeconds": 0.002135038375854492, + "simulationSeconds": 0.0067179203033447266, + "tick": 131 + }, + { + "renderSeconds": 0.0023969411849975586, + "simulationSeconds": 0.006605982780456543, + "tick": 132 + }, + { + "renderSeconds": 0.0020470619201660156, + "simulationSeconds": 0.006509900093078613, + "tick": 133 + }, + { + "renderSeconds": 0.002073049545288086, + "simulationSeconds": 0.006376028060913086, + "tick": 134 + }, + { + "renderSeconds": 0.0020149946212768555, + "simulationSeconds": 0.006181001663208008, + "tick": 135 + }, + { + "renderSeconds": 0.0023909807205200195, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.0024889707565307617, + "simulationSeconds": 0.012397050857543945, + "tick": 137 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0.0063620805740356445, + "tick": 138 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 0.006088972091674805, + "tick": 139 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.006413936614990234, + "tick": 140 + }, + { + "renderSeconds": 0.0031000375747680664, + "simulationSeconds": 0.006665945053100586, + "tick": 141 + }, + { + "renderSeconds": 0.002958059310913086, + "simulationSeconds": 0.0072400569915771484, + "tick": 142 + }, + { + "renderSeconds": 0.0032579898834228516, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 142 + }, + { + "renderSeconds": 0.003013014793395996, + "simulationSeconds": 0.006883978843688965, + "tick": 143 + }, + { + "renderSeconds": 0.002859950065612793, + "simulationSeconds": 0.014364004135131836, + "tick": 145 + }, + { + "renderSeconds": 0.0031510591506958008, + "simulationSeconds": 0.006742954254150391, + "tick": 146 + }, + { + "renderSeconds": 0.0028339624404907227, + "simulationSeconds": 0.007413029670715332, + "tick": 147 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.007052063941955566, + "tick": 148 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.0064209699630737305, + "tick": 149 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.0060340166091918945, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.029508833336876705, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 240, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005231618881225586, + "preparationSeconds": 0.47555601596832275, + "reducedMotion": false, + "renderSeconds": 0.4186314344406128, + "repetition": 2, + "scenePreparationSeconds": 0.19801104068756104, + "simulationSeconds": 0.9866182804107666, + "snapshotBuildCount": 153, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.2266387939453125, + "frameCosts": [ + { + "renderSeconds": 0.0009299516677856445, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009549856185913086, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0008919239044189453, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.000926971435546875, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.003533005714416504, + "simulationSeconds": 0.0055389404296875, + "tick": 1 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0.00631403923034668, + "tick": 2 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006144046783447266, + "tick": 3 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.006018996238708496, + "tick": 4 + }, + { + "renderSeconds": 0.002768993377685547, + "simulationSeconds": 0.006438016891479492, + "tick": 5 + }, + { + "renderSeconds": 0.0025049448013305664, + "simulationSeconds": 0.012240052223205566, + "tick": 7 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.0060700178146362305, + "tick": 8 + }, + { + "renderSeconds": 0.0026390552520751953, + "simulationSeconds": 0.006425023078918457, + "tick": 9 + }, + { + "renderSeconds": 0.0026149749755859375, + "simulationSeconds": 0.006341099739074707, + "tick": 10 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.0063550472259521484, + "tick": 11 + }, + { + "renderSeconds": 0.0028189420700073242, + "simulationSeconds": 0.006356000900268555, + "tick": 12 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.012672066688537598, + "tick": 14 + }, + { + "renderSeconds": 0.0025099515914916992, + "simulationSeconds": 0.006864070892333984, + "tick": 15 + }, + { + "renderSeconds": 0.0026900768280029297, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0027669668197631836, + "simulationSeconds": 0.006364107131958008, + "tick": 16 + }, + { + "renderSeconds": 0.0027250051498413086, + "simulationSeconds": 0.006470918655395508, + "tick": 17 + }, + { + "renderSeconds": 0.002664923667907715, + "simulationSeconds": 0.0072519779205322266, + "tick": 18 + }, + { + "renderSeconds": 0.0027730464935302734, + "simulationSeconds": 0.0070629119873046875, + "tick": 19 + }, + { + "renderSeconds": 0.0028760433197021484, + "simulationSeconds": 0.006657958030700684, + "tick": 20 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.0130079984664917, + "tick": 22 + }, + { + "renderSeconds": 0.002777099609375, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0026630163192749023, + "simulationSeconds": 0.007048964500427246, + "tick": 23 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006283998489379883, + "tick": 24 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0.0064688920974731445, + "tick": 25 + }, + { + "renderSeconds": 0.0020989179611206055, + "simulationSeconds": 0.00660097599029541, + "tick": 26 + }, + { + "renderSeconds": 0.002170085906982422, + "simulationSeconds": 0.006549954414367676, + "tick": 27 + }, + { + "renderSeconds": 0.0025719404220581055, + "simulationSeconds": 0.011909008026123047, + "tick": 29 + }, + { + "renderSeconds": 0.0026389360427856445, + "simulationSeconds": 0.00698399543762207, + "tick": 30 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 9.5367431640625e-07, + "tick": 30 + }, + { + "renderSeconds": 0.002312898635864258, + "simulationSeconds": 0.006767988204956055, + "tick": 31 + }, + { + "renderSeconds": 0.002453923225402832, + "simulationSeconds": 0.006537079811096191, + "tick": 32 + }, + { + "renderSeconds": 0.002169013023376465, + "simulationSeconds": 0.006507992744445801, + "tick": 33 + }, + { + "renderSeconds": 0.0023720264434814453, + "simulationSeconds": 0.006610989570617676, + "tick": 34 + }, + { + "renderSeconds": 0.0020679235458374023, + "simulationSeconds": 0.006525993347167969, + "tick": 35 + }, + { + "renderSeconds": 0.0026650428771972656, + "simulationSeconds": 0.012099981307983398, + "tick": 37 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.002498030662536621, + "simulationSeconds": 0.006432056427001953, + "tick": 38 + }, + { + "renderSeconds": 0.002351999282836914, + "simulationSeconds": 0.006762981414794922, + "tick": 39 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.006445050239562988, + "tick": 40 + }, + { + "renderSeconds": 0.0027550458908081055, + "simulationSeconds": 0.00642704963684082, + "tick": 41 + }, + { + "renderSeconds": 0.002074003219604492, + "simulationSeconds": 0.006150007247924805, + "tick": 42 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.012071013450622559, + "tick": 44 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.006869077682495117, + "tick": 45 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 45 + }, + { + "renderSeconds": 0.0025550127029418945, + "simulationSeconds": 0.006394028663635254, + "tick": 46 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006516933441162109, + "tick": 47 + }, + { + "renderSeconds": 0.0028270483016967773, + "simulationSeconds": 0.006309032440185547, + "tick": 48 + }, + { + "renderSeconds": 0.002631068229675293, + "simulationSeconds": 0.0069980621337890625, + "tick": 49 + }, + { + "renderSeconds": 0.002523064613342285, + "simulationSeconds": 0.006204962730407715, + "tick": 50 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.013392090797424316, + "tick": 52 + }, + { + "renderSeconds": 0.0029609203338623047, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 52 + }, + { + "renderSeconds": 0.0025060176849365234, + "simulationSeconds": 0.006726980209350586, + "tick": 53 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.006667971611022949, + "tick": 54 + }, + { + "renderSeconds": 0.0024820566177368164, + "simulationSeconds": 0.006432056427001953, + "tick": 55 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.006632089614868164, + "tick": 56 + }, + { + "renderSeconds": 0.0027990341186523438, + "simulationSeconds": 0.006528973579406738, + "tick": 57 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.012935996055603027, + "tick": 59 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.006294965744018555, + "tick": 60 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 60 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.00610506534576416, + "tick": 61 + }, + { + "renderSeconds": 0.0024390220642089844, + "simulationSeconds": 0.006594061851501465, + "tick": 62 + }, + { + "renderSeconds": 0.0027829408645629883, + "simulationSeconds": 0.0063620805740356445, + "tick": 63 + }, + { + "renderSeconds": 0.00279998779296875, + "simulationSeconds": 0.006663084030151367, + "tick": 64 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.007016897201538086, + "tick": 65 + }, + { + "renderSeconds": 0.0025500059127807617, + "simulationSeconds": 0.012539982795715332, + "tick": 67 + }, + { + "renderSeconds": 0.003201007843017578, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.0067369937896728516, + "tick": 68 + }, + { + "renderSeconds": 0.0025979280471801758, + "simulationSeconds": 0.00678098201751709, + "tick": 69 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.006152987480163574, + "tick": 70 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.006860971450805664, + "tick": 71 + }, + { + "renderSeconds": 0.0023440122604370117, + "simulationSeconds": 0.007213950157165527, + "tick": 72 + }, + { + "renderSeconds": 0.003052949905395508, + "simulationSeconds": 0.012850046157836914, + "tick": 74 + }, + { + "renderSeconds": 0.0031850337982177734, + "simulationSeconds": 0.007261037826538086, + "tick": 75 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 75 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.00659489631652832, + "tick": 76 + }, + { + "renderSeconds": 0.003322005271911621, + "simulationSeconds": 0.006605029106140137, + "tick": 77 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.007236003875732422, + "tick": 78 + }, + { + "renderSeconds": 0.0030069351196289062, + "simulationSeconds": 0.007006049156188965, + "tick": 79 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.0062940120697021484, + "tick": 80 + }, + { + "renderSeconds": 0.0027729272842407227, + "simulationSeconds": 0.013247966766357422, + "tick": 82 + }, + { + "renderSeconds": 0.002812981605529785, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 82 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.006473064422607422, + "tick": 83 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.006713986396789551, + "tick": 84 + }, + { + "renderSeconds": 0.002393007278442383, + "simulationSeconds": 0.006559967994689941, + "tick": 85 + }, + { + "renderSeconds": 0.0024340152740478516, + "simulationSeconds": 0.006235003471374512, + "tick": 86 + }, + { + "renderSeconds": 0.0022619962692260742, + "simulationSeconds": 0.0066879987716674805, + "tick": 87 + }, + { + "renderSeconds": 0.0027669668197631836, + "simulationSeconds": 0.012629985809326172, + "tick": 89 + }, + { + "renderSeconds": 0.0031739473342895508, + "simulationSeconds": 0.0065239667892456055, + "tick": 90 + }, + { + "renderSeconds": 0.004026055335998535, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.002991914749145508, + "simulationSeconds": 0.0074089765548706055, + "tick": 91 + }, + { + "renderSeconds": 0.0031290054321289062, + "simulationSeconds": 0.0062760114669799805, + "tick": 92 + }, + { + "renderSeconds": 0.0026808977127075195, + "simulationSeconds": 0.0064239501953125, + "tick": 93 + }, + { + "renderSeconds": 0.0027691125869750977, + "simulationSeconds": 0.006459951400756836, + "tick": 94 + }, + { + "renderSeconds": 0.0033969879150390625, + "simulationSeconds": 0.006502032279968262, + "tick": 95 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.012858986854553223, + "tick": 97 + }, + { + "renderSeconds": 0.0031839609146118164, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 97 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.00625300407409668, + "tick": 98 + }, + { + "renderSeconds": 0.0025720596313476562, + "simulationSeconds": 0.0063190460205078125, + "tick": 99 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.00684201717376709, + "tick": 100 + }, + { + "renderSeconds": 0.0025610923767089844, + "simulationSeconds": 0.006786942481994629, + "tick": 101 + }, + { + "renderSeconds": 0.002476930618286133, + "simulationSeconds": 0.006060004234313965, + "tick": 102 + }, + { + "renderSeconds": 0.002787947654724121, + "simulationSeconds": 0.013454914093017578, + "tick": 104 + }, + { + "renderSeconds": 0.0028530359268188477, + "simulationSeconds": 0.0064640045166015625, + "tick": 105 + }, + { + "renderSeconds": 0.0027959346771240234, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.002837061882019043, + "simulationSeconds": 0.006497979164123535, + "tick": 106 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.006335020065307617, + "tick": 107 + }, + { + "renderSeconds": 0.0027610063552856445, + "simulationSeconds": 0.0064640045166015625, + "tick": 108 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006471991539001465, + "tick": 109 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.006481051445007324, + "tick": 110 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.012536048889160156, + "tick": 112 + }, + { + "renderSeconds": 0.0028940439224243164, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.0022650957107543945, + "simulationSeconds": 0.006580948829650879, + "tick": 113 + }, + { + "renderSeconds": 0.0025800466537475586, + "simulationSeconds": 0.006435990333557129, + "tick": 114 + }, + { + "renderSeconds": 0.0029320716857910156, + "simulationSeconds": 0.0068089962005615234, + "tick": 115 + }, + { + "renderSeconds": 0.0029129981994628906, + "simulationSeconds": 0.006537914276123047, + "tick": 116 + }, + { + "renderSeconds": 0.002873063087463379, + "simulationSeconds": 0.006948947906494141, + "tick": 117 + }, + { + "renderSeconds": 0.0026040077209472656, + "simulationSeconds": 0.012449026107788086, + "tick": 119 + }, + { + "renderSeconds": 0.0026520490646362305, + "simulationSeconds": 0.006343960762023926, + "tick": 120 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 120 + }, + { + "renderSeconds": 0.0030059814453125, + "simulationSeconds": 0.006320953369140625, + "tick": 121 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.006605982780456543, + "tick": 122 + }, + { + "renderSeconds": 0.0024280548095703125, + "simulationSeconds": 0.006588935852050781, + "tick": 123 + }, + { + "renderSeconds": 0.0027059316635131836, + "simulationSeconds": 0.006411075592041016, + "tick": 124 + }, + { + "renderSeconds": 0.0024919509887695312, + "simulationSeconds": 0.006330966949462891, + "tick": 125 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.014489054679870605, + "tick": 127 + }, + { + "renderSeconds": 0.0028600692749023438, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002855062484741211, + "simulationSeconds": 0.007534980773925781, + "tick": 128 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006229996681213379, + "tick": 129 + }, + { + "renderSeconds": 0.002729058265686035, + "simulationSeconds": 0.006417989730834961, + "tick": 130 + }, + { + "renderSeconds": 0.0025550127029418945, + "simulationSeconds": 0.006273984909057617, + "tick": 131 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.006430983543395996, + "tick": 132 + }, + { + "renderSeconds": 0.00258791446685791, + "simulationSeconds": 0.012906074523925781, + "tick": 134 + }, + { + "renderSeconds": 0.0026290416717529297, + "simulationSeconds": 0.00663602352142334, + "tick": 135 + }, + { + "renderSeconds": 0.0025659799575805664, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.006062984466552734, + "tick": 136 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.006106019020080566, + "tick": 137 + }, + { + "renderSeconds": 0.00257110595703125, + "simulationSeconds": 0.006433963775634766, + "tick": 138 + }, + { + "renderSeconds": 0.0024449825286865234, + "simulationSeconds": 0.006199002265930176, + "tick": 139 + }, + { + "renderSeconds": 0.002417922019958496, + "simulationSeconds": 0.006415009498596191, + "tick": 140 + }, + { + "renderSeconds": 0.0024570226669311523, + "simulationSeconds": 0.012343049049377441, + "tick": 142 + }, + { + "renderSeconds": 0.0027419328689575195, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.006106972694396973, + "tick": 143 + }, + { + "renderSeconds": 0.002606034278869629, + "simulationSeconds": 0.0063849687576293945, + "tick": 144 + }, + { + "renderSeconds": 0.002644062042236328, + "simulationSeconds": 0.00634002685546875, + "tick": 145 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006421923637390137, + "tick": 146 + }, + { + "renderSeconds": 0.002959012985229492, + "simulationSeconds": 0.007534027099609375, + "tick": 147 + }, + { + "renderSeconds": 0.0028380155563354492, + "simulationSeconds": 0.01344907283782959, + "tick": 149 + }, + { + "renderSeconds": 0.0031679868698120117, + "simulationSeconds": 0.0068399906158447266, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.036680500023067, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 240, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.005441069602966309, + "preparationSeconds": 0.39833807945251465, + "reducedMotion": false, + "renderSeconds": 0.40672731399536133, + "repetition": 1, + "scenePreparationSeconds": 0.15381896495819092, + "simulationSeconds": 0.975456714630127, + "snapshotBuildCount": 153, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.21448051929473877, + "frameCosts": [ + { + "renderSeconds": 0.00074005126953125, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006299018859863281, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.000510096549987793, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0004940032958984375, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.001950979232788086, + "simulationSeconds": 0.003686070442199707, + "tick": 1 + }, + { + "renderSeconds": 0.0015219449996948242, + "simulationSeconds": 0.0040100812911987305, + "tick": 2 + }, + { + "renderSeconds": 0.0017549991607666016, + "simulationSeconds": 0.004505038261413574, + "tick": 3 + }, + { + "renderSeconds": 0.001757979393005371, + "simulationSeconds": 0.00896596908569336, + "tick": 5 + }, + { + "renderSeconds": 0.0019179582595825195, + "simulationSeconds": 0.0047550201416015625, + "tick": 6 + }, + { + "renderSeconds": 0.0020929574966430664, + "simulationSeconds": 0.0053479671478271484, + "tick": 7 + }, + { + "renderSeconds": 0.0026029348373413086, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.0021429061889648438, + "simulationSeconds": 0.006299018859863281, + "tick": 8 + }, + { + "renderSeconds": 0.0026379823684692383, + "simulationSeconds": 0.006453037261962891, + "tick": 9 + }, + { + "renderSeconds": 0.0030629634857177734, + "simulationSeconds": 0.0067119598388671875, + "tick": 10 + }, + { + "renderSeconds": 0.00299990177154541, + "simulationSeconds": 0.00733792781829834, + "tick": 11 + }, + { + "renderSeconds": 0.0035930871963500977, + "simulationSeconds": 0.017871975898742676, + "tick": 13 + }, + { + "renderSeconds": 0.003576993942260742, + "simulationSeconds": 0.008899927139282227, + "tick": 14 + }, + { + "renderSeconds": 0.0025720596313476562, + "simulationSeconds": 0.012115955352783203, + "tick": 16 + }, + { + "renderSeconds": 0.002517104148864746, + "simulationSeconds": 0.01217794418334961, + "tick": 18 + }, + { + "renderSeconds": 0.002521038055419922, + "simulationSeconds": 0.012996077537536621, + "tick": 20 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.006756901741027832, + "tick": 21 + }, + { + "renderSeconds": 0.002880096435546875, + "simulationSeconds": 0.006493926048278809, + "tick": 22 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 9.5367431640625e-07, + "tick": 22 + }, + { + "renderSeconds": 0.0024499893188476562, + "simulationSeconds": 0.006734013557434082, + "tick": 23 + }, + { + "renderSeconds": 0.0021239519119262695, + "simulationSeconds": 0.00630497932434082, + "tick": 24 + }, + { + "renderSeconds": 0.002368927001953125, + "simulationSeconds": 0.006676077842712402, + "tick": 25 + }, + { + "renderSeconds": 0.0021589994430541992, + "simulationSeconds": 0.006332039833068848, + "tick": 26 + }, + { + "renderSeconds": 0.0024979114532470703, + "simulationSeconds": 0.011165022850036621, + "tick": 28 + }, + { + "renderSeconds": 0.002310037612915039, + "simulationSeconds": 0.00666201114654541, + "tick": 29 + }, + { + "renderSeconds": 0.002593994140625, + "simulationSeconds": 0.006865978240966797, + "tick": 30 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.002247929573059082, + "simulationSeconds": 0.0066460371017456055, + "tick": 31 + }, + { + "renderSeconds": 0.0020530223846435547, + "simulationSeconds": 0.006611943244934082, + "tick": 32 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0.006500959396362305, + "tick": 33 + }, + { + "renderSeconds": 0.0024739503860473633, + "simulationSeconds": 0.012758016586303711, + "tick": 35 + }, + { + "renderSeconds": 0.0025750398635864258, + "simulationSeconds": 0.006278038024902344, + "tick": 36 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.006360054016113281, + "tick": 37 + }, + { + "renderSeconds": 0.002814054489135742, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.006080985069274902, + "tick": 38 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.007346034049987793, + "tick": 39 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.006516933441162109, + "tick": 40 + }, + { + "renderSeconds": 0.00262296199798584, + "simulationSeconds": 0.006747007369995117, + "tick": 41 + }, + { + "renderSeconds": 0.0026160478591918945, + "simulationSeconds": 0.013141989707946777, + "tick": 43 + }, + { + "renderSeconds": 0.002382040023803711, + "simulationSeconds": 0.006148934364318848, + "tick": 44 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006336092948913574, + "tick": 45 + }, + { + "renderSeconds": 0.002695918083190918, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 45 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.00625300407409668, + "tick": 46 + }, + { + "renderSeconds": 0.002564072608947754, + "simulationSeconds": 0.005964994430541992, + "tick": 47 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.006450057029724121, + "tick": 48 + }, + { + "renderSeconds": 0.002570033073425293, + "simulationSeconds": 0.012784004211425781, + "tick": 50 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.006383061408996582, + "tick": 51 + }, + { + "renderSeconds": 0.002522110939025879, + "simulationSeconds": 0.006309986114501953, + "tick": 52 + }, + { + "renderSeconds": 0.0028570890426635742, + "simulationSeconds": 3.933906555175781e-06, + "tick": 52 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.006623029708862305, + "tick": 53 + }, + { + "renderSeconds": 0.002125978469848633, + "simulationSeconds": 0.006521105766296387, + "tick": 54 + }, + { + "renderSeconds": 0.002254009246826172, + "simulationSeconds": 0.006700038909912109, + "tick": 55 + }, + { + "renderSeconds": 0.002417922019958496, + "simulationSeconds": 0.006351947784423828, + "tick": 56 + }, + { + "renderSeconds": 0.0026279687881469727, + "simulationSeconds": 0.012534022331237793, + "tick": 58 + }, + { + "renderSeconds": 0.0025540590286254883, + "simulationSeconds": 0.006916999816894531, + "tick": 59 + }, + { + "renderSeconds": 0.002169966697692871, + "simulationSeconds": 0.006448984146118164, + "tick": 60 + }, + { + "renderSeconds": 0.002588033676147461, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.002660036087036133, + "simulationSeconds": 0.0061310529708862305, + "tick": 61 + }, + { + "renderSeconds": 0.0026769638061523438, + "simulationSeconds": 0.006335020065307617, + "tick": 62 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.0064209699630737305, + "tick": 63 + }, + { + "renderSeconds": 0.0027899742126464844, + "simulationSeconds": 0.013864994049072266, + "tick": 65 + }, + { + "renderSeconds": 0.003104090690612793, + "simulationSeconds": 0.0072040557861328125, + "tick": 66 + }, + { + "renderSeconds": 0.0028679370880126953, + "simulationSeconds": 0.0073670148849487305, + "tick": 67 + }, + { + "renderSeconds": 0.0032110214233398438, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0030950307846069336, + "simulationSeconds": 0.007110953330993652, + "tick": 68 + }, + { + "renderSeconds": 0.0029990673065185547, + "simulationSeconds": 0.007061958312988281, + "tick": 69 + }, + { + "renderSeconds": 0.0031080245971679688, + "simulationSeconds": 0.0062149763107299805, + "tick": 70 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.0062760114669799805, + "tick": 71 + }, + { + "renderSeconds": 0.0024720430374145508, + "simulationSeconds": 0.013592004776000977, + "tick": 73 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006332993507385254, + "tick": 74 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0.006080031394958496, + "tick": 75 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002624988555908203, + "simulationSeconds": 0.0061910152435302734, + "tick": 76 + }, + { + "renderSeconds": 0.0026319026947021484, + "simulationSeconds": 0.0066449642181396484, + "tick": 77 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006575107574462891, + "tick": 78 + }, + { + "renderSeconds": 0.0025070905685424805, + "simulationSeconds": 0.012336969375610352, + "tick": 80 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.006562948226928711, + "tick": 81 + }, + { + "renderSeconds": 0.00321197509765625, + "simulationSeconds": 0.006492018699645996, + "tick": 82 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 9.5367431640625e-07, + "tick": 82 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.00645899772644043, + "tick": 83 + }, + { + "renderSeconds": 0.0029419660568237305, + "simulationSeconds": 0.006206035614013672, + "tick": 84 + }, + { + "renderSeconds": 0.002492070198059082, + "simulationSeconds": 0.005962967872619629, + "tick": 85 + }, + { + "renderSeconds": 0.0027680397033691406, + "simulationSeconds": 0.006316065788269043, + "tick": 86 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.012749910354614258, + "tick": 88 + }, + { + "renderSeconds": 0.0028738975524902344, + "simulationSeconds": 0.007080078125, + "tick": 89 + }, + { + "renderSeconds": 0.0033930540084838867, + "simulationSeconds": 0.00725400447845459, + "tick": 90 + }, + { + "renderSeconds": 0.003052949905395508, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 90 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.0069419145584106445, + "tick": 91 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0.006242036819458008, + "tick": 92 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.006316065788269043, + "tick": 93 + }, + { + "renderSeconds": 0.0026330947875976562, + "simulationSeconds": 0.012544989585876465, + "tick": 95 + }, + { + "renderSeconds": 0.0026520490646362305, + "simulationSeconds": 0.006326913833618164, + "tick": 96 + }, + { + "renderSeconds": 0.002848029136657715, + "simulationSeconds": 0.00598907470703125, + "tick": 97 + }, + { + "renderSeconds": 0.0030829906463623047, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0026999711990356445, + "simulationSeconds": 0.006587982177734375, + "tick": 98 + }, + { + "renderSeconds": 0.002666950225830078, + "simulationSeconds": 0.006801962852478027, + "tick": 99 + }, + { + "renderSeconds": 0.00350797176361084, + "simulationSeconds": 0.006196022033691406, + "tick": 100 + }, + { + "renderSeconds": 0.0026029348373413086, + "simulationSeconds": 0.006762027740478516, + "tick": 101 + }, + { + "renderSeconds": 0.002606034278869629, + "simulationSeconds": 0.01226496696472168, + "tick": 103 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.00672602653503418, + "tick": 104 + }, + { + "renderSeconds": 0.002369999885559082, + "simulationSeconds": 0.006303906440734863, + "tick": 105 + }, + { + "renderSeconds": 0.0028619766235351562, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 105 + }, + { + "renderSeconds": 0.0029020309448242188, + "simulationSeconds": 0.006790041923522949, + "tick": 106 + }, + { + "renderSeconds": 0.002068042755126953, + "simulationSeconds": 0.0065729618072509766, + "tick": 107 + }, + { + "renderSeconds": 0.002140045166015625, + "simulationSeconds": 0.006622910499572754, + "tick": 108 + }, + { + "renderSeconds": 0.002575993537902832, + "simulationSeconds": 0.011630058288574219, + "tick": 110 + }, + { + "renderSeconds": 0.0024579763412475586, + "simulationSeconds": 0.006991982460021973, + "tick": 111 + }, + { + "renderSeconds": 0.002454996109008789, + "simulationSeconds": 0.006585955619812012, + "tick": 112 + }, + { + "renderSeconds": 0.003157973289489746, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0024260282516479492, + "simulationSeconds": 0.0067789554595947266, + "tick": 113 + }, + { + "renderSeconds": 0.00209200382232666, + "simulationSeconds": 0.0062340497970581055, + "tick": 114 + }, + { + "renderSeconds": 0.0023870468139648438, + "simulationSeconds": 0.0063179731369018555, + "tick": 115 + }, + { + "renderSeconds": 0.0021080970764160156, + "simulationSeconds": 0.006459951400756836, + "tick": 116 + }, + { + "renderSeconds": 0.0025779008865356445, + "simulationSeconds": 0.012282967567443848, + "tick": 118 + }, + { + "renderSeconds": 0.0022050142288208008, + "simulationSeconds": 0.006403088569641113, + "tick": 119 + }, + { + "renderSeconds": 0.002429962158203125, + "simulationSeconds": 0.006512999534606934, + "tick": 120 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 120 + }, + { + "renderSeconds": 0.002393960952758789, + "simulationSeconds": 0.006711006164550781, + "tick": 121 + }, + { + "renderSeconds": 0.002013087272644043, + "simulationSeconds": 0.006324887275695801, + "tick": 122 + }, + { + "renderSeconds": 0.002012968063354492, + "simulationSeconds": 0.006330013275146484, + "tick": 123 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 0.011582016944885254, + "tick": 125 + }, + { + "renderSeconds": 0.002499103546142578, + "simulationSeconds": 0.006506919860839844, + "tick": 126 + }, + { + "renderSeconds": 0.002577066421508789, + "simulationSeconds": 0.006754040718078613, + "tick": 127 + }, + { + "renderSeconds": 0.0025539398193359375, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0023499727249145508, + "simulationSeconds": 0.0064650774002075195, + "tick": 128 + }, + { + "renderSeconds": 0.0022259950637817383, + "simulationSeconds": 0.006251931190490723, + "tick": 129 + }, + { + "renderSeconds": 0.0025119781494140625, + "simulationSeconds": 0.006684064865112305, + "tick": 130 + }, + { + "renderSeconds": 0.002830982208251953, + "simulationSeconds": 0.006662964820861816, + "tick": 131 + }, + { + "renderSeconds": 0.0024639368057250977, + "simulationSeconds": 0.014151930809020996, + "tick": 133 + }, + { + "renderSeconds": 0.003020048141479492, + "simulationSeconds": 0.006817936897277832, + "tick": 134 + }, + { + "renderSeconds": 0.002785921096801758, + "simulationSeconds": 0.006245970726013184, + "tick": 135 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002103090286254883, + "simulationSeconds": 0.0061779022216796875, + "tick": 136 + }, + { + "renderSeconds": 0.0021899938583374023, + "simulationSeconds": 0.006162047386169434, + "tick": 137 + }, + { + "renderSeconds": 0.002231001853942871, + "simulationSeconds": 0.006286978721618652, + "tick": 138 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.01152801513671875, + "tick": 140 + }, + { + "renderSeconds": 0.002776026725769043, + "simulationSeconds": 0.006523013114929199, + "tick": 141 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.0063179731369018555, + "tick": 142 + }, + { + "renderSeconds": 0.0033069849014282227, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 142 + }, + { + "renderSeconds": 0.0025670528411865234, + "simulationSeconds": 0.006313920021057129, + "tick": 143 + }, + { + "renderSeconds": 0.0024230480194091797, + "simulationSeconds": 0.006062984466552734, + "tick": 144 + }, + { + "renderSeconds": 0.0023349523544311523, + "simulationSeconds": 0.006402015686035156, + "tick": 145 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.006385087966918945, + "tick": 146 + }, + { + "renderSeconds": 0.0026100873947143555, + "simulationSeconds": 0.011859893798828125, + "tick": 148 + }, + { + "renderSeconds": 0.0026088953018188477, + "simulationSeconds": 0.006170988082885742, + "tick": 149 + }, + { + "renderSeconds": 0.0025969743728637695, + "simulationSeconds": 0.0062940120697021484, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03926504167611711, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 234, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.0041817426681518555, + "preparationSeconds": 0.4302099943161011, + "reducedMotion": false, + "renderSeconds": 0.383844256401062, + "repetition": 0, + "scenePreparationSeconds": 0.1327289342880249, + "simulationSeconds": 0.9588348865509033, + "snapshotBuildCount": 150, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 36.21062502497807 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.21443355083465576, + "frameCosts": [ + { + "renderSeconds": 0.0007009506225585938, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0007470846176147461, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006060600280761719, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0020509958267211914, + "simulationSeconds": 0.003934025764465332, + "tick": 1 + }, + { + "renderSeconds": 0.0016760826110839844, + "simulationSeconds": 0.004356980323791504, + "tick": 2 + }, + { + "renderSeconds": 0.0020999908447265625, + "simulationSeconds": 0.004766941070556641, + "tick": 3 + }, + { + "renderSeconds": 0.0021840333938598633, + "simulationSeconds": 0.0052078962326049805, + "tick": 4 + }, + { + "renderSeconds": 0.0020390748977661133, + "simulationSeconds": 0.005548954010009766, + "tick": 5 + }, + { + "renderSeconds": 0.0022430419921875, + "simulationSeconds": 0.005690932273864746, + "tick": 6 + }, + { + "renderSeconds": 0.0021669864654541016, + "simulationSeconds": 0.00634002685546875, + "tick": 7 + }, + { + "renderSeconds": 0.0021589994430541992, + "simulationSeconds": 0.0066070556640625, + "tick": 8 + }, + { + "renderSeconds": 0.002362966537475586, + "simulationSeconds": 0.006347060203552246, + "tick": 9 + }, + { + "renderSeconds": 0.0030710697174072266, + "simulationSeconds": 0.006299018859863281, + "tick": 10 + }, + { + "renderSeconds": 0.0027740001678466797, + "simulationSeconds": 0.006564974784851074, + "tick": 11 + }, + { + "renderSeconds": 0.0029910802841186523, + "simulationSeconds": 0.007233977317810059, + "tick": 12 + }, + { + "renderSeconds": 0.0029039382934570312, + "simulationSeconds": 0.0070149898529052734, + "tick": 13 + }, + { + "renderSeconds": 0.0030139684677124023, + "simulationSeconds": 0.007209062576293945, + "tick": 14 + }, + { + "renderSeconds": 0.0031119585037231445, + "simulationSeconds": 0.006255984306335449, + "tick": 15 + }, + { + "renderSeconds": 0.0031510591506958008, + "simulationSeconds": 0.006656050682067871, + "tick": 16 + }, + { + "renderSeconds": 0.0030499696731567383, + "simulationSeconds": 0.0062220096588134766, + "tick": 17 + }, + { + "renderSeconds": 0.0022679567337036133, + "simulationSeconds": 0.006816983222961426, + "tick": 18 + }, + { + "renderSeconds": 0.002498030662536621, + "simulationSeconds": 0.006783008575439453, + "tick": 19 + }, + { + "renderSeconds": 0.002368927001953125, + "simulationSeconds": 0.006832003593444824, + "tick": 20 + }, + { + "renderSeconds": 0.0024870634078979492, + "simulationSeconds": 0.006756901741027832, + "tick": 21 + }, + { + "renderSeconds": 0.0020759105682373047, + "simulationSeconds": 0.006415009498596191, + "tick": 22 + }, + { + "renderSeconds": 0.0021430253982543945, + "simulationSeconds": 0.006006956100463867, + "tick": 23 + }, + { + "renderSeconds": 0.002317070960998535, + "simulationSeconds": 0.006294965744018555, + "tick": 24 + }, + { + "renderSeconds": 0.002205967903137207, + "simulationSeconds": 0.007010102272033691, + "tick": 25 + }, + { + "renderSeconds": 0.0022999048233032227, + "simulationSeconds": 0.006293058395385742, + "tick": 26 + }, + { + "renderSeconds": 0.0025600194931030273, + "simulationSeconds": 0.006945013999938965, + "tick": 27 + }, + { + "renderSeconds": 0.002267003059387207, + "simulationSeconds": 0.006496906280517578, + "tick": 28 + }, + { + "renderSeconds": 0.00250399112701416, + "simulationSeconds": 0.006882905960083008, + "tick": 29 + }, + { + "renderSeconds": 0.002321004867553711, + "simulationSeconds": 0.006529092788696289, + "tick": 30 + }, + { + "renderSeconds": 0.0023289918899536133, + "simulationSeconds": 0.006744027137756348, + "tick": 31 + }, + { + "renderSeconds": 0.0022159814834594727, + "simulationSeconds": 0.00651097297668457, + "tick": 32 + }, + { + "renderSeconds": 0.0025529861450195312, + "simulationSeconds": 0.006165027618408203, + "tick": 33 + }, + { + "renderSeconds": 0.0021300315856933594, + "simulationSeconds": 0.006209969520568848, + "tick": 34 + }, + { + "renderSeconds": 0.0025069713592529297, + "simulationSeconds": 0.006011009216308594, + "tick": 35 + }, + { + "renderSeconds": 0.002714991569519043, + "simulationSeconds": 0.006208062171936035, + "tick": 36 + }, + { + "renderSeconds": 0.0027190446853637695, + "simulationSeconds": 0.006219983100891113, + "tick": 37 + }, + { + "renderSeconds": 0.0026879310607910156, + "simulationSeconds": 0.006476998329162598, + "tick": 38 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.0063419342041015625, + "tick": 39 + }, + { + "renderSeconds": 0.0033109188079833984, + "simulationSeconds": 0.007206916809082031, + "tick": 40 + }, + { + "renderSeconds": 0.0031319856643676758, + "simulationSeconds": 0.007287025451660156, + "tick": 41 + }, + { + "renderSeconds": 0.003710031509399414, + "simulationSeconds": 0.007555961608886719, + "tick": 42 + }, + { + "renderSeconds": 0.003701925277709961, + "simulationSeconds": 0.009065032005310059, + "tick": 43 + }, + { + "renderSeconds": 0.0028990507125854492, + "simulationSeconds": 0.008190035820007324, + "tick": 44 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.007511019706726074, + "tick": 45 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.008683085441589355, + "tick": 46 + }, + { + "renderSeconds": 0.002866029739379883, + "simulationSeconds": 0.0072509050369262695, + "tick": 47 + }, + { + "renderSeconds": 0.003036022186279297, + "simulationSeconds": 0.007699012756347656, + "tick": 48 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.0066699981689453125, + "tick": 49 + }, + { + "renderSeconds": 0.0028520822525024414, + "simulationSeconds": 0.00619196891784668, + "tick": 50 + }, + { + "renderSeconds": 0.0026530027389526367, + "simulationSeconds": 0.006346940994262695, + "tick": 51 + }, + { + "renderSeconds": 0.0026340484619140625, + "simulationSeconds": 0.007074952125549316, + "tick": 52 + }, + { + "renderSeconds": 0.002514958381652832, + "simulationSeconds": 0.0066890716552734375, + "tick": 53 + }, + { + "renderSeconds": 0.0031200647354125977, + "simulationSeconds": 0.007578015327453613, + "tick": 54 + }, + { + "renderSeconds": 0.0027469396591186523, + "simulationSeconds": 0.0063059329986572266, + "tick": 55 + }, + { + "renderSeconds": 0.0030519962310791016, + "simulationSeconds": 0.0068939924240112305, + "tick": 56 + }, + { + "renderSeconds": 0.0030690431594848633, + "simulationSeconds": 0.006204009056091309, + "tick": 57 + }, + { + "renderSeconds": 0.0030090808868408203, + "simulationSeconds": 0.006647944450378418, + "tick": 58 + }, + { + "renderSeconds": 0.0030089616775512695, + "simulationSeconds": 0.006144046783447266, + "tick": 59 + }, + { + "renderSeconds": 0.0032869577407836914, + "simulationSeconds": 0.00645899772644043, + "tick": 60 + }, + { + "renderSeconds": 0.0030701160430908203, + "simulationSeconds": 0.0062389373779296875, + "tick": 61 + }, + { + "renderSeconds": 0.0023249387741088867, + "simulationSeconds": 0.006437063217163086, + "tick": 62 + }, + { + "renderSeconds": 0.0023059844970703125, + "simulationSeconds": 0.00637507438659668, + "tick": 63 + }, + { + "renderSeconds": 0.0027109384536743164, + "simulationSeconds": 0.00625300407409668, + "tick": 64 + }, + { + "renderSeconds": 0.002471923828125, + "simulationSeconds": 0.0064220428466796875, + "tick": 65 + }, + { + "renderSeconds": 0.0028749704360961914, + "simulationSeconds": 0.006361961364746094, + "tick": 66 + }, + { + "renderSeconds": 0.0026050806045532227, + "simulationSeconds": 0.006218910217285156, + "tick": 67 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.00710296630859375, + "tick": 68 + }, + { + "renderSeconds": 0.003198981285095215, + "simulationSeconds": 0.00755000114440918, + "tick": 69 + }, + { + "renderSeconds": 0.0038880109786987305, + "simulationSeconds": 0.009016990661621094, + "tick": 70 + }, + { + "renderSeconds": 0.003672957420349121, + "simulationSeconds": 0.009343981742858887, + "tick": 71 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.00890803337097168, + "tick": 72 + }, + { + "renderSeconds": 0.0031889677047729492, + "simulationSeconds": 0.0069429874420166016, + "tick": 73 + }, + { + "renderSeconds": 0.0032930374145507812, + "simulationSeconds": 0.007284998893737793, + "tick": 74 + }, + { + "renderSeconds": 0.003285050392150879, + "simulationSeconds": 0.007274031639099121, + "tick": 75 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.0059659481048583984, + "tick": 76 + }, + { + "renderSeconds": 0.0025120973587036133, + "simulationSeconds": 0.006556987762451172, + "tick": 77 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0.006194949150085449, + "tick": 78 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.006265997886657715, + "tick": 79 + }, + { + "renderSeconds": 0.002674102783203125, + "simulationSeconds": 0.006634950637817383, + "tick": 80 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.006760001182556152, + "tick": 81 + }, + { + "renderSeconds": 0.0029439926147460938, + "simulationSeconds": 0.00622403621673584, + "tick": 82 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006579995155334473, + "tick": 83 + }, + { + "renderSeconds": 0.0024939775466918945, + "simulationSeconds": 0.006405949592590332, + "tick": 84 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.006564974784851074, + "tick": 85 + }, + { + "renderSeconds": 0.002534031867980957, + "simulationSeconds": 0.006268024444580078, + "tick": 86 + }, + { + "renderSeconds": 0.0025480985641479492, + "simulationSeconds": 0.006537914276123047, + "tick": 87 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0.0065310001373291016, + "tick": 88 + }, + { + "renderSeconds": 0.002550959587097168, + "simulationSeconds": 0.006471991539001465, + "tick": 89 + }, + { + "renderSeconds": 0.0025250911712646484, + "simulationSeconds": 0.006391048431396484, + "tick": 90 + }, + { + "renderSeconds": 0.002505064010620117, + "simulationSeconds": 0.00651097297668457, + "tick": 91 + }, + { + "renderSeconds": 0.0025649070739746094, + "simulationSeconds": 0.006420016288757324, + "tick": 92 + }, + { + "renderSeconds": 0.002642035484313965, + "simulationSeconds": 0.006764054298400879, + "tick": 93 + }, + { + "renderSeconds": 0.003104090690612793, + "simulationSeconds": 0.006414890289306641, + "tick": 94 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0.006737947463989258, + "tick": 95 + }, + { + "renderSeconds": 0.002920985221862793, + "simulationSeconds": 0.006040096282958984, + "tick": 96 + }, + { + "renderSeconds": 0.0026270151138305664, + "simulationSeconds": 0.0064269304275512695, + "tick": 97 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.0074460506439208984, + "tick": 98 + }, + { + "renderSeconds": 0.002762913703918457, + "simulationSeconds": 0.006541013717651367, + "tick": 99 + }, + { + "renderSeconds": 0.0029900074005126953, + "simulationSeconds": 0.00733494758605957, + "tick": 100 + }, + { + "renderSeconds": 0.0034350156784057617, + "simulationSeconds": 0.00704801082611084, + "tick": 101 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0.006520986557006836, + "tick": 102 + }, + { + "renderSeconds": 0.003114938735961914, + "simulationSeconds": 0.006356000900268555, + "tick": 103 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.006210923194885254, + "tick": 104 + }, + { + "renderSeconds": 0.002733945846557617, + "simulationSeconds": 0.00701904296875, + "tick": 105 + }, + { + "renderSeconds": 0.0033060312271118164, + "simulationSeconds": 0.0065659284591674805, + "tick": 106 + }, + { + "renderSeconds": 0.002794027328491211, + "simulationSeconds": 0.008543014526367188, + "tick": 107 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.006522059440612793, + "tick": 108 + }, + { + "renderSeconds": 0.002431035041809082, + "simulationSeconds": 0.0064220428466796875, + "tick": 109 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.006246089935302734, + "tick": 110 + }, + { + "renderSeconds": 0.002514958381652832, + "simulationSeconds": 0.0066759586334228516, + "tick": 111 + }, + { + "renderSeconds": 0.002351999282836914, + "simulationSeconds": 0.006575107574462891, + "tick": 112 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.006389021873474121, + "tick": 113 + }, + { + "renderSeconds": 0.00288999080657959, + "simulationSeconds": 0.006389975547790527, + "tick": 114 + }, + { + "renderSeconds": 0.0021010637283325195, + "simulationSeconds": 0.0063658952713012695, + "tick": 115 + }, + { + "renderSeconds": 0.0021189451217651367, + "simulationSeconds": 0.00619196891784668, + "tick": 116 + }, + { + "renderSeconds": 0.0023020505905151367, + "simulationSeconds": 0.006461977958679199, + "tick": 117 + }, + { + "renderSeconds": 0.0021430253982543945, + "simulationSeconds": 0.006649017333984375, + "tick": 118 + }, + { + "renderSeconds": 0.002095937728881836, + "simulationSeconds": 0.007142066955566406, + "tick": 119 + }, + { + "renderSeconds": 0.0021049976348876953, + "simulationSeconds": 0.006724953651428223, + "tick": 120 + }, + { + "renderSeconds": 0.0029059648513793945, + "simulationSeconds": 0.006764054298400879, + "tick": 121 + }, + { + "renderSeconds": 0.0026220083236694336, + "simulationSeconds": 0.006582021713256836, + "tick": 122 + }, + { + "renderSeconds": 0.0021539926528930664, + "simulationSeconds": 0.006445050239562988, + "tick": 123 + }, + { + "renderSeconds": 0.0023109912872314453, + "simulationSeconds": 0.006301999092102051, + "tick": 124 + }, + { + "renderSeconds": 0.0025780200958251953, + "simulationSeconds": 0.0065239667892456055, + "tick": 125 + }, + { + "renderSeconds": 0.0026810169219970703, + "simulationSeconds": 0.006521105766296387, + "tick": 126 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.006742954254150391, + "tick": 127 + }, + { + "renderSeconds": 0.0025740861892700195, + "simulationSeconds": 0.006248950958251953, + "tick": 128 + }, + { + "renderSeconds": 0.0031360387802124023, + "simulationSeconds": 0.013728022575378418, + "tick": 129 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.006388068199157715, + "tick": 130 + }, + { + "renderSeconds": 0.0029649734497070312, + "simulationSeconds": 0.0064849853515625, + "tick": 131 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.00643002986907959, + "tick": 132 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.006892085075378418, + "tick": 133 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.006208896636962891, + "tick": 134 + }, + { + "renderSeconds": 0.0027779340744018555, + "simulationSeconds": 0.0061969757080078125, + "tick": 135 + }, + { + "renderSeconds": 0.002782106399536133, + "simulationSeconds": 0.006701946258544922, + "tick": 136 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006283998489379883, + "tick": 137 + }, + { + "renderSeconds": 0.002035975456237793, + "simulationSeconds": 0.006051063537597656, + "tick": 138 + }, + { + "renderSeconds": 0.002321004867553711, + "simulationSeconds": 0.006284952163696289, + "tick": 139 + }, + { + "renderSeconds": 0.002034902572631836, + "simulationSeconds": 0.0066950321197509766, + "tick": 140 + }, + { + "renderSeconds": 0.0020209550857543945, + "simulationSeconds": 0.006730079650878906, + "tick": 141 + }, + { + "renderSeconds": 0.002023935317993164, + "simulationSeconds": 0.0061550140380859375, + "tick": 142 + }, + { + "renderSeconds": 0.002102971076965332, + "simulationSeconds": 0.006703019142150879, + "tick": 143 + }, + { + "renderSeconds": 0.0021619796752929688, + "simulationSeconds": 0.006417989730834961, + "tick": 144 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.006239056587219238, + "tick": 145 + }, + { + "renderSeconds": 0.0020810365676879883, + "simulationSeconds": 0.006768941879272461, + "tick": 146 + }, + { + "renderSeconds": 0.0024210214614868164, + "simulationSeconds": 0.0065239667892456055, + "tick": 147 + }, + { + "renderSeconds": 0.002046942710876465, + "simulationSeconds": 0.006244063377380371, + "tick": 148 + }, + { + "renderSeconds": 0.002762913703918457, + "simulationSeconds": 0.006237030029296875, + "tick": 149 + }, + { + "renderSeconds": 0.0024989843368530273, + "simulationSeconds": 0.006096005439758301, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.032051333313575014, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 240, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004083037376403809, + "preparationSeconds": 0.39804697036743164, + "reducedMotion": true, + "renderSeconds": 0.40059709548950195, + "repetition": 2, + "scenePreparationSeconds": 0.1520630121231079, + "simulationSeconds": 0.9991947412490845, + "snapshotBuildCount": 153, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.21184611320495605, + "frameCosts": [ + { + "renderSeconds": 0.0005259513854980469, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0005450248718261719, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006499290466308594, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0005729198455810547, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0020339488983154297, + "simulationSeconds": 0.003975033760070801, + "tick": 1 + }, + { + "renderSeconds": 0.001799941062927246, + "simulationSeconds": 0.008839011192321777, + "tick": 3 + }, + { + "renderSeconds": 0.0016709566116333008, + "simulationSeconds": 0.0043059587478637695, + "tick": 4 + }, + { + "renderSeconds": 0.002315998077392578, + "simulationSeconds": 0.004750967025756836, + "tick": 5 + }, + { + "renderSeconds": 0.0021849870681762695, + "simulationSeconds": 0.005262970924377441, + "tick": 6 + }, + { + "renderSeconds": 0.002171039581298828, + "simulationSeconds": 0.005442976951599121, + "tick": 7 + }, + { + "renderSeconds": 0.002496004104614258, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.002133965492248535, + "simulationSeconds": 0.00645601749420166, + "tick": 8 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.011413931846618652, + "tick": 10 + }, + { + "renderSeconds": 0.002662062644958496, + "simulationSeconds": 0.006349921226501465, + "tick": 11 + }, + { + "renderSeconds": 0.0025360584259033203, + "simulationSeconds": 0.007358908653259277, + "tick": 12 + }, + { + "renderSeconds": 0.003000974655151367, + "simulationSeconds": 0.007333993911743164, + "tick": 13 + }, + { + "renderSeconds": 0.0025959014892578125, + "simulationSeconds": 0.006358027458190918, + "tick": 14 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 0.00657200813293457, + "tick": 15 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 7.987022399902344e-06, + "tick": 15 + }, + { + "renderSeconds": 0.002480030059814453, + "simulationSeconds": 0.006502985954284668, + "tick": 16 + }, + { + "renderSeconds": 0.0026079416275024414, + "simulationSeconds": 0.012006044387817383, + "tick": 18 + }, + { + "renderSeconds": 0.002505064010620117, + "simulationSeconds": 0.006662964820861816, + "tick": 19 + }, + { + "renderSeconds": 0.002804994583129883, + "simulationSeconds": 0.006691932678222656, + "tick": 20 + }, + { + "renderSeconds": 0.002927064895629883, + "simulationSeconds": 0.00636601448059082, + "tick": 21 + }, + { + "renderSeconds": 0.002526998519897461, + "simulationSeconds": 0.0067250728607177734, + "tick": 22 + }, + { + "renderSeconds": 0.003358006477355957, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.0020799636840820312, + "simulationSeconds": 0.006345033645629883, + "tick": 23 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.012059926986694336, + "tick": 25 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.0065460205078125, + "tick": 26 + }, + { + "renderSeconds": 0.002317070960998535, + "simulationSeconds": 0.006742954254150391, + "tick": 27 + }, + { + "renderSeconds": 0.0023059844970703125, + "simulationSeconds": 0.0068160295486450195, + "tick": 28 + }, + { + "renderSeconds": 0.002134084701538086, + "simulationSeconds": 0.006878972053527832, + "tick": 29 + }, + { + "renderSeconds": 0.0021170377731323242, + "simulationSeconds": 0.0063610076904296875, + "tick": 30 + }, + { + "renderSeconds": 0.0029109716415405273, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0021849870681762695, + "simulationSeconds": 0.006675004959106445, + "tick": 31 + }, + { + "renderSeconds": 0.0027239322662353516, + "simulationSeconds": 0.01215505599975586, + "tick": 33 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0.006731986999511719, + "tick": 34 + }, + { + "renderSeconds": 0.0024830102920532227, + "simulationSeconds": 0.006678938865661621, + "tick": 35 + }, + { + "renderSeconds": 0.0023061037063598633, + "simulationSeconds": 0.006974935531616211, + "tick": 36 + }, + { + "renderSeconds": 0.003103971481323242, + "simulationSeconds": 0.006853938102722168, + "tick": 37 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.006467938423156738, + "tick": 38 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.01208198070526123, + "tick": 40 + }, + { + "renderSeconds": 0.0025420188903808594, + "simulationSeconds": 0.006905078887939453, + "tick": 41 + }, + { + "renderSeconds": 0.0023969411849975586, + "simulationSeconds": 0.007104992866516113, + "tick": 42 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 0.0067670345306396484, + "tick": 43 + }, + { + "renderSeconds": 0.0024580955505371094, + "simulationSeconds": 0.006597995758056641, + "tick": 44 + }, + { + "renderSeconds": 0.002541065216064453, + "simulationSeconds": 0.006492018699645996, + "tick": 45 + }, + { + "renderSeconds": 0.0030350685119628906, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0024110078811645508, + "simulationSeconds": 0.0063010454177856445, + "tick": 46 + }, + { + "renderSeconds": 0.002353072166442871, + "simulationSeconds": 0.013548970222473145, + "tick": 48 + }, + { + "renderSeconds": 0.002322077751159668, + "simulationSeconds": 0.007097005844116211, + "tick": 49 + }, + { + "renderSeconds": 0.002346038818359375, + "simulationSeconds": 0.006788015365600586, + "tick": 50 + }, + { + "renderSeconds": 0.0023540258407592773, + "simulationSeconds": 0.006666064262390137, + "tick": 51 + }, + { + "renderSeconds": 0.002074003219604492, + "simulationSeconds": 0.006499052047729492, + "tick": 52 + }, + { + "renderSeconds": 0.0030879974365234375, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0021439790725708008, + "simulationSeconds": 0.006452083587646484, + "tick": 53 + }, + { + "renderSeconds": 0.0025320053100585938, + "simulationSeconds": 0.011810064315795898, + "tick": 55 + }, + { + "renderSeconds": 0.0021359920501708984, + "simulationSeconds": 0.006906986236572266, + "tick": 56 + }, + { + "renderSeconds": 0.0025060176849365234, + "simulationSeconds": 0.006358981132507324, + "tick": 57 + }, + { + "renderSeconds": 0.0025339126586914062, + "simulationSeconds": 0.006559967994689941, + "tick": 58 + }, + { + "renderSeconds": 0.0024110078811645508, + "simulationSeconds": 0.006584048271179199, + "tick": 59 + }, + { + "renderSeconds": 0.0022450685501098633, + "simulationSeconds": 0.006425976753234863, + "tick": 60 + }, + { + "renderSeconds": 0.0030919313430786133, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.0021860599517822266, + "simulationSeconds": 0.006247043609619141, + "tick": 61 + }, + { + "renderSeconds": 0.002187013626098633, + "simulationSeconds": 0.011361956596374512, + "tick": 63 + }, + { + "renderSeconds": 0.0021790266036987305, + "simulationSeconds": 0.0061359405517578125, + "tick": 64 + }, + { + "renderSeconds": 0.0025829076766967773, + "simulationSeconds": 0.0068579912185668945, + "tick": 65 + }, + { + "renderSeconds": 0.0021169185638427734, + "simulationSeconds": 0.006622910499572754, + "tick": 66 + }, + { + "renderSeconds": 0.0024930238723754883, + "simulationSeconds": 0.006541013717651367, + "tick": 67 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 9.5367431640625e-07, + "tick": 67 + }, + { + "renderSeconds": 0.002198934555053711, + "simulationSeconds": 0.006201982498168945, + "tick": 68 + }, + { + "renderSeconds": 0.0025919675827026367, + "simulationSeconds": 0.011806964874267578, + "tick": 70 + }, + { + "renderSeconds": 0.002798914909362793, + "simulationSeconds": 0.006612062454223633, + "tick": 71 + }, + { + "renderSeconds": 0.0025299787521362305, + "simulationSeconds": 0.006595015525817871, + "tick": 72 + }, + { + "renderSeconds": 0.002647995948791504, + "simulationSeconds": 0.006293058395385742, + "tick": 73 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.0072699785232543945, + "tick": 74 + }, + { + "renderSeconds": 0.003159046173095703, + "simulationSeconds": 0.00660097599029541, + "tick": 75 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 75 + }, + { + "renderSeconds": 0.00229489803314209, + "simulationSeconds": 0.0061560869216918945, + "tick": 76 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0.01167607307434082, + "tick": 78 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.00633692741394043, + "tick": 79 + }, + { + "renderSeconds": 0.0023910999298095703, + "simulationSeconds": 0.006987929344177246, + "tick": 80 + }, + { + "renderSeconds": 0.0028589963912963867, + "simulationSeconds": 0.006698966026306152, + "tick": 81 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006486058235168457, + "tick": 82 + }, + { + "renderSeconds": 0.0031810998916625977, + "simulationSeconds": 9.5367431640625e-07, + "tick": 82 + }, + { + "renderSeconds": 0.0020869970321655273, + "simulationSeconds": 0.006439089775085449, + "tick": 83 + }, + { + "renderSeconds": 0.0024650096893310547, + "simulationSeconds": 0.012436985969543457, + "tick": 85 + }, + { + "renderSeconds": 0.002313971519470215, + "simulationSeconds": 0.006747007369995117, + "tick": 86 + }, + { + "renderSeconds": 0.0020940303802490234, + "simulationSeconds": 0.006577968597412109, + "tick": 87 + }, + { + "renderSeconds": 0.0020509958267211914, + "simulationSeconds": 0.006055951118469238, + "tick": 88 + }, + { + "renderSeconds": 0.0025010108947753906, + "simulationSeconds": 0.00616002082824707, + "tick": 89 + }, + { + "renderSeconds": 0.002692103385925293, + "simulationSeconds": 0.0062520503997802734, + "tick": 90 + }, + { + "renderSeconds": 0.002562999725341797, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 90 + }, + { + "renderSeconds": 0.002068042755126953, + "simulationSeconds": 0.00616002082824707, + "tick": 91 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.011976957321166992, + "tick": 93 + }, + { + "renderSeconds": 0.0026639699935913086, + "simulationSeconds": 0.006444096565246582, + "tick": 94 + }, + { + "renderSeconds": 0.002404928207397461, + "simulationSeconds": 0.006075024604797363, + "tick": 95 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.006004929542541504, + "tick": 96 + }, + { + "renderSeconds": 0.0025260448455810547, + "simulationSeconds": 0.006765961647033691, + "tick": 97 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.002678990364074707, + "simulationSeconds": 0.006076931953430176, + "tick": 98 + }, + { + "renderSeconds": 0.0024770498275756836, + "simulationSeconds": 0.012248039245605469, + "tick": 100 + }, + { + "renderSeconds": 0.0029630661010742188, + "simulationSeconds": 0.007562994956970215, + "tick": 101 + }, + { + "renderSeconds": 0.00297701358795166, + "simulationSeconds": 0.0071010589599609375, + "tick": 102 + }, + { + "renderSeconds": 0.0030090808868408203, + "simulationSeconds": 0.007349967956542969, + "tick": 103 + }, + { + "renderSeconds": 0.0030750036239624023, + "simulationSeconds": 0.0073070526123046875, + "tick": 104 + }, + { + "renderSeconds": 0.0037789344787597656, + "simulationSeconds": 0.00898599624633789, + "tick": 105 + }, + { + "renderSeconds": 0.0032470226287841797, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.0028699636459350586, + "simulationSeconds": 0.006954073905944824, + "tick": 106 + }, + { + "renderSeconds": 0.0026739835739135742, + "simulationSeconds": 0.014864921569824219, + "tick": 108 + }, + { + "renderSeconds": 0.0029679536819458008, + "simulationSeconds": 0.006871938705444336, + "tick": 109 + }, + { + "renderSeconds": 0.002425074577331543, + "simulationSeconds": 0.006891965866088867, + "tick": 110 + }, + { + "renderSeconds": 0.0024079084396362305, + "simulationSeconds": 0.005955100059509277, + "tick": 111 + }, + { + "renderSeconds": 0.0028499364852905273, + "simulationSeconds": 0.006340980529785156, + "tick": 112 + }, + { + "renderSeconds": 0.0028389692306518555, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 112 + }, + { + "renderSeconds": 0.0025229454040527344, + "simulationSeconds": 0.006342053413391113, + "tick": 113 + }, + { + "renderSeconds": 0.0026100873947143555, + "simulationSeconds": 0.011597990989685059, + "tick": 115 + }, + { + "renderSeconds": 0.0021979808807373047, + "simulationSeconds": 0.006479978561401367, + "tick": 116 + }, + { + "renderSeconds": 0.0023440122604370117, + "simulationSeconds": 0.006883025169372559, + "tick": 117 + }, + { + "renderSeconds": 0.002339005470275879, + "simulationSeconds": 0.006746888160705566, + "tick": 118 + }, + { + "renderSeconds": 0.0023909807205200195, + "simulationSeconds": 0.0066070556640625, + "tick": 119 + }, + { + "renderSeconds": 0.002084016799926758, + "simulationSeconds": 0.006559014320373535, + "tick": 120 + }, + { + "renderSeconds": 0.0031980276107788086, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.002223968505859375, + "simulationSeconds": 0.006338000297546387, + "tick": 121 + }, + { + "renderSeconds": 0.0020951032638549805, + "simulationSeconds": 0.011265993118286133, + "tick": 123 + }, + { + "renderSeconds": 0.0020750761032104492, + "simulationSeconds": 0.006900906562805176, + "tick": 124 + }, + { + "renderSeconds": 0.002116084098815918, + "simulationSeconds": 0.006265044212341309, + "tick": 125 + }, + { + "renderSeconds": 0.0020630359649658203, + "simulationSeconds": 0.006351947784423828, + "tick": 126 + }, + { + "renderSeconds": 0.0021409988403320312, + "simulationSeconds": 0.006328940391540527, + "tick": 127 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.0020450353622436523, + "simulationSeconds": 0.006592988967895508, + "tick": 128 + }, + { + "renderSeconds": 0.0024040937423706055, + "simulationSeconds": 0.01204991340637207, + "tick": 130 + }, + { + "renderSeconds": 0.0025190114974975586, + "simulationSeconds": 0.006825923919677734, + "tick": 131 + }, + { + "renderSeconds": 0.0021779537200927734, + "simulationSeconds": 0.006359100341796875, + "tick": 132 + }, + { + "renderSeconds": 0.0021859407424926758, + "simulationSeconds": 0.006215095520019531, + "tick": 133 + }, + { + "renderSeconds": 0.002108931541442871, + "simulationSeconds": 0.006298065185546875, + "tick": 134 + }, + { + "renderSeconds": 0.002613067626953125, + "simulationSeconds": 0.006273031234741211, + "tick": 135 + }, + { + "renderSeconds": 0.0032019615173339844, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002586960792541504, + "simulationSeconds": 0.0077669620513916016, + "tick": 136 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.01299595832824707, + "tick": 138 + }, + { + "renderSeconds": 0.003224968910217285, + "simulationSeconds": 0.006262063980102539, + "tick": 139 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.006412982940673828, + "tick": 140 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.006455063819885254, + "tick": 141 + }, + { + "renderSeconds": 0.0024040937423706055, + "simulationSeconds": 0.00625300407409668, + "tick": 142 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0024949312210083008, + "simulationSeconds": 0.006330966949462891, + "tick": 143 + }, + { + "renderSeconds": 0.0024949312210083008, + "simulationSeconds": 0.012097001075744629, + "tick": 145 + }, + { + "renderSeconds": 0.0026270151138305664, + "simulationSeconds": 0.006867051124572754, + "tick": 146 + }, + { + "renderSeconds": 0.0024939775466918945, + "simulationSeconds": 0.006486058235168457, + "tick": 147 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.006433010101318359, + "tick": 148 + }, + { + "renderSeconds": 0.0027289390563964844, + "simulationSeconds": 0.006713986396789551, + "tick": 149 + }, + { + "renderSeconds": 0.0022430419921875, + "simulationSeconds": 0.006408095359802246, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.0357594583183527, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 240, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.003990054130554199, + "preparationSeconds": 0.36678004264831543, + "reducedMotion": true, + "renderSeconds": 0.38173139095306396, + "repetition": 3, + "scenePreparationSeconds": 0.13567006587982178, + "simulationSeconds": 0.9584869146347046, + "snapshotBuildCount": 153, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.21379971504211426, + "frameCosts": [ + { + "renderSeconds": 0.0004470348358154297, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0005729198455810547, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0005109310150146484, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0005780458450317383, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.0019800662994384766, + "simulationSeconds": 0.003533005714416504, + "tick": 1 + }, + { + "renderSeconds": 0.0017390251159667969, + "simulationSeconds": 0.004088997840881348, + "tick": 2 + }, + { + "renderSeconds": 0.001611948013305664, + "simulationSeconds": 0.0038911104202270508, + "tick": 3 + }, + { + "renderSeconds": 0.0015659332275390625, + "simulationSeconds": 0.004127025604248047, + "tick": 4 + }, + { + "renderSeconds": 0.001757979393005371, + "simulationSeconds": 0.008920073509216309, + "tick": 6 + }, + { + "renderSeconds": 0.001795053482055664, + "simulationSeconds": 0.004708051681518555, + "tick": 7 + }, + { + "renderSeconds": 0.0019780397415161133, + "simulationSeconds": 9.5367431640625e-07, + "tick": 7 + }, + { + "renderSeconds": 0.0021990537643432617, + "simulationSeconds": 0.0060340166091918945, + "tick": 8 + }, + { + "renderSeconds": 0.0023300647735595703, + "simulationSeconds": 0.006477952003479004, + "tick": 9 + }, + { + "renderSeconds": 0.0022819042205810547, + "simulationSeconds": 0.006319999694824219, + "tick": 10 + }, + { + "renderSeconds": 0.0029098987579345703, + "simulationSeconds": 0.006526947021484375, + "tick": 11 + }, + { + "renderSeconds": 0.003242015838623047, + "simulationSeconds": 0.006746053695678711, + "tick": 12 + }, + { + "renderSeconds": 0.0029850006103515625, + "simulationSeconds": 0.014776945114135742, + "tick": 14 + }, + { + "renderSeconds": 0.003077983856201172, + "simulationSeconds": 0.007460951805114746, + "tick": 15 + }, + { + "renderSeconds": 0.0034679174423217773, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 15 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.007940053939819336, + "tick": 16 + }, + { + "renderSeconds": 0.003074049949645996, + "simulationSeconds": 0.007228970527648926, + "tick": 17 + }, + { + "renderSeconds": 0.002708911895751953, + "simulationSeconds": 0.006238102912902832, + "tick": 18 + }, + { + "renderSeconds": 0.00273895263671875, + "simulationSeconds": 0.00633394718170166, + "tick": 19 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.012840032577514648, + "tick": 21 + }, + { + "renderSeconds": 0.002740025520324707, + "simulationSeconds": 0.006204009056091309, + "tick": 22 + }, + { + "renderSeconds": 0.0027010440826416016, + "simulationSeconds": 0.006340980529785156, + "tick": 23 + }, + { + "renderSeconds": 0.0024889707565307617, + "simulationSeconds": 0.006360054016113281, + "tick": 24 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.006144046783447266, + "tick": 25 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.00647890567779541, + "tick": 26 + }, + { + "renderSeconds": 0.002792954444885254, + "simulationSeconds": 0.006193995475769043, + "tick": 27 + }, + { + "renderSeconds": 0.002521038055419922, + "simulationSeconds": 0.012048006057739258, + "tick": 29 + }, + { + "renderSeconds": 0.0024069547653198242, + "simulationSeconds": 0.006377100944519043, + "tick": 30 + }, + { + "renderSeconds": 0.0028710365295410156, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.006170034408569336, + "tick": 31 + }, + { + "renderSeconds": 0.0024770498275756836, + "simulationSeconds": 0.006247997283935547, + "tick": 32 + }, + { + "renderSeconds": 0.0028110742568969727, + "simulationSeconds": 0.006476998329162598, + "tick": 33 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.006515979766845703, + "tick": 34 + }, + { + "renderSeconds": 0.0025320053100585938, + "simulationSeconds": 0.0122450590133667, + "tick": 36 + }, + { + "renderSeconds": 0.0025159120559692383, + "simulationSeconds": 0.006395936012268066, + "tick": 37 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 37 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.006569027900695801, + "tick": 38 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.006500959396362305, + "tick": 39 + }, + { + "renderSeconds": 0.0026140213012695312, + "simulationSeconds": 0.0065920352935791016, + "tick": 40 + }, + { + "renderSeconds": 0.0023369789123535156, + "simulationSeconds": 0.006871938705444336, + "tick": 41 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0.006805896759033203, + "tick": 42 + }, + { + "renderSeconds": 0.0025720596313476562, + "simulationSeconds": 0.012441039085388184, + "tick": 44 + }, + { + "renderSeconds": 0.0024770498275756836, + "simulationSeconds": 0.0064239501953125, + "tick": 45 + }, + { + "renderSeconds": 0.002897977828979492, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.0025179386138916016, + "simulationSeconds": 0.006315946578979492, + "tick": 46 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.006595015525817871, + "tick": 47 + }, + { + "renderSeconds": 0.002213001251220703, + "simulationSeconds": 0.0065310001373291016, + "tick": 48 + }, + { + "renderSeconds": 0.0020639896392822266, + "simulationSeconds": 0.0070220232009887695, + "tick": 49 + }, + { + "renderSeconds": 0.002644062042236328, + "simulationSeconds": 0.012362003326416016, + "tick": 51 + }, + { + "renderSeconds": 0.0029408931732177734, + "simulationSeconds": 0.006182074546813965, + "tick": 52 + }, + { + "renderSeconds": 0.003010988235473633, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.006704926490783691, + "tick": 53 + }, + { + "renderSeconds": 0.0024809837341308594, + "simulationSeconds": 0.006484031677246094, + "tick": 54 + }, + { + "renderSeconds": 0.0025930404663085938, + "simulationSeconds": 0.006484031677246094, + "tick": 55 + }, + { + "renderSeconds": 0.002871990203857422, + "simulationSeconds": 0.007003068923950195, + "tick": 56 + }, + { + "renderSeconds": 0.0030930042266845703, + "simulationSeconds": 0.006384015083312988, + "tick": 57 + }, + { + "renderSeconds": 0.002618074417114258, + "simulationSeconds": 0.012311935424804688, + "tick": 59 + }, + { + "renderSeconds": 0.002843022346496582, + "simulationSeconds": 0.006793022155761719, + "tick": 60 + }, + { + "renderSeconds": 0.0028880834579467773, + "simulationSeconds": 9.5367431640625e-07, + "tick": 60 + }, + { + "renderSeconds": 0.0029230117797851562, + "simulationSeconds": 0.006672024726867676, + "tick": 61 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.006126999855041504, + "tick": 62 + }, + { + "renderSeconds": 0.002951979637145996, + "simulationSeconds": 0.006600022315979004, + "tick": 63 + }, + { + "renderSeconds": 0.0033440589904785156, + "simulationSeconds": 0.006754040718078613, + "tick": 64 + }, + { + "renderSeconds": 0.0026960372924804688, + "simulationSeconds": 0.012356042861938477, + "tick": 66 + }, + { + "renderSeconds": 0.0028809309005737305, + "simulationSeconds": 0.007043957710266113, + "tick": 67 + }, + { + "renderSeconds": 0.0031960010528564453, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.006705045700073242, + "tick": 68 + }, + { + "renderSeconds": 0.0027000904083251953, + "simulationSeconds": 0.006435990333557129, + "tick": 69 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.006532073020935059, + "tick": 70 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.006651043891906738, + "tick": 71 + }, + { + "renderSeconds": 0.0025229454040527344, + "simulationSeconds": 0.006374955177307129, + "tick": 72 + }, + { + "renderSeconds": 0.0026400089263916016, + "simulationSeconds": 0.012691974639892578, + "tick": 74 + }, + { + "renderSeconds": 0.0025899410247802734, + "simulationSeconds": 0.006181001663208008, + "tick": 75 + }, + { + "renderSeconds": 0.002807021141052246, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.0025949478149414062, + "simulationSeconds": 0.006579995155334473, + "tick": 76 + }, + { + "renderSeconds": 0.002710103988647461, + "simulationSeconds": 0.006237030029296875, + "tick": 77 + }, + { + "renderSeconds": 0.002680063247680664, + "simulationSeconds": 0.006371974945068359, + "tick": 78 + }, + { + "renderSeconds": 0.0028219223022460938, + "simulationSeconds": 0.006613016128540039, + "tick": 79 + }, + { + "renderSeconds": 0.0025110244750976562, + "simulationSeconds": 0.01211392879486084, + "tick": 81 + }, + { + "renderSeconds": 0.0023920536041259766, + "simulationSeconds": 0.00645899772644043, + "tick": 82 + }, + { + "renderSeconds": 0.0026450157165527344, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.0024650096893310547, + "simulationSeconds": 0.006476998329162598, + "tick": 83 + }, + { + "renderSeconds": 0.0027390718460083008, + "simulationSeconds": 0.006329059600830078, + "tick": 84 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006636977195739746, + "tick": 85 + }, + { + "renderSeconds": 0.0024030208587646484, + "simulationSeconds": 0.0063970088958740234, + "tick": 86 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.006453037261962891, + "tick": 87 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.012017965316772461, + "tick": 89 + }, + { + "renderSeconds": 0.002823948860168457, + "simulationSeconds": 0.006326079368591309, + "tick": 90 + }, + { + "renderSeconds": 0.0029909610748291016, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 90 + }, + { + "renderSeconds": 0.002728104591369629, + "simulationSeconds": 0.0061609745025634766, + "tick": 91 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.007117033004760742, + "tick": 92 + }, + { + "renderSeconds": 0.002935051918029785, + "simulationSeconds": 0.006290078163146973, + "tick": 93 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.006441950798034668, + "tick": 94 + }, + { + "renderSeconds": 0.0024439096450805664, + "simulationSeconds": 0.01270592212677002, + "tick": 96 + }, + { + "renderSeconds": 0.0027500391006469727, + "simulationSeconds": 0.0069359540939331055, + "tick": 97 + }, + { + "renderSeconds": 0.0029360055923461914, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.002279043197631836, + "simulationSeconds": 0.006562948226928711, + "tick": 98 + }, + { + "renderSeconds": 0.0023061037063598633, + "simulationSeconds": 0.006261944770812988, + "tick": 99 + }, + { + "renderSeconds": 0.0029429197311401367, + "simulationSeconds": 0.006229996681213379, + "tick": 100 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.0063359737396240234, + "tick": 101 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.006206989288330078, + "tick": 102 + }, + { + "renderSeconds": 0.0025119781494140625, + "simulationSeconds": 0.01230001449584961, + "tick": 104 + }, + { + "renderSeconds": 0.0021289587020874023, + "simulationSeconds": 0.006852984428405762, + "tick": 105 + }, + { + "renderSeconds": 0.0031169652938842773, + "simulationSeconds": 2.0265579223632812e-06, + "tick": 105 + }, + { + "renderSeconds": 0.0022509098052978516, + "simulationSeconds": 0.00677800178527832, + "tick": 106 + }, + { + "renderSeconds": 0.0021059513092041016, + "simulationSeconds": 0.0066519975662231445, + "tick": 107 + }, + { + "renderSeconds": 0.002256035804748535, + "simulationSeconds": 0.006339907646179199, + "tick": 108 + }, + { + "renderSeconds": 0.0020259618759155273, + "simulationSeconds": 0.006561994552612305, + "tick": 109 + }, + { + "renderSeconds": 0.0025709867477416992, + "simulationSeconds": 0.011622071266174316, + "tick": 111 + }, + { + "renderSeconds": 0.002346038818359375, + "simulationSeconds": 0.006731986999511719, + "tick": 112 + }, + { + "renderSeconds": 0.002732992172241211, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.002151966094970703, + "simulationSeconds": 0.006260991096496582, + "tick": 113 + }, + { + "renderSeconds": 0.002442002296447754, + "simulationSeconds": 0.006357073783874512, + "tick": 114 + }, + { + "renderSeconds": 0.0021799802780151367, + "simulationSeconds": 0.00665593147277832, + "tick": 115 + }, + { + "renderSeconds": 0.002485036849975586, + "simulationSeconds": 0.006640911102294922, + "tick": 116 + }, + { + "renderSeconds": 0.002090930938720703, + "simulationSeconds": 0.006492018699645996, + "tick": 117 + }, + { + "renderSeconds": 0.0023189783096313477, + "simulationSeconds": 0.011745929718017578, + "tick": 119 + }, + { + "renderSeconds": 0.0020760297775268555, + "simulationSeconds": 0.00660097599029541, + "tick": 120 + }, + { + "renderSeconds": 0.0024280548095703125, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.0023599863052368164, + "simulationSeconds": 0.00653994083404541, + "tick": 121 + }, + { + "renderSeconds": 0.0021680593490600586, + "simulationSeconds": 0.006669044494628906, + "tick": 122 + }, + { + "renderSeconds": 0.0020160675048828125, + "simulationSeconds": 0.006436944007873535, + "tick": 123 + }, + { + "renderSeconds": 0.002011895179748535, + "simulationSeconds": 0.006314992904663086, + "tick": 124 + }, + { + "renderSeconds": 0.0024220943450927734, + "simulationSeconds": 0.012498974800109863, + "tick": 126 + }, + { + "renderSeconds": 0.0021899938583374023, + "simulationSeconds": 0.006732940673828125, + "tick": 127 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 2.9802322387695312e-06, + "tick": 127 + }, + { + "renderSeconds": 0.002483963966369629, + "simulationSeconds": 0.006554007530212402, + "tick": 128 + }, + { + "renderSeconds": 0.003139972686767578, + "simulationSeconds": 0.006644010543823242, + "tick": 129 + }, + { + "renderSeconds": 0.0031110048294067383, + "simulationSeconds": 0.005957961082458496, + "tick": 130 + }, + { + "renderSeconds": 0.002637028694152832, + "simulationSeconds": 0.006799936294555664, + "tick": 131 + }, + { + "renderSeconds": 0.0024880170822143555, + "simulationSeconds": 0.006065964698791504, + "tick": 132 + }, + { + "renderSeconds": 0.0024470090866088867, + "simulationSeconds": 0.01155996322631836, + "tick": 134 + }, + { + "renderSeconds": 0.002278923988342285, + "simulationSeconds": 0.0067980289459228516, + "tick": 135 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0, + "tick": 135 + }, + { + "renderSeconds": 0.002146005630493164, + "simulationSeconds": 0.006556034088134766, + "tick": 136 + }, + { + "renderSeconds": 0.001999974250793457, + "simulationSeconds": 0.006059050559997559, + "tick": 137 + }, + { + "renderSeconds": 0.0019750595092773438, + "simulationSeconds": 0.006235003471374512, + "tick": 138 + }, + { + "renderSeconds": 0.0022050142288208008, + "simulationSeconds": 0.006030917167663574, + "tick": 139 + }, + { + "renderSeconds": 0.0025229454040527344, + "simulationSeconds": 0.011981010437011719, + "tick": 141 + }, + { + "renderSeconds": 0.0021920204162597656, + "simulationSeconds": 0.006204962730407715, + "tick": 142 + }, + { + "renderSeconds": 0.0025870800018310547, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0020270347595214844, + "simulationSeconds": 0.006223082542419434, + "tick": 143 + }, + { + "renderSeconds": 0.0023059844970703125, + "simulationSeconds": 0.006081938743591309, + "tick": 144 + }, + { + "renderSeconds": 0.00200498104095459, + "simulationSeconds": 0.005876898765563965, + "tick": 145 + }, + { + "renderSeconds": 0.0021399259567260742, + "simulationSeconds": 0.0059680938720703125, + "tick": 146 + }, + { + "renderSeconds": 0.0020400285720825195, + "simulationSeconds": 0.006265044212341309, + "tick": 147 + }, + { + "renderSeconds": 0.0026569366455078125, + "simulationSeconds": 0.011453032493591309, + "tick": 149 + }, + { + "renderSeconds": 0.0020269155502319336, + "simulationSeconds": 0.005945086479187012, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03722774999914691, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 238, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004601478576660156, + "preparationSeconds": 0.44026803970336914, + "reducedMotion": true, + "renderSeconds": 0.38032102584838867, + "repetition": 1, + "scenePreparationSeconds": 0.146170973777771, + "simulationSeconds": 0.9442178010940552, + "snapshotBuildCount": 152, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 33.33333332557231 + }, + { + "axis": 8191, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.20789885520935059, + "frameCosts": [ + { + "renderSeconds": 0.0006400346755981445, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0006269216537475586, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0005710124969482422, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0005950927734375, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.002238035202026367, + "simulationSeconds": 0.0042220354080200195, + "tick": 1 + }, + { + "renderSeconds": 0.0017920732498168945, + "simulationSeconds": 0.004701972007751465, + "tick": 2 + }, + { + "renderSeconds": 0.0018830299377441406, + "simulationSeconds": 0.0045059919357299805, + "tick": 3 + }, + { + "renderSeconds": 0.001949906349182129, + "simulationSeconds": 0.004765033721923828, + "tick": 4 + }, + { + "renderSeconds": 0.002174973487854004, + "simulationSeconds": 0.010630011558532715, + "tick": 6 + }, + { + "renderSeconds": 0.002164006233215332, + "simulationSeconds": 0.01106405258178711, + "tick": 8 + }, + { + "renderSeconds": 0.0021610260009765625, + "simulationSeconds": 0.011090993881225586, + "tick": 10 + }, + { + "renderSeconds": 0.002228975296020508, + "simulationSeconds": 0.01123499870300293, + "tick": 12 + }, + { + "renderSeconds": 0.002230048179626465, + "simulationSeconds": 0.011958003044128418, + "tick": 14 + }, + { + "renderSeconds": 0.002211928367614746, + "simulationSeconds": 0.011782050132751465, + "tick": 16 + }, + { + "renderSeconds": 0.0024750232696533203, + "simulationSeconds": 0.011880993843078613, + "tick": 18 + }, + { + "renderSeconds": 0.002870917320251465, + "simulationSeconds": 0.012233972549438477, + "tick": 20 + }, + { + "renderSeconds": 0.0029070377349853516, + "simulationSeconds": 0.013454914093017578, + "tick": 22 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 22 + }, + { + "renderSeconds": 0.003023982048034668, + "simulationSeconds": 0.00707697868347168, + "tick": 23 + }, + { + "renderSeconds": 0.002665996551513672, + "simulationSeconds": 0.006618976593017578, + "tick": 24 + }, + { + "renderSeconds": 0.0030090808868408203, + "simulationSeconds": 0.006383061408996582, + "tick": 25 + }, + { + "renderSeconds": 0.0032399892807006836, + "simulationSeconds": 0.0066280364990234375, + "tick": 26 + }, + { + "renderSeconds": 0.0025750398635864258, + "simulationSeconds": 0.013103008270263672, + "tick": 28 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006818056106567383, + "tick": 29 + }, + { + "renderSeconds": 0.002709031105041504, + "simulationSeconds": 0.006744027137756348, + "tick": 30 + }, + { + "renderSeconds": 0.002957940101623535, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 30 + }, + { + "renderSeconds": 0.002855062484741211, + "simulationSeconds": 0.006747007369995117, + "tick": 31 + }, + { + "renderSeconds": 0.0027260780334472656, + "simulationSeconds": 0.006879925727844238, + "tick": 32 + }, + { + "renderSeconds": 0.0023440122604370117, + "simulationSeconds": 0.006819963455200195, + "tick": 33 + }, + { + "renderSeconds": 0.0027049779891967773, + "simulationSeconds": 0.00625300407409668, + "tick": 34 + }, + { + "renderSeconds": 0.002577066421508789, + "simulationSeconds": 0.012024998664855957, + "tick": 36 + }, + { + "renderSeconds": 0.002667069435119629, + "simulationSeconds": 0.007000923156738281, + "tick": 37 + }, + { + "renderSeconds": 0.0028640031814575195, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0021970272064208984, + "simulationSeconds": 0.0065430402755737305, + "tick": 38 + }, + { + "renderSeconds": 0.0024720430374145508, + "simulationSeconds": 0.00637507438659668, + "tick": 39 + }, + { + "renderSeconds": 0.002752065658569336, + "simulationSeconds": 0.0064508914947509766, + "tick": 40 + }, + { + "renderSeconds": 0.00262606143951416, + "simulationSeconds": 0.006578922271728516, + "tick": 41 + }, + { + "renderSeconds": 0.0024470090866088867, + "simulationSeconds": 0.012858033180236816, + "tick": 43 + }, + { + "renderSeconds": 0.0024830102920532227, + "simulationSeconds": 0.006398916244506836, + "tick": 44 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006354928016662598, + "tick": 45 + }, + { + "renderSeconds": 0.0025309324264526367, + "simulationSeconds": 0, + "tick": 45 + }, + { + "renderSeconds": 0.0027478933334350586, + "simulationSeconds": 0.006266951560974121, + "tick": 46 + }, + { + "renderSeconds": 0.0028259754180908203, + "simulationSeconds": 0.006358981132507324, + "tick": 47 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.006720900535583496, + "tick": 48 + }, + { + "renderSeconds": 0.002711057662963867, + "simulationSeconds": 0.006682991981506348, + "tick": 49 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.014436006546020508, + "tick": 51 + }, + { + "renderSeconds": 0.00303804874420166, + "simulationSeconds": 0.007534027099609375, + "tick": 52 + }, + { + "renderSeconds": 0.0031200647354125977, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.00739598274230957, + "tick": 53 + }, + { + "renderSeconds": 0.0032150745391845703, + "simulationSeconds": 0.007212996482849121, + "tick": 54 + }, + { + "renderSeconds": 0.0029020309448242188, + "simulationSeconds": 0.0072820186614990234, + "tick": 55 + }, + { + "renderSeconds": 0.003146052360534668, + "simulationSeconds": 0.007086992263793945, + "tick": 56 + }, + { + "renderSeconds": 0.002814054489135742, + "simulationSeconds": 0.014111995697021484, + "tick": 58 + }, + { + "renderSeconds": 0.003054976463317871, + "simulationSeconds": 0.006978034973144531, + "tick": 59 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.007172942161560059, + "tick": 60 + }, + { + "renderSeconds": 0.0030319690704345703, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 60 + }, + { + "renderSeconds": 0.002866983413696289, + "simulationSeconds": 0.00698697566986084, + "tick": 61 + }, + { + "renderSeconds": 0.002993941307067871, + "simulationSeconds": 0.007330060005187988, + "tick": 62 + }, + { + "renderSeconds": 0.002759099006652832, + "simulationSeconds": 0.0077419281005859375, + "tick": 63 + }, + { + "renderSeconds": 0.0025119781494140625, + "simulationSeconds": 0.006955981254577637, + "tick": 64 + }, + { + "renderSeconds": 0.0025290250778198242, + "simulationSeconds": 0.011868953704833984, + "tick": 66 + }, + { + "renderSeconds": 0.0027790069580078125, + "simulationSeconds": 0.00627291202545166, + "tick": 67 + }, + { + "renderSeconds": 0.0030859708786010742, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.0030870437622070312, + "simulationSeconds": 0.007156014442443848, + "tick": 68 + }, + { + "renderSeconds": 0.0025330781936645508, + "simulationSeconds": 0.006271004676818848, + "tick": 69 + }, + { + "renderSeconds": 0.0027480125427246094, + "simulationSeconds": 0.006412982940673828, + "tick": 70 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006479024887084961, + "tick": 71 + }, + { + "renderSeconds": 0.0023969411849975586, + "simulationSeconds": 0.01279306411743164, + "tick": 73 + }, + { + "renderSeconds": 0.0025320053100585938, + "simulationSeconds": 0.0062209367752075195, + "tick": 74 + }, + { + "renderSeconds": 0.0027229785919189453, + "simulationSeconds": 0.006527066230773926, + "tick": 75 + }, + { + "renderSeconds": 0.003242015838623047, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002902984619140625, + "simulationSeconds": 0.0071680545806884766, + "tick": 76 + }, + { + "renderSeconds": 0.0033440589904785156, + "simulationSeconds": 0.007359027862548828, + "tick": 77 + }, + { + "renderSeconds": 0.003165006637573242, + "simulationSeconds": 0.007097005844116211, + "tick": 78 + }, + { + "renderSeconds": 0.003061056137084961, + "simulationSeconds": 0.006963968276977539, + "tick": 79 + }, + { + "renderSeconds": 0.0028181076049804688, + "simulationSeconds": 0.014584898948669434, + "tick": 81 + }, + { + "renderSeconds": 0.003216981887817383, + "simulationSeconds": 0.006961941719055176, + "tick": 82 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0, + "tick": 82 + }, + { + "renderSeconds": 0.002908945083618164, + "simulationSeconds": 0.007598996162414551, + "tick": 83 + }, + { + "renderSeconds": 0.0032030344009399414, + "simulationSeconds": 0.007443070411682129, + "tick": 84 + }, + { + "renderSeconds": 0.0025010108947753906, + "simulationSeconds": 0.007053971290588379, + "tick": 85 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.006528973579406738, + "tick": 86 + }, + { + "renderSeconds": 0.002532958984375, + "simulationSeconds": 0.012521028518676758, + "tick": 88 + }, + { + "renderSeconds": 0.0025609731674194336, + "simulationSeconds": 0.006968021392822266, + "tick": 89 + }, + { + "renderSeconds": 0.002102971076965332, + "simulationSeconds": 0.006800055503845215, + "tick": 90 + }, + { + "renderSeconds": 0.0029320716857910156, + "simulationSeconds": 0, + "tick": 90 + }, + { + "renderSeconds": 0.0025900602340698242, + "simulationSeconds": 0.006652951240539551, + "tick": 91 + }, + { + "renderSeconds": 0.0021671056747436523, + "simulationSeconds": 0.006346940994262695, + "tick": 92 + }, + { + "renderSeconds": 0.0021600723266601562, + "simulationSeconds": 0.006398916244506836, + "tick": 93 + }, + { + "renderSeconds": 0.0021810531616210938, + "simulationSeconds": 0.006306052207946777, + "tick": 94 + }, + { + "renderSeconds": 0.002278923988342285, + "simulationSeconds": 0.01117396354675293, + "tick": 96 + }, + { + "renderSeconds": 0.0021920204162597656, + "simulationSeconds": 0.006826996803283691, + "tick": 97 + }, + { + "renderSeconds": 0.003368973731994629, + "simulationSeconds": 0, + "tick": 97 + }, + { + "renderSeconds": 0.0020949840545654297, + "simulationSeconds": 0.006322026252746582, + "tick": 98 + }, + { + "renderSeconds": 0.002552032470703125, + "simulationSeconds": 0.006312012672424316, + "tick": 99 + }, + { + "renderSeconds": 0.002231001853942871, + "simulationSeconds": 0.006170988082885742, + "tick": 100 + }, + { + "renderSeconds": 0.002417922019958496, + "simulationSeconds": 0.006354928016662598, + "tick": 101 + }, + { + "renderSeconds": 0.0024509429931640625, + "simulationSeconds": 0.01245105266571045, + "tick": 103 + }, + { + "renderSeconds": 0.002744913101196289, + "simulationSeconds": 0.0063790082931518555, + "tick": 104 + }, + { + "renderSeconds": 0.002931952476501465, + "simulationSeconds": 0.006345033645629883, + "tick": 105 + }, + { + "renderSeconds": 0.002915024757385254, + "simulationSeconds": 0, + "tick": 105 + }, + { + "renderSeconds": 0.0028200149536132812, + "simulationSeconds": 0.0069789886474609375, + "tick": 106 + }, + { + "renderSeconds": 0.0034949779510498047, + "simulationSeconds": 0.007462978363037109, + "tick": 107 + }, + { + "renderSeconds": 0.0028510093688964844, + "simulationSeconds": 0.007130980491638184, + "tick": 108 + }, + { + "renderSeconds": 0.002892017364501953, + "simulationSeconds": 0.006387114524841309, + "tick": 109 + }, + { + "renderSeconds": 0.0024690628051757812, + "simulationSeconds": 0.012439966201782227, + "tick": 111 + }, + { + "renderSeconds": 0.002377033233642578, + "simulationSeconds": 0.006981968879699707, + "tick": 112 + }, + { + "renderSeconds": 0.0027769804000854492, + "simulationSeconds": 9.5367431640625e-07, + "tick": 112 + }, + { + "renderSeconds": 0.0027199983596801758, + "simulationSeconds": 0.0060269832611083984, + "tick": 113 + }, + { + "renderSeconds": 0.0025970935821533203, + "simulationSeconds": 0.006250977516174316, + "tick": 114 + }, + { + "renderSeconds": 0.0025290250778198242, + "simulationSeconds": 0.006404995918273926, + "tick": 115 + }, + { + "renderSeconds": 0.002686023712158203, + "simulationSeconds": 0.006399989128112793, + "tick": 116 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.012521028518676758, + "tick": 118 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.00642704963684082, + "tick": 119 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.007039070129394531, + "tick": 120 + }, + { + "renderSeconds": 0.002691030502319336, + "simulationSeconds": 2.9802322387695312e-06, + "tick": 120 + }, + { + "renderSeconds": 0.002225041389465332, + "simulationSeconds": 0.0066089630126953125, + "tick": 121 + }, + { + "renderSeconds": 0.0021049976348876953, + "simulationSeconds": 0.006417989730834961, + "tick": 122 + }, + { + "renderSeconds": 0.0019729137420654297, + "simulationSeconds": 0.006605029106140137, + "tick": 123 + }, + { + "renderSeconds": 0.0026699304580688477, + "simulationSeconds": 0.006467938423156738, + "tick": 124 + }, + { + "renderSeconds": 0.0024520158767700195, + "simulationSeconds": 0.012399077415466309, + "tick": 126 + }, + { + "renderSeconds": 0.0021589994430541992, + "simulationSeconds": 0.0066879987716674805, + "tick": 127 + }, + { + "renderSeconds": 0.0026559829711914062, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 127 + }, + { + "renderSeconds": 0.0023539066314697266, + "simulationSeconds": 0.007006049156188965, + "tick": 128 + }, + { + "renderSeconds": 0.0021669864654541016, + "simulationSeconds": 0.006544947624206543, + "tick": 129 + }, + { + "renderSeconds": 0.002032041549682617, + "simulationSeconds": 0.006482958793640137, + "tick": 130 + }, + { + "renderSeconds": 0.002054929733276367, + "simulationSeconds": 0.006332993507385254, + "tick": 131 + }, + { + "renderSeconds": 0.002424001693725586, + "simulationSeconds": 0.012717008590698242, + "tick": 133 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.007003068923950195, + "tick": 134 + }, + { + "renderSeconds": 0.002582073211669922, + "simulationSeconds": 0.006330966949462891, + "tick": 135 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 9.5367431640625e-07, + "tick": 135 + }, + { + "renderSeconds": 0.0022159814834594727, + "simulationSeconds": 0.006538033485412598, + "tick": 136 + }, + { + "renderSeconds": 0.002332925796508789, + "simulationSeconds": 0.006179094314575195, + "tick": 137 + }, + { + "renderSeconds": 0.0025349855422973633, + "simulationSeconds": 0.006485939025878906, + "tick": 138 + }, + { + "renderSeconds": 0.0021680593490600586, + "simulationSeconds": 0.006312966346740723, + "tick": 139 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.011482000350952148, + "tick": 141 + }, + { + "renderSeconds": 0.002508997917175293, + "simulationSeconds": 0.006935000419616699, + "tick": 142 + }, + { + "renderSeconds": 0.002722024917602539, + "simulationSeconds": 0, + "tick": 142 + }, + { + "renderSeconds": 0.0022469758987426758, + "simulationSeconds": 0.006389021873474121, + "tick": 143 + }, + { + "renderSeconds": 0.0021480321884155273, + "simulationSeconds": 0.006306886672973633, + "tick": 144 + }, + { + "renderSeconds": 0.0028409957885742188, + "simulationSeconds": 0.00671994686126709, + "tick": 145 + }, + { + "renderSeconds": 0.0028569698333740234, + "simulationSeconds": 0.006416916847229004, + "tick": 146 + }, + { + "renderSeconds": 0.0026390552520751953, + "simulationSeconds": 0.011520981788635254, + "tick": 148 + }, + { + "renderSeconds": 0.0024110078811645508, + "simulationSeconds": 0.006484031677246094, + "tick": 149 + }, + { + "renderSeconds": 0.002527952194213867, + "simulationSeconds": 0.006498932838439941, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.03333333332557231, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 224, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.0041582584381103516, + "preparationSeconds": 0.4708840847015381, + "reducedMotion": false, + "renderSeconds": 0.37393391132354736, + "repetition": 0, + "scenePreparationSeconds": 0.16752898693084717, + "simulationSeconds": 0.9678664207458496, + "snapshotBuildCount": 145, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 28.27554167015478, + "callbackMaxMS": 35.459583334159106 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.20638644695281982, + "frameCosts": [ + { + "renderSeconds": 0.12861096858978271, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.002467036247253418, + "simulationSeconds": 0.03357493877410889, + "tick": 8 + }, + { + "renderSeconds": 0.0018720626831054688, + "simulationSeconds": 0.017184019088745117, + "tick": 12 + }, + { + "renderSeconds": 0.0018090009689331055, + "simulationSeconds": 0.004415035247802734, + "tick": 13 + }, + { + "renderSeconds": 0.0017288923263549805, + "simulationSeconds": 0.004474997520446777, + "tick": 14 + }, + { + "renderSeconds": 0.002108931541442871, + "simulationSeconds": 0.005704045295715332, + "tick": 15 + }, + { + "renderSeconds": 0.0021589994430541992, + "simulationSeconds": 0.0062580108642578125, + "tick": 16 + }, + { + "renderSeconds": 0.0022159814834594727, + "simulationSeconds": 0.006240963935852051, + "tick": 17 + }, + { + "renderSeconds": 0.0023730993270874023, + "simulationSeconds": 0.006125926971435547, + "tick": 18 + }, + { + "renderSeconds": 0.0032080411911010742, + "simulationSeconds": 0.008154988288879395, + "tick": 19 + }, + { + "renderSeconds": 0.003702998161315918, + "simulationSeconds": 0.00796198844909668, + "tick": 20 + }, + { + "renderSeconds": 0.0035649538040161133, + "simulationSeconds": 0.00898599624633789, + "tick": 21 + }, + { + "renderSeconds": 0.0036220550537109375, + "simulationSeconds": 0.00887298583984375, + "tick": 22 + }, + { + "renderSeconds": 0.002886056900024414, + "simulationSeconds": 0.007196903228759766, + "tick": 23 + }, + { + "renderSeconds": 0.002885103225708008, + "simulationSeconds": 0.007145047187805176, + "tick": 24 + }, + { + "renderSeconds": 0.0028870105743408203, + "simulationSeconds": 0.007111907005310059, + "tick": 25 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.006162047386169434, + "tick": 26 + }, + { + "renderSeconds": 0.0025490522384643555, + "simulationSeconds": 0.006317019462585449, + "tick": 27 + }, + { + "renderSeconds": 0.002721071243286133, + "simulationSeconds": 0.006235003471374512, + "tick": 28 + }, + { + "renderSeconds": 0.0026019811630249023, + "simulationSeconds": 0.006187081336975098, + "tick": 29 + }, + { + "renderSeconds": 0.002783060073852539, + "simulationSeconds": 0.006373047828674316, + "tick": 30 + }, + { + "renderSeconds": 0.0025238990783691406, + "simulationSeconds": 0.006302952766418457, + "tick": 31 + }, + { + "renderSeconds": 0.0022890567779541016, + "simulationSeconds": 0.0066070556640625, + "tick": 32 + }, + { + "renderSeconds": 0.0022159814834594727, + "simulationSeconds": 0.00681304931640625, + "tick": 33 + }, + { + "renderSeconds": 0.0028630495071411133, + "simulationSeconds": 0.006538987159729004, + "tick": 34 + }, + { + "renderSeconds": 0.002321958541870117, + "simulationSeconds": 0.006731986999511719, + "tick": 35 + }, + { + "renderSeconds": 0.002539992332458496, + "simulationSeconds": 0.006651043891906738, + "tick": 36 + }, + { + "renderSeconds": 0.0021489858627319336, + "simulationSeconds": 0.006338000297546387, + "tick": 37 + }, + { + "renderSeconds": 0.0023180246353149414, + "simulationSeconds": 0.006742000579833984, + "tick": 38 + }, + { + "renderSeconds": 0.002077937126159668, + "simulationSeconds": 0.006608009338378906, + "tick": 39 + }, + { + "renderSeconds": 0.0021550655364990234, + "simulationSeconds": 0.00651395320892334, + "tick": 40 + }, + { + "renderSeconds": 0.0026990175247192383, + "simulationSeconds": 0.006494998931884766, + "tick": 41 + }, + { + "renderSeconds": 0.00291597843170166, + "simulationSeconds": 0.00690305233001709, + "tick": 42 + }, + { + "renderSeconds": 0.002279996871948242, + "simulationSeconds": 0.0062950849533081055, + "tick": 43 + }, + { + "renderSeconds": 0.002649068832397461, + "simulationSeconds": 0.00613093376159668, + "tick": 44 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006137967109680176, + "tick": 45 + }, + { + "renderSeconds": 0.002595067024230957, + "simulationSeconds": 0.0063179731369018555, + "tick": 46 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.0067070722579956055, + "tick": 47 + }, + { + "renderSeconds": 0.002872943878173828, + "simulationSeconds": 0.0074928998947143555, + "tick": 48 + }, + { + "renderSeconds": 0.003777027130126953, + "simulationSeconds": 0.007822990417480469, + "tick": 49 + }, + { + "renderSeconds": 0.003551959991455078, + "simulationSeconds": 0.009318947792053223, + "tick": 50 + }, + { + "renderSeconds": 0.0033769607543945312, + "simulationSeconds": 0.008746981620788574, + "tick": 51 + }, + { + "renderSeconds": 0.00347292423248291, + "simulationSeconds": 0.009119033813476562, + "tick": 52 + }, + { + "renderSeconds": 0.003838062286376953, + "simulationSeconds": 0.008839964866638184, + "tick": 53 + }, + { + "renderSeconds": 0.0030230283737182617, + "simulationSeconds": 0.0070149898529052734, + "tick": 54 + }, + { + "renderSeconds": 0.002592921257019043, + "simulationSeconds": 0.007027983665466309, + "tick": 55 + }, + { + "renderSeconds": 0.003097057342529297, + "simulationSeconds": 0.006085991859436035, + "tick": 56 + }, + { + "renderSeconds": 0.0026589632034301758, + "simulationSeconds": 0.00618898868560791, + "tick": 57 + }, + { + "renderSeconds": 0.002890944480895996, + "simulationSeconds": 0.00616002082824707, + "tick": 58 + }, + { + "renderSeconds": 0.002507925033569336, + "simulationSeconds": 0.006276965141296387, + "tick": 59 + }, + { + "renderSeconds": 0.00286102294921875, + "simulationSeconds": 0.006490945816040039, + "tick": 60 + }, + { + "renderSeconds": 0.002720952033996582, + "simulationSeconds": 0.00660097599029541, + "tick": 61 + }, + { + "renderSeconds": 0.002774953842163086, + "simulationSeconds": 0.006927967071533203, + "tick": 62 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.006510019302368164, + "tick": 63 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0.006743073463439941, + "tick": 64 + }, + { + "renderSeconds": 0.002878904342651367, + "simulationSeconds": 0.006466984748840332, + "tick": 65 + }, + { + "renderSeconds": 0.0028079748153686523, + "simulationSeconds": 0.006690025329589844, + "tick": 66 + }, + { + "renderSeconds": 0.002848982810974121, + "simulationSeconds": 0.00645601749420166, + "tick": 67 + }, + { + "renderSeconds": 0.0029109716415405273, + "simulationSeconds": 0.007013082504272461, + "tick": 68 + }, + { + "renderSeconds": 0.003123044967651367, + "simulationSeconds": 0.0065850019454956055, + "tick": 69 + }, + { + "renderSeconds": 0.003231048583984375, + "simulationSeconds": 0.007364034652709961, + "tick": 70 + }, + { + "renderSeconds": 0.0029479265213012695, + "simulationSeconds": 0.006435990333557129, + "tick": 71 + }, + { + "renderSeconds": 0.003690004348754883, + "simulationSeconds": 0.006700992584228516, + "tick": 72 + }, + { + "renderSeconds": 0.0029619932174682617, + "simulationSeconds": 0.006410002708435059, + "tick": 73 + }, + { + "renderSeconds": 0.0026619434356689453, + "simulationSeconds": 0.00658106803894043, + "tick": 74 + }, + { + "renderSeconds": 0.0026339292526245117, + "simulationSeconds": 0.006414055824279785, + "tick": 75 + }, + { + "renderSeconds": 0.0025249719619750977, + "simulationSeconds": 0.00630497932434082, + "tick": 76 + }, + { + "renderSeconds": 0.002744913101196289, + "simulationSeconds": 0.00639498233795166, + "tick": 77 + }, + { + "renderSeconds": 0.002691984176635742, + "simulationSeconds": 0.00645899772644043, + "tick": 78 + }, + { + "renderSeconds": 0.003249049186706543, + "simulationSeconds": 0.006577014923095703, + "tick": 79 + }, + { + "renderSeconds": 0.0030449628829956055, + "simulationSeconds": 0.006811022758483887, + "tick": 80 + }, + { + "renderSeconds": 0.0026890039443969727, + "simulationSeconds": 0.006004929542541504, + "tick": 81 + }, + { + "renderSeconds": 0.0027390718460083008, + "simulationSeconds": 0.006624937057495117, + "tick": 82 + }, + { + "renderSeconds": 0.002623915672302246, + "simulationSeconds": 0.006599903106689453, + "tick": 83 + }, + { + "renderSeconds": 0.002462029457092285, + "simulationSeconds": 0.006360054016113281, + "tick": 84 + }, + { + "renderSeconds": 0.002607107162475586, + "simulationSeconds": 0.006454944610595703, + "tick": 85 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.006260991096496582, + "tick": 86 + }, + { + "renderSeconds": 0.002679109573364258, + "simulationSeconds": 0.006901979446411133, + "tick": 87 + }, + { + "renderSeconds": 0.0027009248733520508, + "simulationSeconds": 0.007400035858154297, + "tick": 88 + }, + { + "renderSeconds": 0.002696990966796875, + "simulationSeconds": 0.006384015083312988, + "tick": 89 + }, + { + "renderSeconds": 0.0021369457244873047, + "simulationSeconds": 0.006354928016662598, + "tick": 90 + }, + { + "renderSeconds": 0.002084970474243164, + "simulationSeconds": 0.006245017051696777, + "tick": 91 + }, + { + "renderSeconds": 0.002617955207824707, + "simulationSeconds": 0.0062149763107299805, + "tick": 92 + }, + { + "renderSeconds": 0.0023919343948364258, + "simulationSeconds": 0.006322026252746582, + "tick": 93 + }, + { + "renderSeconds": 0.0030100345611572266, + "simulationSeconds": 0.006453990936279297, + "tick": 94 + }, + { + "renderSeconds": 0.0027080774307250977, + "simulationSeconds": 0.006652951240539551, + "tick": 95 + }, + { + "renderSeconds": 0.002601027488708496, + "simulationSeconds": 0.0063478946685791016, + "tick": 96 + }, + { + "renderSeconds": 0.0027489662170410156, + "simulationSeconds": 0.006889939308166504, + "tick": 97 + }, + { + "renderSeconds": 0.0026819705963134766, + "simulationSeconds": 0.006498932838439941, + "tick": 98 + }, + { + "renderSeconds": 0.00232696533203125, + "simulationSeconds": 0.0067789554595947266, + "tick": 99 + }, + { + "renderSeconds": 0.002641916275024414, + "simulationSeconds": 0.006380915641784668, + "tick": 100 + }, + { + "renderSeconds": 0.002825021743774414, + "simulationSeconds": 0.006481051445007324, + "tick": 101 + }, + { + "renderSeconds": 0.0026460886001586914, + "simulationSeconds": 0.006548047065734863, + "tick": 102 + }, + { + "renderSeconds": 0.002917051315307617, + "simulationSeconds": 0.0068149566650390625, + "tick": 103 + }, + { + "renderSeconds": 0.0024509429931640625, + "simulationSeconds": 0.006450057029724121, + "tick": 104 + }, + { + "renderSeconds": 0.00266110897064209, + "simulationSeconds": 0.007079958915710449, + "tick": 105 + }, + { + "renderSeconds": 0.0025769472122192383, + "simulationSeconds": 0.006473064422607422, + "tick": 106 + }, + { + "renderSeconds": 0.00277101993560791, + "simulationSeconds": 0.006527066230773926, + "tick": 107 + }, + { + "renderSeconds": 0.002467036247253418, + "simulationSeconds": 0.0062340497970581055, + "tick": 108 + }, + { + "renderSeconds": 0.002640962600708008, + "simulationSeconds": 0.006479978561401367, + "tick": 109 + }, + { + "renderSeconds": 0.0025730133056640625, + "simulationSeconds": 0.006483912467956543, + "tick": 110 + }, + { + "renderSeconds": 0.002642035484313965, + "simulationSeconds": 0.006446957588195801, + "tick": 111 + }, + { + "renderSeconds": 0.0024260282516479492, + "simulationSeconds": 0.006321072578430176, + "tick": 112 + }, + { + "renderSeconds": 0.002763986587524414, + "simulationSeconds": 0.006764054298400879, + "tick": 113 + }, + { + "renderSeconds": 0.0024219751358032227, + "simulationSeconds": 0.006197929382324219, + "tick": 114 + }, + { + "renderSeconds": 0.002146005630493164, + "simulationSeconds": 0.006579041481018066, + "tick": 115 + }, + { + "renderSeconds": 0.002485990524291992, + "simulationSeconds": 0.006732940673828125, + "tick": 116 + }, + { + "renderSeconds": 0.0023200511932373047, + "simulationSeconds": 0.006595969200134277, + "tick": 117 + }, + { + "renderSeconds": 0.00209200382232666, + "simulationSeconds": 0.006283998489379883, + "tick": 118 + }, + { + "renderSeconds": 0.0023859739303588867, + "simulationSeconds": 0.006687045097351074, + "tick": 119 + }, + { + "renderSeconds": 0.0023540258407592773, + "simulationSeconds": 0.006551980972290039, + "tick": 120 + }, + { + "renderSeconds": 0.0023349523544311523, + "simulationSeconds": 0.006466984748840332, + "tick": 121 + }, + { + "renderSeconds": 0.002107977867126465, + "simulationSeconds": 0.006775021553039551, + "tick": 122 + }, + { + "renderSeconds": 0.00264894962310791, + "simulationSeconds": 0.006392002105712891, + "tick": 123 + }, + { + "renderSeconds": 0.002400994300842285, + "simulationSeconds": 0.0063010454177856445, + "tick": 124 + }, + { + "renderSeconds": 0.0023369789123535156, + "simulationSeconds": 0.006523013114929199, + "tick": 125 + }, + { + "renderSeconds": 0.0020029544830322266, + "simulationSeconds": 0.0066220760345458984, + "tick": 126 + }, + { + "renderSeconds": 0.001988053321838379, + "simulationSeconds": 0.0064879655838012695, + "tick": 127 + }, + { + "renderSeconds": 0.002041935920715332, + "simulationSeconds": 0.006428956985473633, + "tick": 128 + }, + { + "renderSeconds": 0.0026090145111083984, + "simulationSeconds": 0.006768941879272461, + "tick": 129 + }, + { + "renderSeconds": 0.0021709203720092773, + "simulationSeconds": 0.006561994552612305, + "tick": 130 + }, + { + "renderSeconds": 0.0026570558547973633, + "simulationSeconds": 0.006660938262939453, + "tick": 131 + }, + { + "renderSeconds": 0.0026149749755859375, + "simulationSeconds": 0.006621956825256348, + "tick": 132 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.006679058074951172, + "tick": 133 + }, + { + "renderSeconds": 0.0026950836181640625, + "simulationSeconds": 0.00651097297668457, + "tick": 134 + }, + { + "renderSeconds": 0.0026570558547973633, + "simulationSeconds": 0.006330013275146484, + "tick": 135 + }, + { + "renderSeconds": 0.0026450157165527344, + "simulationSeconds": 0.006273031234741211, + "tick": 136 + }, + { + "renderSeconds": 0.002646923065185547, + "simulationSeconds": 0.006390094757080078, + "tick": 137 + }, + { + "renderSeconds": 0.0025099515914916992, + "simulationSeconds": 0.006502985954284668, + "tick": 138 + }, + { + "renderSeconds": 0.002891063690185547, + "simulationSeconds": 0.006104946136474609, + "tick": 139 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.006178021430969238, + "tick": 140 + }, + { + "renderSeconds": 0.002472996711730957, + "simulationSeconds": 0.0061109066009521484, + "tick": 141 + }, + { + "renderSeconds": 0.0024739503860473633, + "simulationSeconds": 0.0063610076904296875, + "tick": 142 + }, + { + "renderSeconds": 0.0024919509887695312, + "simulationSeconds": 0.0064389705657958984, + "tick": 143 + }, + { + "renderSeconds": 0.002485990524291992, + "simulationSeconds": 0.006033062934875488, + "tick": 144 + }, + { + "renderSeconds": 0.0026210546493530273, + "simulationSeconds": 0.00639498233795166, + "tick": 145 + }, + { + "renderSeconds": 0.002436041831970215, + "simulationSeconds": 0.006263017654418945, + "tick": 146 + }, + { + "renderSeconds": 0.0025060176849365234, + "simulationSeconds": 0.006443023681640625, + "tick": 147 + }, + { + "renderSeconds": 0.002218008041381836, + "simulationSeconds": 0.0060950517654418945, + "tick": 148 + }, + { + "renderSeconds": 0.0021719932556152344, + "simulationSeconds": 0.006196022033691406, + "tick": 149 + }, + { + "renderSeconds": 0.002695918083190918, + "simulationSeconds": 0.006058096885681152, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 220, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.004010200500488281, + "preparationSeconds": 0.338702917098999, + "reducedMotion": false, + "renderSeconds": 0.49848759174346924, + "repetition": 1, + "scenePreparationSeconds": 0, + "simulationSeconds": 0.9633886814117432, + "snapshotBuildCount": 141, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 148.6893333203625 + }, + { + "axis": 32767, + "cleanSilhouetteReview": true, + "coveragePassed": true, + "diagnosticSeconds": 0.22695517539978027, + "frameCosts": [ + { + "renderSeconds": 0.0007700920104980469, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.00109100341796875, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 0 + }, + { + "renderSeconds": 0.0007879734039306641, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0009731054306030273, + "simulationSeconds": 0, + "tick": 0 + }, + { + "renderSeconds": 0.0028280019760131836, + "simulationSeconds": 0.006139993667602539, + "tick": 1 + }, + { + "renderSeconds": 0.002259969711303711, + "simulationSeconds": 0.0064040422439575195, + "tick": 2 + }, + { + "renderSeconds": 0.002339005470275879, + "simulationSeconds": 0.006482958793640137, + "tick": 3 + }, + { + "renderSeconds": 0.0025159120559692383, + "simulationSeconds": 0.0065460205078125, + "tick": 4 + }, + { + "renderSeconds": 0.0023120641708374023, + "simulationSeconds": 0.007182955741882324, + "tick": 5 + }, + { + "renderSeconds": 0.002562999725341797, + "simulationSeconds": 0.012570023536682129, + "tick": 7 + }, + { + "renderSeconds": 0.0030660629272460938, + "simulationSeconds": 0, + "tick": 7 + }, + { + "renderSeconds": 0.002856016159057617, + "simulationSeconds": 0.006741046905517578, + "tick": 8 + }, + { + "renderSeconds": 0.003134012222290039, + "simulationSeconds": 0.007782936096191406, + "tick": 9 + }, + { + "renderSeconds": 0.00298309326171875, + "simulationSeconds": 0.006912946701049805, + "tick": 10 + }, + { + "renderSeconds": 0.0027669668197631836, + "simulationSeconds": 0.006370067596435547, + "tick": 11 + }, + { + "renderSeconds": 0.0033060312271118164, + "simulationSeconds": 0.006577968597412109, + "tick": 12 + }, + { + "renderSeconds": 0.0027850866317749023, + "simulationSeconds": 0.006409049034118652, + "tick": 13 + }, + { + "renderSeconds": 0.0026329755783081055, + "simulationSeconds": 0.012462019920349121, + "tick": 15 + }, + { + "renderSeconds": 0.003115057945251465, + "simulationSeconds": 0, + "tick": 15 + }, + { + "renderSeconds": 0.0026799440383911133, + "simulationSeconds": 0.00814199447631836, + "tick": 16 + }, + { + "renderSeconds": 0.002826094627380371, + "simulationSeconds": 0.0065000057220458984, + "tick": 17 + }, + { + "renderSeconds": 0.002671957015991211, + "simulationSeconds": 0.00636601448059082, + "tick": 18 + }, + { + "renderSeconds": 0.0025720596313476562, + "simulationSeconds": 0.006467103958129883, + "tick": 19 + }, + { + "renderSeconds": 0.0027009248733520508, + "simulationSeconds": 0.007158041000366211, + "tick": 20 + }, + { + "renderSeconds": 0.002563953399658203, + "simulationSeconds": 0.012483954429626465, + "tick": 22 + }, + { + "renderSeconds": 0.002708911895751953, + "simulationSeconds": 0, + "tick": 22 + }, + { + "renderSeconds": 0.002976059913635254, + "simulationSeconds": 0.006474971771240234, + "tick": 23 + }, + { + "renderSeconds": 0.002897024154663086, + "simulationSeconds": 0.006453990936279297, + "tick": 24 + }, + { + "renderSeconds": 0.003268003463745117, + "simulationSeconds": 0.007380962371826172, + "tick": 25 + }, + { + "renderSeconds": 0.0028450489044189453, + "simulationSeconds": 0.007062077522277832, + "tick": 26 + }, + { + "renderSeconds": 0.00309598445892334, + "simulationSeconds": 0.007372021675109863, + "tick": 27 + }, + { + "renderSeconds": 0.0032960176467895508, + "simulationSeconds": 0.007091999053955078, + "tick": 28 + }, + { + "renderSeconds": 0.002606987953186035, + "simulationSeconds": 0.01345205307006836, + "tick": 30 + }, + { + "renderSeconds": 0.0027179718017578125, + "simulationSeconds": 0, + "tick": 30 + }, + { + "renderSeconds": 0.0027559995651245117, + "simulationSeconds": 0.0067299604415893555, + "tick": 31 + }, + { + "renderSeconds": 0.002581000328063965, + "simulationSeconds": 0.0063970088958740234, + "tick": 32 + }, + { + "renderSeconds": 0.0030199289321899414, + "simulationSeconds": 0.006227970123291016, + "tick": 33 + }, + { + "renderSeconds": 0.002638101577758789, + "simulationSeconds": 0.0065909624099731445, + "tick": 34 + }, + { + "renderSeconds": 0.0031630992889404297, + "simulationSeconds": 0.006322979927062988, + "tick": 35 + }, + { + "renderSeconds": 0.002753019332885742, + "simulationSeconds": 0.012730002403259277, + "tick": 37 + }, + { + "renderSeconds": 0.003207087516784668, + "simulationSeconds": 0, + "tick": 37 + }, + { + "renderSeconds": 0.0029309988021850586, + "simulationSeconds": 0.006554961204528809, + "tick": 38 + }, + { + "renderSeconds": 0.0032079219818115234, + "simulationSeconds": 0.007818937301635742, + "tick": 39 + }, + { + "renderSeconds": 0.0032050609588623047, + "simulationSeconds": 0.007496953010559082, + "tick": 40 + }, + { + "renderSeconds": 0.0031300783157348633, + "simulationSeconds": 0.007082939147949219, + "tick": 41 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.007130026817321777, + "tick": 42 + }, + { + "renderSeconds": 0.002744913101196289, + "simulationSeconds": 0.006994009017944336, + "tick": 43 + }, + { + "renderSeconds": 0.0028039216995239258, + "simulationSeconds": 0.01326608657836914, + "tick": 45 + }, + { + "renderSeconds": 0.002765059471130371, + "simulationSeconds": 9.5367431640625e-07, + "tick": 45 + }, + { + "renderSeconds": 0.0030329227447509766, + "simulationSeconds": 0.006688952445983887, + "tick": 46 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.006624937057495117, + "tick": 47 + }, + { + "renderSeconds": 0.0025900602340698242, + "simulationSeconds": 0.00665891170501709, + "tick": 48 + }, + { + "renderSeconds": 0.0031050443649291992, + "simulationSeconds": 0.006621003150939941, + "tick": 49 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.006744027137756348, + "tick": 50 + }, + { + "renderSeconds": 0.002447962760925293, + "simulationSeconds": 0.012449026107788086, + "tick": 52 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0, + "tick": 52 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.006430983543395996, + "tick": 53 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.006354928016662598, + "tick": 54 + }, + { + "renderSeconds": 0.0028100013732910156, + "simulationSeconds": 0.006698966026306152, + "tick": 55 + }, + { + "renderSeconds": 0.0027838945388793945, + "simulationSeconds": 0.0065460205078125, + "tick": 56 + }, + { + "renderSeconds": 0.0026100873947143555, + "simulationSeconds": 0.006425976753234863, + "tick": 57 + }, + { + "renderSeconds": 0.002750992774963379, + "simulationSeconds": 0.007899045944213867, + "tick": 58 + }, + { + "renderSeconds": 0.002479076385498047, + "simulationSeconds": 0.012475967407226562, + "tick": 60 + }, + { + "renderSeconds": 0.002595067024230957, + "simulationSeconds": 0, + "tick": 60 + }, + { + "renderSeconds": 0.002490997314453125, + "simulationSeconds": 0.0066339969635009766, + "tick": 61 + }, + { + "renderSeconds": 0.002629995346069336, + "simulationSeconds": 0.006352901458740234, + "tick": 62 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.006948947906494141, + "tick": 63 + }, + { + "renderSeconds": 0.002279996871948242, + "simulationSeconds": 0.006672978401184082, + "tick": 64 + }, + { + "renderSeconds": 0.0026230812072753906, + "simulationSeconds": 0.0066939592361450195, + "tick": 65 + }, + { + "renderSeconds": 0.002644062042236328, + "simulationSeconds": 0.013195991516113281, + "tick": 67 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0, + "tick": 67 + }, + { + "renderSeconds": 0.002655029296875, + "simulationSeconds": 0.006734013557434082, + "tick": 68 + }, + { + "renderSeconds": 0.0028330087661743164, + "simulationSeconds": 0.0063610076904296875, + "tick": 69 + }, + { + "renderSeconds": 0.0026270151138305664, + "simulationSeconds": 0.006453990936279297, + "tick": 70 + }, + { + "renderSeconds": 0.003036975860595703, + "simulationSeconds": 0.006510019302368164, + "tick": 71 + }, + { + "renderSeconds": 0.0026580095291137695, + "simulationSeconds": 0.006424903869628906, + "tick": 72 + }, + { + "renderSeconds": 0.0028090476989746094, + "simulationSeconds": 0.00645899772644043, + "tick": 73 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.013495087623596191, + "tick": 75 + }, + { + "renderSeconds": 0.0030471086502075195, + "simulationSeconds": 0, + "tick": 75 + }, + { + "renderSeconds": 0.002724885940551758, + "simulationSeconds": 0.006533026695251465, + "tick": 76 + }, + { + "renderSeconds": 0.0028820037841796875, + "simulationSeconds": 0.0065059661865234375, + "tick": 77 + }, + { + "renderSeconds": 0.0030030012130737305, + "simulationSeconds": 0.0062220096588134766, + "tick": 78 + }, + { + "renderSeconds": 0.002701997756958008, + "simulationSeconds": 0.006379961967468262, + "tick": 79 + }, + { + "renderSeconds": 0.0030690431594848633, + "simulationSeconds": 0.006368041038513184, + "tick": 80 + }, + { + "renderSeconds": 0.002790093421936035, + "simulationSeconds": 0.012480974197387695, + "tick": 82 + }, + { + "renderSeconds": 0.0028949975967407227, + "simulationSeconds": 9.5367431640625e-07, + "tick": 82 + }, + { + "renderSeconds": 0.0033829212188720703, + "simulationSeconds": 0.00660097599029541, + "tick": 83 + }, + { + "renderSeconds": 0.0026459693908691406, + "simulationSeconds": 0.006247043609619141, + "tick": 84 + }, + { + "renderSeconds": 0.0023850202560424805, + "simulationSeconds": 0.006703019142150879, + "tick": 85 + }, + { + "renderSeconds": 0.0028139352798461914, + "simulationSeconds": 0.0066220760345458984, + "tick": 86 + }, + { + "renderSeconds": 0.0025589466094970703, + "simulationSeconds": 0.006558060646057129, + "tick": 87 + }, + { + "renderSeconds": 0.002611994743347168, + "simulationSeconds": 0.006455063819885254, + "tick": 88 + }, + { + "renderSeconds": 0.002586960792541504, + "simulationSeconds": 0.012360095977783203, + "tick": 90 + }, + { + "renderSeconds": 0.0027539730072021484, + "simulationSeconds": 9.5367431640625e-07, + "tick": 90 + }, + { + "renderSeconds": 0.00257110595703125, + "simulationSeconds": 0.006145954132080078, + "tick": 91 + }, + { + "renderSeconds": 0.002831101417541504, + "simulationSeconds": 0.006320953369140625, + "tick": 92 + }, + { + "renderSeconds": 0.0023289918899536133, + "simulationSeconds": 0.0066869258880615234, + "tick": 93 + }, + { + "renderSeconds": 0.0028929710388183594, + "simulationSeconds": 0.006384015083312988, + "tick": 94 + }, + { + "renderSeconds": 0.002650022506713867, + "simulationSeconds": 0.006385922431945801, + "tick": 95 + }, + { + "renderSeconds": 0.002583026885986328, + "simulationSeconds": 0.012778043746948242, + "tick": 97 + }, + { + "renderSeconds": 0.0026320219039916992, + "simulationSeconds": 9.5367431640625e-07, + "tick": 97 + }, + { + "renderSeconds": 0.002758026123046875, + "simulationSeconds": 0.006451010704040527, + "tick": 98 + }, + { + "renderSeconds": 0.0030050277709960938, + "simulationSeconds": 0.0066939592361450195, + "tick": 99 + }, + { + "renderSeconds": 0.0031470060348510742, + "simulationSeconds": 0.006019949913024902, + "tick": 100 + }, + { + "renderSeconds": 0.003007054328918457, + "simulationSeconds": 0.006947994232177734, + "tick": 101 + }, + { + "renderSeconds": 0.003081083297729492, + "simulationSeconds": 0.006253957748413086, + "tick": 102 + }, + { + "renderSeconds": 0.0024510622024536133, + "simulationSeconds": 0.0063849687576293945, + "tick": 103 + }, + { + "renderSeconds": 0.0029639005661010742, + "simulationSeconds": 0.012945055961608887, + "tick": 105 + }, + { + "renderSeconds": 0.0031059980392456055, + "simulationSeconds": 9.5367431640625e-07, + "tick": 105 + }, + { + "renderSeconds": 0.002835988998413086, + "simulationSeconds": 0.006312012672424316, + "tick": 106 + }, + { + "renderSeconds": 0.0030770301818847656, + "simulationSeconds": 0.006450057029724121, + "tick": 107 + }, + { + "renderSeconds": 0.003018975257873535, + "simulationSeconds": 0.006654977798461914, + "tick": 108 + }, + { + "renderSeconds": 0.002460002899169922, + "simulationSeconds": 0.006469011306762695, + "tick": 109 + }, + { + "renderSeconds": 0.0029970407485961914, + "simulationSeconds": 0.006506085395812988, + "tick": 110 + }, + { + "renderSeconds": 0.002727985382080078, + "simulationSeconds": 0.012714028358459473, + "tick": 112 + }, + { + "renderSeconds": 0.0027930736541748047, + "simulationSeconds": 0, + "tick": 112 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.006556987762451172, + "tick": 113 + }, + { + "renderSeconds": 0.003081083297729492, + "simulationSeconds": 0.006457924842834473, + "tick": 114 + }, + { + "renderSeconds": 0.0029810667037963867, + "simulationSeconds": 0.006461024284362793, + "tick": 115 + }, + { + "renderSeconds": 0.0027970075607299805, + "simulationSeconds": 0.006382942199707031, + "tick": 116 + }, + { + "renderSeconds": 0.0028029680252075195, + "simulationSeconds": 0.006631016731262207, + "tick": 117 + }, + { + "renderSeconds": 0.002910017967224121, + "simulationSeconds": 0.0067729949951171875, + "tick": 118 + }, + { + "renderSeconds": 0.0027620792388916016, + "simulationSeconds": 0.012539029121398926, + "tick": 120 + }, + { + "renderSeconds": 0.0025169849395751953, + "simulationSeconds": 9.5367431640625e-07, + "tick": 120 + }, + { + "renderSeconds": 0.0027300119400024414, + "simulationSeconds": 0.006473064422607422, + "tick": 121 + }, + { + "renderSeconds": 0.0029729604721069336, + "simulationSeconds": 0.006580948829650879, + "tick": 122 + }, + { + "renderSeconds": 0.002844095230102539, + "simulationSeconds": 0.008092999458312988, + "tick": 123 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.006864070892333984, + "tick": 124 + }, + { + "renderSeconds": 0.0027070045471191406, + "simulationSeconds": 0.010583996772766113, + "tick": 125 + }, + { + "renderSeconds": 0.0032769441604614258, + "simulationSeconds": 0.012957930564880371, + "tick": 127 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 0, + "tick": 127 + }, + { + "renderSeconds": 0.002974987030029297, + "simulationSeconds": 0.006814002990722656, + "tick": 128 + }, + { + "renderSeconds": 0.002588987350463867, + "simulationSeconds": 0.006429076194763184, + "tick": 129 + }, + { + "renderSeconds": 0.0025910139083862305, + "simulationSeconds": 0.006474018096923828, + "tick": 130 + }, + { + "renderSeconds": 0.002874016761779785, + "simulationSeconds": 0.007164955139160156, + "tick": 131 + }, + { + "renderSeconds": 0.003040909767150879, + "simulationSeconds": 0.008036017417907715, + "tick": 132 + }, + { + "renderSeconds": 0.0030699968338012695, + "simulationSeconds": 0.0072879791259765625, + "tick": 133 + }, + { + "renderSeconds": 0.00292205810546875, + "simulationSeconds": 0.01566004753112793, + "tick": 135 + }, + { + "renderSeconds": 0.003085017204284668, + "simulationSeconds": 1.0728836059570312e-06, + "tick": 135 + }, + { + "renderSeconds": 0.0044089555740356445, + "simulationSeconds": 0.0071790218353271484, + "tick": 136 + }, + { + "renderSeconds": 0.0033360719680786133, + "simulationSeconds": 0.008179068565368652, + "tick": 137 + }, + { + "renderSeconds": 0.0032259225845336914, + "simulationSeconds": 0.0072820186614990234, + "tick": 138 + }, + { + "renderSeconds": 0.002595067024230957, + "simulationSeconds": 0.0070879459381103516, + "tick": 139 + }, + { + "renderSeconds": 0.0026499032974243164, + "simulationSeconds": 0.006233930587768555, + "tick": 140 + }, + { + "renderSeconds": 0.0030260086059570312, + "simulationSeconds": 0.01229703426361084, + "tick": 142 + }, + { + "renderSeconds": 0.0032379627227783203, + "simulationSeconds": 9.5367431640625e-07, + "tick": 142 + }, + { + "renderSeconds": 0.0027240514755249023, + "simulationSeconds": 0.0062940120697021484, + "tick": 143 + }, + { + "renderSeconds": 0.0027960538864135742, + "simulationSeconds": 0.006412982940673828, + "tick": 144 + }, + { + "renderSeconds": 0.00985097885131836, + "simulationSeconds": 0.008550047874450684, + "tick": 145 + }, + { + "renderSeconds": 0.0027849674224853516, + "simulationSeconds": 0.00625002384185791, + "tick": 146 + }, + { + "renderSeconds": 0.0026320219039916992, + "simulationSeconds": 0.006179928779602051, + "tick": 147 + }, + { + "renderSeconds": 0.0027159452438354492, + "simulationSeconds": 0.00657498836517334, + "tick": 148 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.01262807846069336, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0.043516583333257586, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 240, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.13820672035217285, + "preparationSeconds": 0.4978909492492676, + "reducedMotion": false, + "renderSeconds": 0.4318612813949585, + "repetition": 10, + "scenePreparationSeconds": 0.17299902439117432, + "simulationSeconds": 0.9998056888580322, + "snapshotBuildCount": 153, + "stage": 4, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 16.666666691889986, + "callbackMaxMS": 16.666666691889986 + }, + { + "axis": 32767, + "cleanSilhouetteReview": false, + "coveragePassed": true, + "diagnosticSeconds": 0.18693530559539795, + "frameCosts": [ + { + "renderSeconds": 0.17969894409179688, + "simulationSeconds": 9.5367431640625e-07, + "tick": 0 + }, + { + "renderSeconds": 0.002929091453552246, + "simulationSeconds": 0.0655449628829956, + "tick": 12 + }, + { + "renderSeconds": 0.0022759437561035156, + "simulationSeconds": 0.022210001945495605, + "tick": 16 + }, + { + "renderSeconds": 0.0021320581436157227, + "simulationSeconds": 0.01142895221710205, + "tick": 18 + }, + { + "renderSeconds": 0.0020979642868041992, + "simulationSeconds": 0.01094198226928711, + "tick": 20 + }, + { + "renderSeconds": 0.0022629499435424805, + "simulationSeconds": 0.005403995513916016, + "tick": 21 + }, + { + "renderSeconds": 0.0020999908447265625, + "simulationSeconds": 0.005494952201843262, + "tick": 22 + }, + { + "renderSeconds": 0.0021480321884155273, + "simulationSeconds": 0.005803942680358887, + "tick": 23 + }, + { + "renderSeconds": 0.002440929412841797, + "simulationSeconds": 0.005711078643798828, + "tick": 24 + }, + { + "renderSeconds": 0.0021020174026489258, + "simulationSeconds": 0.005443930625915527, + "tick": 25 + }, + { + "renderSeconds": 0.0020689964294433594, + "simulationSeconds": 0.005674004554748535, + "tick": 26 + }, + { + "renderSeconds": 0.002171039581298828, + "simulationSeconds": 0.006266951560974121, + "tick": 27 + }, + { + "renderSeconds": 0.0021131038665771484, + "simulationSeconds": 0.006270051002502441, + "tick": 28 + }, + { + "renderSeconds": 0.0026979446411132812, + "simulationSeconds": 0.0062329769134521484, + "tick": 29 + }, + { + "renderSeconds": 0.0032958984375, + "simulationSeconds": 0.007052063941955566, + "tick": 30 + }, + { + "renderSeconds": 0.0039020776748657227, + "simulationSeconds": 0.008201003074645996, + "tick": 31 + }, + { + "renderSeconds": 0.0048370361328125, + "simulationSeconds": 0.010248064994812012, + "tick": 32 + }, + { + "renderSeconds": 0.003708958625793457, + "simulationSeconds": 0.010692954063415527, + "tick": 33 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.01382303237915039, + "tick": 35 + }, + { + "renderSeconds": 0.0025190114974975586, + "simulationSeconds": 0.012801051139831543, + "tick": 37 + }, + { + "renderSeconds": 0.0024160146713256836, + "simulationSeconds": 0.012388944625854492, + "tick": 39 + }, + { + "renderSeconds": 0.002317070960998535, + "simulationSeconds": 0.00645899772644043, + "tick": 40 + }, + { + "renderSeconds": 0.0024770498275756836, + "simulationSeconds": 0.0066100358963012695, + "tick": 41 + }, + { + "renderSeconds": 0.002074003219604492, + "simulationSeconds": 0.006898045539855957, + "tick": 42 + }, + { + "renderSeconds": 0.0022780895233154297, + "simulationSeconds": 0.006524920463562012, + "tick": 43 + }, + { + "renderSeconds": 0.0021660327911376953, + "simulationSeconds": 0.006507992744445801, + "tick": 44 + }, + { + "renderSeconds": 0.002108931541442871, + "simulationSeconds": 0.006676912307739258, + "tick": 45 + }, + { + "renderSeconds": 0.0021189451217651367, + "simulationSeconds": 0.00604403018951416, + "tick": 46 + }, + { + "renderSeconds": 0.0021899938583374023, + "simulationSeconds": 0.0066509246826171875, + "tick": 47 + }, + { + "renderSeconds": 0.002315998077392578, + "simulationSeconds": 0.006317019462585449, + "tick": 48 + }, + { + "renderSeconds": 0.002146005630493164, + "simulationSeconds": 0.006412029266357422, + "tick": 49 + }, + { + "renderSeconds": 0.002496957778930664, + "simulationSeconds": 0.006554007530212402, + "tick": 50 + }, + { + "renderSeconds": 0.002187967300415039, + "simulationSeconds": 0.0065190792083740234, + "tick": 51 + }, + { + "renderSeconds": 0.0027600526809692383, + "simulationSeconds": 0.005998969078063965, + "tick": 52 + }, + { + "renderSeconds": 0.002260923385620117, + "simulationSeconds": 0.006847977638244629, + "tick": 53 + }, + { + "renderSeconds": 0.0021589994430541992, + "simulationSeconds": 0.0064209699630737305, + "tick": 54 + }, + { + "renderSeconds": 0.0020619630813598633, + "simulationSeconds": 0.006129026412963867, + "tick": 55 + }, + { + "renderSeconds": 0.0022079944610595703, + "simulationSeconds": 0.006152033805847168, + "tick": 56 + }, + { + "renderSeconds": 0.002734065055847168, + "simulationSeconds": 0.006208896636962891, + "tick": 57 + }, + { + "renderSeconds": 0.0026110410690307617, + "simulationSeconds": 0.006512999534606934, + "tick": 58 + }, + { + "renderSeconds": 0.0027430057525634766, + "simulationSeconds": 0.0065920352935791016, + "tick": 59 + }, + { + "renderSeconds": 0.0027810335159301758, + "simulationSeconds": 0.00653994083404541, + "tick": 60 + }, + { + "renderSeconds": 0.0031000375747680664, + "simulationSeconds": 0.00719904899597168, + "tick": 61 + }, + { + "renderSeconds": 0.003025054931640625, + "simulationSeconds": 0.007516980171203613, + "tick": 62 + }, + { + "renderSeconds": 0.0031900405883789062, + "simulationSeconds": 0.0068950653076171875, + "tick": 63 + }, + { + "renderSeconds": 0.003126978874206543, + "simulationSeconds": 0.008730053901672363, + "tick": 64 + }, + { + "renderSeconds": 0.0027379989624023438, + "simulationSeconds": 0.006950020790100098, + "tick": 65 + }, + { + "renderSeconds": 0.002992987632751465, + "simulationSeconds": 0.0075740814208984375, + "tick": 66 + }, + { + "renderSeconds": 0.002879023551940918, + "simulationSeconds": 0.00699305534362793, + "tick": 67 + }, + { + "renderSeconds": 0.0030270814895629883, + "simulationSeconds": 0.007910966873168945, + "tick": 68 + }, + { + "renderSeconds": 0.0028069019317626953, + "simulationSeconds": 0.007112026214599609, + "tick": 69 + }, + { + "renderSeconds": 0.0028890371322631836, + "simulationSeconds": 0.006954073905944824, + "tick": 70 + }, + { + "renderSeconds": 0.0028089284896850586, + "simulationSeconds": 0.0060759782791137695, + "tick": 71 + }, + { + "renderSeconds": 0.0025240182876586914, + "simulationSeconds": 0.00672602653503418, + "tick": 72 + }, + { + "renderSeconds": 0.0027039051055908203, + "simulationSeconds": 0.006299018859863281, + "tick": 73 + }, + { + "renderSeconds": 0.0029200315475463867, + "simulationSeconds": 0.006437063217163086, + "tick": 74 + }, + { + "renderSeconds": 0.0027599334716796875, + "simulationSeconds": 0.006289005279541016, + "tick": 75 + }, + { + "renderSeconds": 0.0026940107345581055, + "simulationSeconds": 0.006460070610046387, + "tick": 76 + }, + { + "renderSeconds": 0.002547025680541992, + "simulationSeconds": 0.006425976753234863, + "tick": 77 + }, + { + "renderSeconds": 0.0027309656143188477, + "simulationSeconds": 0.006186008453369141, + "tick": 78 + }, + { + "renderSeconds": 0.0025980472564697266, + "simulationSeconds": 0.006483912467956543, + "tick": 79 + }, + { + "renderSeconds": 0.00227200984954834, + "simulationSeconds": 0.006841897964477539, + "tick": 80 + }, + { + "renderSeconds": 0.0027120113372802734, + "simulationSeconds": 0.006883025169372559, + "tick": 81 + }, + { + "renderSeconds": 0.0022770166397094727, + "simulationSeconds": 0.006657004356384277, + "tick": 82 + }, + { + "renderSeconds": 0.002812981605529785, + "simulationSeconds": 0.006338000297546387, + "tick": 83 + }, + { + "renderSeconds": 0.0029420852661132812, + "simulationSeconds": 0.00704801082611084, + "tick": 84 + }, + { + "renderSeconds": 0.0033249855041503906, + "simulationSeconds": 0.006187081336975098, + "tick": 85 + }, + { + "renderSeconds": 0.002619028091430664, + "simulationSeconds": 0.006682991981506348, + "tick": 86 + }, + { + "renderSeconds": 0.0031419992446899414, + "simulationSeconds": 0.006597995758056641, + "tick": 87 + }, + { + "renderSeconds": 0.003040909767150879, + "simulationSeconds": 0.007682919502258301, + "tick": 88 + }, + { + "renderSeconds": 0.0026869773864746094, + "simulationSeconds": 0.006639957427978516, + "tick": 89 + }, + { + "renderSeconds": 0.002442002296447754, + "simulationSeconds": 0.006569027900695801, + "tick": 90 + }, + { + "renderSeconds": 0.0021899938583374023, + "simulationSeconds": 0.00657498836517334, + "tick": 91 + }, + { + "renderSeconds": 0.0030739307403564453, + "simulationSeconds": 0.0064849853515625, + "tick": 92 + }, + { + "renderSeconds": 0.003369927406311035, + "simulationSeconds": 0.006185054779052734, + "tick": 93 + }, + { + "renderSeconds": 0.002810955047607422, + "simulationSeconds": 0.006157040596008301, + "tick": 94 + }, + { + "renderSeconds": 0.0025839805603027344, + "simulationSeconds": 0.006740093231201172, + "tick": 95 + }, + { + "renderSeconds": 0.0025680065155029297, + "simulationSeconds": 0.006448030471801758, + "tick": 96 + }, + { + "renderSeconds": 0.002707958221435547, + "simulationSeconds": 0.006391048431396484, + "tick": 97 + }, + { + "renderSeconds": 0.0024900436401367188, + "simulationSeconds": 0.006836056709289551, + "tick": 98 + }, + { + "renderSeconds": 0.002377033233642578, + "simulationSeconds": 0.006726980209350586, + "tick": 99 + }, + { + "renderSeconds": 0.0023299455642700195, + "simulationSeconds": 0.006829023361206055, + "tick": 100 + }, + { + "renderSeconds": 0.0024050474166870117, + "simulationSeconds": 0.0065419673919677734, + "tick": 101 + }, + { + "renderSeconds": 0.0030159950256347656, + "simulationSeconds": 0.006708979606628418, + "tick": 102 + }, + { + "renderSeconds": 0.0027360916137695312, + "simulationSeconds": 0.006200909614562988, + "tick": 103 + }, + { + "renderSeconds": 0.0024338960647583008, + "simulationSeconds": 0.006728053092956543, + "tick": 104 + }, + { + "renderSeconds": 0.0021729469299316406, + "simulationSeconds": 0.006844043731689453, + "tick": 105 + }, + { + "renderSeconds": 0.002431035041809082, + "simulationSeconds": 0.006646990776062012, + "tick": 106 + }, + { + "renderSeconds": 0.0027660131454467773, + "simulationSeconds": 0.006692051887512207, + "tick": 107 + }, + { + "renderSeconds": 0.00247800350189209, + "simulationSeconds": 0.006078958511352539, + "tick": 108 + }, + { + "renderSeconds": 0.0026750564575195312, + "simulationSeconds": 0.0065909624099731445, + "tick": 109 + }, + { + "renderSeconds": 0.0023920536041259766, + "simulationSeconds": 0.006902933120727539, + "tick": 110 + }, + { + "renderSeconds": 0.0022929906845092773, + "simulationSeconds": 0.0067729949951171875, + "tick": 111 + }, + { + "renderSeconds": 0.0031930208206176758, + "simulationSeconds": 0.006718993186950684, + "tick": 112 + }, + { + "renderSeconds": 0.0029720067977905273, + "simulationSeconds": 0.00659489631652832, + "tick": 113 + }, + { + "renderSeconds": 0.002429962158203125, + "simulationSeconds": 0.006281018257141113, + "tick": 114 + }, + { + "renderSeconds": 0.0027140378952026367, + "simulationSeconds": 0.006456971168518066, + "tick": 115 + }, + { + "renderSeconds": 0.003146052360534668, + "simulationSeconds": 0.007215976715087891, + "tick": 116 + }, + { + "renderSeconds": 0.0030649900436401367, + "simulationSeconds": 0.006647944450378418, + "tick": 117 + }, + { + "renderSeconds": 0.0027589797973632812, + "simulationSeconds": 0.0064470767974853516, + "tick": 118 + }, + { + "renderSeconds": 0.0025169849395751953, + "simulationSeconds": 0.006647944450378418, + "tick": 119 + }, + { + "renderSeconds": 0.0027920007705688477, + "simulationSeconds": 0.006646990776062012, + "tick": 120 + }, + { + "renderSeconds": 0.002908945083618164, + "simulationSeconds": 0.006916999816894531, + "tick": 121 + }, + { + "renderSeconds": 0.002727031707763672, + "simulationSeconds": 0.006350040435791016, + "tick": 122 + }, + { + "renderSeconds": 0.0026099681854248047, + "simulationSeconds": 0.0066040754318237305, + "tick": 123 + }, + { + "renderSeconds": 0.0025620460510253906, + "simulationSeconds": 0.006197929382324219, + "tick": 124 + }, + { + "renderSeconds": 0.0026689767837524414, + "simulationSeconds": 0.0064640045166015625, + "tick": 125 + }, + { + "renderSeconds": 0.002689957618713379, + "simulationSeconds": 0.006526947021484375, + "tick": 126 + }, + { + "renderSeconds": 0.002763032913208008, + "simulationSeconds": 0.006103992462158203, + "tick": 127 + }, + { + "renderSeconds": 0.0025260448455810547, + "simulationSeconds": 0.006442070007324219, + "tick": 128 + }, + { + "renderSeconds": 0.0028809309005737305, + "simulationSeconds": 0.006507992744445801, + "tick": 129 + }, + { + "renderSeconds": 0.002668023109436035, + "simulationSeconds": 0.0065729618072509766, + "tick": 130 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.006742954254150391, + "tick": 131 + }, + { + "renderSeconds": 0.0026170015335083008, + "simulationSeconds": 0.006615996360778809, + "tick": 132 + }, + { + "renderSeconds": 0.002568960189819336, + "simulationSeconds": 0.006569027900695801, + "tick": 133 + }, + { + "renderSeconds": 0.002907991409301758, + "simulationSeconds": 0.006738066673278809, + "tick": 134 + }, + { + "renderSeconds": 0.0028760433197021484, + "simulationSeconds": 0.007745027542114258, + "tick": 135 + }, + { + "renderSeconds": 0.0027980804443359375, + "simulationSeconds": 0.007176995277404785, + "tick": 136 + }, + { + "renderSeconds": 0.0031729936599731445, + "simulationSeconds": 0.007405996322631836, + "tick": 137 + }, + { + "renderSeconds": 0.0028159618377685547, + "simulationSeconds": 0.007211089134216309, + "tick": 138 + }, + { + "renderSeconds": 0.0029740333557128906, + "simulationSeconds": 0.006914973258972168, + "tick": 139 + }, + { + "renderSeconds": 0.0028378963470458984, + "simulationSeconds": 0.00683903694152832, + "tick": 140 + }, + { + "renderSeconds": 0.002781987190246582, + "simulationSeconds": 0.006075024604797363, + "tick": 141 + }, + { + "renderSeconds": 0.002659916877746582, + "simulationSeconds": 0.006465911865234375, + "tick": 142 + }, + { + "renderSeconds": 0.0026929378509521484, + "simulationSeconds": 0.006286978721618652, + "tick": 143 + }, + { + "renderSeconds": 0.002630949020385742, + "simulationSeconds": 0.00636601448059082, + "tick": 144 + }, + { + "renderSeconds": 0.0025490522384643555, + "simulationSeconds": 0.006227016448974609, + "tick": 145 + }, + { + "renderSeconds": 0.0027170181274414062, + "simulationSeconds": 0.006267070770263672, + "tick": 146 + }, + { + "renderSeconds": 0.0024580955505371094, + "simulationSeconds": 0.006560921669006348, + "tick": 147 + }, + { + "renderSeconds": 0.002456068992614746, + "simulationSeconds": 0.006297945976257324, + "tick": 148 + }, + { + "renderSeconds": 0.0022759437561035156, + "simulationSeconds": 0.006749987602233887, + "tick": 149 + }, + { + "renderSeconds": 0.0026710033416748047, + "simulationSeconds": 0.006351947784423828, + "tick": 150 + } + ], + "frames": 16, + "initialDisplaySeconds": 0, + "outlineBuildSeconds": 0, + "outlineBytes": 299904, + "outlineHits": 202, + "outlineMisses": 0, + "outlineReadbacks": 0, + "postActionSeconds": 0.0033794641494750977, + "preparationSeconds": 0.22675299644470215, + "reducedMotion": false, + "renderSeconds": 0.5273929834365845, + "repetition": 2, + "scenePreparationSeconds": 0, + "simulationSeconds": 0.974593997001648, + "snapshotBuildCount": 132, + "stage": 3, + "callbackMedianMS": 16.666666662786156, + "callbackP95MS": 22.410833335015923, + "callbackMaxMS": 201.51770833763294 + } +] \ No newline at end of file diff --git a/docs/review/reduced-motion-validation/serial-summary.json b/docs/review/reduced-motion-validation/serial-summary.json new file mode 100644 index 00000000..60ae90aa --- /dev/null +++ b/docs/review/reduced-motion-validation/serial-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 113, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792109583.222, + "passedTests" : 111, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792109348.361, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "24% of duration", + "text" : "1 longest test run with outlier durations exceeding 15.25s (three standard deviations)" + } + ], + "totalTestCount" : 111 +} diff --git a/docs/review/registered-shared-scene/BP004-registered-shared-scene-paired-integrity-0.png b/docs/review/registered-shared-scene/BP004-registered-shared-scene-paired-integrity-0.png new file mode 100644 index 00000000..44fd32fb Binary files /dev/null and b/docs/review/registered-shared-scene/BP004-registered-shared-scene-paired-integrity-0.png differ diff --git a/docs/review/registered-shared-scene/BP004-registered-shared-scene-paired-integrity-3.png b/docs/review/registered-shared-scene/BP004-registered-shared-scene-paired-integrity-3.png new file mode 100644 index 00000000..1f0bd82d Binary files /dev/null and b/docs/review/registered-shared-scene/BP004-registered-shared-scene-paired-integrity-3.png differ diff --git a/docs/review/registered-shared-scene/BP004-shared-scene-record.txt b/docs/review/registered-shared-scene/BP004-shared-scene-record.txt new file mode 100644 index 00000000..2e331002 --- /dev/null +++ b/docs/review/registered-shared-scene/BP004-shared-scene-record.txt @@ -0,0 +1,10 @@ +Actual GameScene/WorldRenderer/HUD; 704x326 logical viewport. Complete camera +candidates use the production integrity policy, with Reduced Motion settled +frames. Painted neutral player and constrained building are review assets. +Explicit composition placements; not a legal encounter or animation capture. +Registered variants use the BP007 45-degree rotation/half-height ground comparison, +unchanged zoom, upright artwork and documented constrained-building corner anchor. +Control variants retain the old stretched building for direct comparison (issue 128). +Geometry mapping and player locomotion remain unaccepted. Native frame scale +must be read from the exported pixel dimensions. Camera texture filtering is +nearest; other high-resolution composition sources use linear filtering. \ No newline at end of file diff --git a/docs/review/registered-shared-scene/README.md b/docs/review/registered-shared-scene/README.md new file mode 100644 index 00000000..e4376161 --- /dev/null +++ b/docs/review/registered-shared-scene/README.md @@ -0,0 +1,25 @@ +# Registered shared camera scene — BP-001/BP-004/BP-007 + +## Scope and authority + +Specification d859658 already requires shared projection, separate ground/upright transforms, source registration and native-scale comparisons. This work repairs a regression in the newer shared camera fixture relative to the earlier constrained-building study; it does not select a production projection or admit new artwork. Runtime baseline 0404685. Issues #128 (fixture mapping) and #129 (coordinate assertion precision) retain the defects. + +## Change + +The old control uses the 1254×1254 building source in a 190×217 box with a bottom-center anchor. Each new registered capture instead uses the documented uniform scale, square canvas, and source near-corner (653,1152), mapped to the existing 128×128 obstacle's minimum-x/minimum-y corner. It reuses the earlier 45-degree ground rotation with one-half vertical compression at unchanged zoom. Ground, field path and contact shadows share that transform; upright Player, complete Camera, building and two props preserve their form. HUD and view camera remain outside the world transform. Every capture restores the tree before another state is rendered. + +This is an explicitly placed, paused composition fixture. The camera's field origin/heading are fixture placements; it is not the authoritative seed-1 encounter and must not be cited as detection-registration proof. The separate camera-registration evidence supplies that proof. Control and registered images cover integrity 3, 2, 1 and 0 with existing/dark/paired contours. No collider, replay, controller, shipping art or projection changed. + +## Observed visual result + +The registered building and paving now share the projected direction, and the source is no longer stretched. Upright sources retain their shape. The complete municipal Camera remains a single device across damage states. Remaining shortcomings include harsh Player outline, repetitive plain paving, no continuous curb/road/rail composition, scale/framing review, and the previously documented small building-source/base mismatch. The scene is not final benchmark acceptance. Live traversal, encounters, occlusion, full animation and device performance remain required. + +## Research basis + +Apple's [About SpriteKit Coordinate Systems](https://developer.apple.com/documentation/spritekit/about-spritekit-coordinate-systems) and [SKNode](https://developer.apple.com/documentation/spritekit/sknode) describe parent-relative positions and inherited transforms. Accessed 2026-10-14. These support the implementation mechanism, not the aesthetic angle: the projection is the existing BP-007 authored comparison candidate. + +## Verification + +The initial run exposed exact comparison of Float-rounded SKNode positions with unrounded Double arithmetic. Its exported evidence is preserved under failed-precision; it is not a passing run. The corrected assertion retains exact equality after explicit conversion to the observed stored precision, alongside separate 0.0001 ground-coordinate checks. No authoritative geometry is altered to satisfy it. + +Final run: Test-SSRuntime-2026.10.14_23-15-22--0700.xcresult, 106 executions, no failures, one existing EnvironmentLibrary nonthrowing-try warning. Focused CameraPresentationTests: 3 passed, exit 0. No core implementation changes; no fresh full-core claim. Source and output resolution remain unchanged. diff --git a/docs/review/registered-shared-scene/comparison.png b/docs/review/registered-shared-scene/comparison.png new file mode 100644 index 00000000..c9428b52 Binary files /dev/null and b/docs/review/registered-shared-scene/comparison.png differ diff --git a/docs/review/registered-shared-scene/core-tests.log b/docs/review/registered-shared-scene/core-tests.log new file mode 100644 index 00000000..064d20a3 --- /dev/null +++ b/docs/review/registered-shared-scene/core-tests.log @@ -0,0 +1,25 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.86s) +Test Suite 'Selected tests' started at 2026-10-14 23:04:43.841. +Test Suite 'SSRuntimePackageTests.xctest' started at 2026-10-14 23:04:43.851. +Test Suite 'SSRuntimePackageTests.xctest' passed at 2026-10-14 23:04:43.851. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds +Test Suite 'Selected tests' passed at 2026-10-14 23:04:43.851. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.010) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite CameraPresentationTests started. +◇ Test cameraStatesFollowIntegrityWithoutMovingHousing() started. +✔ Test cameraStatesFollowIntegrityWithoutMovingHousing() passed after 0.004 seconds. +◇ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() started. +✔ Test cameraFieldOffStartsOnDestroyTickAndDoesNotWait() passed after 0.023 seconds. +◇ Test cameraHitDoesNotInterruptFieldOrRotateHousing() started. +✔ Test cameraHitDoesNotInterruptFieldOrRotateHousing() passed after 0.001 seconds. +✔ Suite CameraPresentationTests passed after 0.030 seconds. +✔ Test run with 3 tests in 1 suite passed after 0.040 seconds. diff --git a/docs/review/registered-shared-scene/failed-precision-result.json b/docs/review/registered-shared-scene/failed-precision-result.json new file mode 100644 index 00000000..898de8eb --- /dev/null +++ b/docs/review/registered-shared-scene/failed-precision-result.json @@ -0,0 +1,720 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~xlDd4WgkXMnQWGpEgZxlUqxBzQGlNfVQ_t4EsyskJLDG_hXcgOvAkCTnGPfoIRzjAx_nGPZxvyXn81ferrnyOA==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "testFailureSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "TestFailureIssueSummary", + "_supertype": { + "_name": "IssueSummary" + } + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/AppTests/BenchmarkCaptureTests.swift#EndingLineNumber=403&StartingLineNumber=403" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Uncategorized" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "XCTAssertEqual failed: (\"(628.21826171875, 625.712158203125)\") is not equal to (\"(628.2182540694798, 625.7121574150699)\")" + }, + "testCaseName": { + "_type": { + "_name": "String" + }, + "_value": "BenchmarkCaptureTests.testCaptureCompleteCameraCandidatesInSharedScene()" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~xNcW5IU9DbfKPLZBXPmOrcRNeQ1D67hAYi3hiTH2IHYPqwBwD-E1xY-ILRn34g98sN501TI8stF12a-YTo96lA==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "106" + }, + "testsFailedCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "failed" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~eAJi1fgpSgwoG0rpAaiKWXOIKE6Gsd83Pc79rev0Psk5PEKvQY1QP0A1u_UiySokijPWyca7L2uzF579_m_hig==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~QHd1-_XqF_H5uIufnLxuJFUq62GLxPX9Hi45IvUCsWfhFHqqHBBiT-nqFLIRQDC_XvoDBW29ycuZgn6aC7nvaw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T23:07:25.030-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T23:04:22.592-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "testFailureSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "TestFailureIssueSummary", + "_supertype": { + "_name": "IssueSummary" + } + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/AppTests/BenchmarkCaptureTests.swift#EndingLineNumber=403&StartingLineNumber=403" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Uncategorized" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "XCTAssertEqual failed: (\"(628.21826171875, 625.712158203125)\") is not equal to (\"(628.2182540694798, 625.7121574150699)\")" + }, + "testCaseName": { + "_type": { + "_name": "String" + }, + "_value": "BenchmarkCaptureTests.testCaptureCompleteCameraCandidatesInSharedScene()" + } + } + ] + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~77r2toWq06rqCi6RLXJQkATMKIwF1CUBwFTShpsPSWM-BZLobsT9CR1EPOA9R6HqpnGbBw8YZCsYZ8hFq6P6TQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "106" + }, + "testsFailedCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/registered-shared-scene/result.json b/docs/review/registered-shared-scene/result.json new file mode 100644 index 00000000..0d61f25b --- /dev/null +++ b/docs/review/registered-shared-scene/result.json @@ -0,0 +1,608 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~d6oYsz5-L89ys9Cf889-Gi_XlPgXysRkRDFBRnOY8DFL69tD76OJbjhNb6J3iUWCHE8Kir0JlcUbWLucL1l0ng==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~wdtrtRm-HZYTXAU_nLEXYpi6-blIHTFoaVn8tk2zsAWuScpxMCVFHHxzJWAKh56NIi8mLUh_8ZLcev4mx85ZgQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "106" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~EyYSFP9RoZ8gjAyDDQwBxXJpuC5C986EKSQLzmdeG399rQoeOWXf7LW36noVuB1Z9kgcEf6Y_4zuC2HvIy5iDA==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~tnIsTd0EOobfdr58fBLL3_uj-iOVgYQTtxkIxxHLo_rnsYgGnHlas2fdGib-hv0hUCMYEhMtndPyfzR5RA5JTw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T23:18:27.774-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T23:15:22.125-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~2zgryxei1OL_tnmSgMt469y5BLi47_4ZDS9DITpNtvAvXm3g-G5svYjSjLjTkkvr-ZdRRQJDPeX3yFV2WJG8bg==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "106" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/resolution-budget/budget.json b/docs/review/resolution-budget/budget.json new file mode 100644 index 00000000..e7010559 --- /dev/null +++ b/docs/review/resolution-budget/budget.json @@ -0,0 +1,606 @@ +{ + "runtime_base": "14abe4a", + "spec_pin": "00ce027209e6c233bcdd35295f35f0b9bfb9bbe5", + "output_pixels": [ + 2112, + 978 + ], + "filter": "linear", + "scope": "test-only upright assets; excludes paving and intermediate targets; alpha bounds are not anatomy or collision", + "assets": [ + { + "asset": "player-south", + "sha256": "0f2af941bdc5eed06239a3d7e10ac823c0b6878734347bebdbfb43120a63fd4c", + "source_pixels": [ + 256, + 256 + ], + "alpha_bounds": [ + 72, + 16, + 184, + 224 + ], + "draw_points": [ + 64, + 64 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 192, + 192 + ], + "occupied_output_pixels": [ + 84.0, + 156.0 + ], + "source_pixels_per_output_pixel": [ + 1.3333333333333333, + 1.3333333333333333 + ], + "occupied_height_fraction": 0.15950920245398773, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 271.5290039756343, + 271.5290039756343 + ], + "occupied_output_pixels": [ + 118.79393923934, + 220.61731573020285 + ], + "source_pixels_per_output_pixel": [ + 0.9428090415820632, + 0.9428090415820632 + ], + "occupied_height_fraction": 0.22558007743374525, + "magnified": true + } + ] + }, + { + "asset": "player-north", + "sha256": "4775a0d6a7a19f6761a3d499e568197867e80f9fb05628527d2c993fc2ab6b66", + "source_pixels": [ + 256, + 256 + ], + "alpha_bounds": [ + 72, + 16, + 184, + 224 + ], + "draw_points": [ + 64, + 64 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 192, + 192 + ], + "occupied_output_pixels": [ + 84.0, + 156.0 + ], + "source_pixels_per_output_pixel": [ + 1.3333333333333333, + 1.3333333333333333 + ], + "occupied_height_fraction": 0.15950920245398773, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 271.5290039756343, + 271.5290039756343 + ], + "occupied_output_pixels": [ + 118.79393923934, + 220.61731573020285 + ], + "source_pixels_per_output_pixel": [ + 0.9428090415820632, + 0.9428090415820632 + ], + "occupied_height_fraction": 0.22558007743374525, + "magnified": true + } + ] + }, + { + "asset": "player-east", + "sha256": "adbae2a5d422cd26eec9e25ba7603a4b899bb7207ec5175135345a6d2368ad19", + "source_pixels": [ + 256, + 256 + ], + "alpha_bounds": [ + 94, + 16, + 162, + 224 + ], + "draw_points": [ + 64, + 64 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 192, + 192 + ], + "occupied_output_pixels": [ + 51.0, + 156.0 + ], + "source_pixels_per_output_pixel": [ + 1.3333333333333333, + 1.3333333333333333 + ], + "occupied_height_fraction": 0.15950920245398773, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 271.5290039756343, + 271.5290039756343 + ], + "occupied_output_pixels": [ + 72.12489168102786, + 220.61731573020285 + ], + "source_pixels_per_output_pixel": [ + 0.9428090415820632, + 0.9428090415820632 + ], + "occupied_height_fraction": 0.22558007743374525, + "magnified": true + } + ] + }, + { + "asset": "player-west", + "sha256": "c67dde4392e4d019eab4f9934015a5c0f45d4bc202c4efaf8638d1a10b55083f", + "source_pixels": [ + 256, + 256 + ], + "alpha_bounds": [ + 96, + 16, + 160, + 224 + ], + "draw_points": [ + 64, + 64 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 192, + 192 + ], + "occupied_output_pixels": [ + 48.0, + 156.0 + ], + "source_pixels_per_output_pixel": [ + 1.3333333333333333, + 1.3333333333333333 + ], + "occupied_height_fraction": 0.15950920245398773, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 271.5290039756343, + 271.5290039756343 + ], + "occupied_output_pixels": [ + 67.88225099390857, + 220.61731573020285 + ], + "source_pixels_per_output_pixel": [ + 0.9428090415820632, + 0.9428090415820632 + ], + "occupied_height_fraction": 0.22558007743374525, + "magnified": true + } + ] + }, + { + "asset": "camera-state-intact", + "sha256": "aa437f0eac9593fab43e0f2b7317a856fd99c1294821e06f1c95dda09dbedb1f", + "source_pixels": [ + 256, + 384 + ], + "alpha_bounds": [ + 86, + 39, + 255, + 352 + ], + "draw_points": [ + 64, + 96 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 192, + 288 + ], + "occupied_output_pixels": [ + 126.75, + 234.75 + ], + "source_pixels_per_output_pixel": [ + 1.3333333333333333, + 1.3333333333333333 + ], + "occupied_height_fraction": 0.24003067484662577, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 271.5290039756343, + 407.2935059634514 + ], + "occupied_output_pixels": [ + 179.25156903078982, + 331.98663376708413 + ], + "source_pixels_per_output_pixel": [ + 0.9428090415820632, + 0.9428090415820632 + ], + "occupied_height_fraction": 0.33945463575366475, + "magnified": true + } + ] + }, + { + "asset": "camera-state-damaged", + "sha256": "dfc4f40eec4303c1836ffce056ab8aaa979bf1d385b65816a7087e63e149ad96", + "source_pixels": [ + 256, + 384 + ], + "alpha_bounds": [ + 86, + 39, + 255, + 352 + ], + "draw_points": [ + 64, + 96 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 192, + 288 + ], + "occupied_output_pixels": [ + 126.75, + 234.75 + ], + "source_pixels_per_output_pixel": [ + 1.3333333333333333, + 1.3333333333333333 + ], + "occupied_height_fraction": 0.24003067484662577, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 271.5290039756343, + 407.2935059634514 + ], + "occupied_output_pixels": [ + 179.25156903078982, + 331.98663376708413 + ], + "source_pixels_per_output_pixel": [ + 0.9428090415820632, + 0.9428090415820632 + ], + "occupied_height_fraction": 0.33945463575366475, + "magnified": true + } + ] + }, + { + "asset": "camera-state-critical", + "sha256": "b24234d6a58659700539415e5b0e4b930a928ff6f491e082110d19d1ca96a962", + "source_pixels": [ + 256, + 384 + ], + "alpha_bounds": [ + 87, + 39, + 255, + 352 + ], + "draw_points": [ + 64, + 96 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 192, + 288 + ], + "occupied_output_pixels": [ + 126.0, + 234.75 + ], + "source_pixels_per_output_pixel": [ + 1.3333333333333333, + 1.3333333333333333 + ], + "occupied_height_fraction": 0.24003067484662577, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 271.5290039756343, + 407.2935059634514 + ], + "occupied_output_pixels": [ + 178.19090885901, + 331.98663376708413 + ], + "source_pixels_per_output_pixel": [ + 0.9428090415820632, + 0.9428090415820632 + ], + "occupied_height_fraction": 0.33945463575366475, + "magnified": true + } + ] + }, + { + "asset": "camera-state-destroyed", + "sha256": "b9e56b70624e7714f11c417b453d51fe4f57bce073e920b5392ab879999d9af9", + "source_pixels": [ + 256, + 384 + ], + "alpha_bounds": [ + 86, + 39, + 255, + 352 + ], + "draw_points": [ + 64, + 96 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 192, + 288 + ], + "occupied_output_pixels": [ + 126.75, + 234.75 + ], + "source_pixels_per_output_pixel": [ + 1.3333333333333333, + 1.3333333333333333 + ], + "occupied_height_fraction": 0.24003067484662577, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 271.5290039756343, + 407.2935059634514 + ], + "occupied_output_pixels": [ + 179.25156903078982, + 331.98663376708413 + ], + "source_pixels_per_output_pixel": [ + 0.9428090415820632, + 0.9428090415820632 + ], + "occupied_height_fraction": 0.33945463575366475, + "magnified": true + } + ] + }, + { + "asset": "building-constrained", + "sha256": "086fa7c6f30ccb47c5df92f50e83a645fc0c4169935df39f5e71cdfc1499a22c", + "source_pixels": [ + 1254, + 1254 + ], + "alpha_bounds": [ + 153, + 84, + 1109, + 1152 + ], + "draw_points": [ + 243.03880869767693, + 243.03880869767693 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 729.1164260930308, + 729.1164260930308 + ], + "occupied_output_pixels": [ + 555.8495241985147, + 620.9699705481314 + ], + "source_pixels_per_output_pixel": [ + 1.7198899313235296, + 1.7198899313235296 + ], + "occupied_height_fraction": 0.6349386201923634, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 1031.1263383297646, + 1031.1263383297646 + ], + "occupied_output_pixels": [ + 786.0899357601714, + 878.184154175589 + ], + "source_pixels_per_output_pixel": [ + 1.216145833333333, + 1.216145833333333 + ], + "occupied_height_fraction": 0.8979388079505, + "magnified": false + } + ] + }, + { + "asset": "newsbox", + "sha256": "a05de0ea875e599ebbf6d2ca29a657d17b01795e6670ab1594896827d8c6f0da", + "source_pixels": [ + 378, + 768 + ], + "alpha_bounds": [ + 0, + 0, + 378, + 768 + ], + "draw_points": [ + 20, + 40 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 60, + 120 + ], + "occupied_output_pixels": [ + 60.0, + 120.0 + ], + "source_pixels_per_output_pixel": [ + 6.3, + 6.4 + ], + "occupied_height_fraction": 0.12269938650306748, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 84.8528137423857, + 169.7056274847714 + ], + "occupied_output_pixels": [ + 84.8528137423857, + 169.7056274847714 + ], + "source_pixels_per_output_pixel": [ + 4.4547727214752495, + 4.525483399593904 + ], + "occupied_height_fraction": 0.17352313648749634, + "magnified": false + } + ] + }, + { + "asset": "tree", + "sha256": "f002a45f3d30f669d410f6fbcc1785284fce22368b834dc261821e31ad4426b6", + "source_pixels": [ + 454, + 768 + ], + "alpha_bounds": [ + 0, + 0, + 454, + 768 + ], + "draw_points": [ + 50, + 85 + ], + "views": [ + { + "zoom": 1, + "canvas_output_pixels": [ + 150, + 255 + ], + "occupied_output_pixels": [ + 150.0, + 255.0 + ], + "source_pixels_per_output_pixel": [ + 3.026666666666667, + 3.011764705882353 + ], + "occupied_height_fraction": 0.2607361963190184, + "magnified": false + }, + { + "zoom": 1.4142135623730951, + "canvas_output_pixels": [ + 212.13203435596427, + 360.62445840513925 + ], + "occupied_output_pixels": [ + 212.13203435596427, + 360.62445840513925 + ], + "source_pixels_per_output_pixel": [ + 2.1401765243912836, + 2.1296392468677197 + ], + "occupied_height_fraction": 0.3687366650359297, + "magnified": false + } + ] + } + ] +} diff --git a/docs/review/resolution-budget/measure.py b/docs/review/resolution-budget/measure.py new file mode 100644 index 00000000..bd2e4a73 --- /dev/null +++ b/docs/review/resolution-budget/measure.py @@ -0,0 +1,16 @@ +"""BP-007 source sampling audit. Run from repository root; no images modified.""" +from pathlib import Path +from PIL import Image +import hashlib,json,math +root=Path('AppTests/BenchmarkAssets') +items={'player-south':(64,64),'player-north':(64,64),'player-east':(64,64),'player-west':(64,64),'camera-state-intact':(64,96),'camera-state-damaged':(64,96),'camera-state-critical':(64,96),'camera-state-destroyed':(64,96),'building-constrained':(1254*128*math.sqrt(2)/934,)*2,'newsbox':(20,40),'tree':(50,85)} +rows=[] +for name,draw in items.items(): + path=root/(name+'.png'); im=Image.open(path).convert('RGBA'); box=im.getchannel('A').getbbox() + row={'asset':name,'sha256':hashlib.sha256(path.read_bytes()).hexdigest(),'source_pixels':list(im.size),'alpha_bounds':box,'draw_points':draw,'views':[]} + for zoom in [1,math.sqrt(2)]: + out=[v*3*zoom for v in draw]; ratios=[im.size[i]/out[i] for i in range(2)] + occupied=[(box[i+2]-box[i])*out[i]/im.size[i] for i in range(2)] + row['views'].append({'zoom':zoom,'canvas_output_pixels':out,'occupied_output_pixels':occupied,'source_pixels_per_output_pixel':ratios,'occupied_height_fraction':occupied[1]/978,'magnified':min(ratios)<1}) + rows.append(row) +print(json.dumps({'runtime_base':'14abe4a','spec_pin':'00ce027209e6c233bcdd35295f35f0b9bfb9bbe5','output_pixels':[2112,978],'filter':'linear','scope':'test-only upright assets; excludes paving and intermediate targets; alpha bounds are not anatomy or collision','assets':rows},indent=2)) diff --git a/docs/review/resolution-budget/review.md b/docs/review/resolution-budget/review.md new file mode 100644 index 00000000..f51d1e12 --- /dev/null +++ b/docs/review/resolution-budget/review.md @@ -0,0 +1,35 @@ +# BP-007 measured resolution budget + +OBSERVED: source files measured at runtime 14abe4a against spec pin 00ce027209e6c233bcdd35295f35f0b9bfb9bbe5. Measurements use the existing 704×326-point / 2112×978-pixel test fixture and its zoom-1 and √2 upright-art transforms. These are calculated sampling sizes, not a new performance capture. + +| Asset | Source pixels | Source/output density, zoom 1 | Density, √2 zoom | Occupied height, zoom 1 → √2 | +|---|---:|---:|---:|---:| +| player-south | 256×256 | 1.33 | 0.94 | 16.0% → 22.6% | +| player-north | 256×256 | 1.33 | 0.94 | 16.0% → 22.6% | +| player-east | 256×256 | 1.33 | 0.94 | 16.0% → 22.6% | +| player-west | 256×256 | 1.33 | 0.94 | 16.0% → 22.6% | +| camera-state-intact | 256×384 | 1.33 | 0.94 | 24.0% → 33.9% | +| camera-state-damaged | 256×384 | 1.33 | 0.94 | 24.0% → 33.9% | +| camera-state-critical | 256×384 | 1.33 | 0.94 | 24.0% → 33.9% | +| camera-state-destroyed | 256×384 | 1.33 | 0.94 | 24.0% → 33.9% | +| building-constrained | 1254×1254 | 1.72 | 1.22 | 63.5% → 89.8% | +| newsbox | 378×768 | 6.30 | 4.45 | 12.3% → 17.4% | +| tree | 454×768 | 3.01 | 2.13 | 26.1% → 36.9% | + +Density below 1 means source texels are magnified. Alpha bounds include any nonzero alpha; they are not anatomical measurements or collision footprints. Canvas padding is accounted for in occupied height. + +## Production direction + +- PROPOSED: retain a high-detail character/camera master and export only after choosing the framing. At √2 zoom and this 3× capture scale, the no-magnification canvas minimum is 272×272 for the player and 272×408 for the camera. These mathematical minima are not an accepted delivery size or quality threshold. Higher headroom may be appropriate for zoom/device coverage, subject to profiling. +- OBSERVED: the constrained building still has about 1.22 source pixels per output pixel at √2. The newsbox and tree have substantially more. Larger files alone will not repair their material/scale mismatch with the approved reference. +- OBSERVED: the closer candidate consumes about 90% of viewport height for the building alpha bounds before accounting for its position. Earlier full-render captures show cropping. A closer view needs composition and encounter visibility work; it cannot be selected solely because the player looks larger. +- PROPOSED: prioritize coherent high-detail character frames and camera state exports; keep current high-resolution building/prop sources while correcting appearance and placement. Do not upscale the 256-pixel character and describe it as newly authored detail. +- NOT_COMPUTABLE: a final atlas residency/frame-time budget from these PNG dimensions alone. Compression, atlas packing, live clip count, mipmaps and intermediate render targets must be measured on the admitted renderer. Doubling both texture axes gives four times the texel count before those factors. + +## Reproduction and limits + +Run `python3 docs/review/resolution-budget/measure.py` from the runtime root (Pillow required). The script hashes each input and records canvas, alpha bounds, draw size, zoom and derived output density. It does not modify images or production code. Paving, actual device rendering, intermediate targets, anatomical landmarks and visual-detail quality are outside this calculation. + +BP-007 already requires these measurements and native-size comparisons; no new gameplay or resolution acceptance threshold is introduced. BP-003/BP-004 animation, BP-005 geometry, BP-009 occlusion and device gates remain open. + +Mechanism references: [Apple sprite size](https://developer.apple.com/documentation/spritekit/skspritenode/init(texture:size:)), [view backing scale](https://developer.apple.com/documentation/uikit/uiview/contentscalefactor), and [texture filtering](https://developer.apple.com/documentation/spritekit/sktexturefilteringmode), researched 2026-10-14. These explain sampling; they do not prescribe an SS artistic resolution. diff --git a/docs/review/revised-benchmark/geometry-704.png b/docs/review/revised-benchmark/geometry-704.png new file mode 100644 index 00000000..56012380 Binary files /dev/null and b/docs/review/revised-benchmark/geometry-704.png differ diff --git a/docs/review/revised-benchmark/review.md b/docs/review/revised-benchmark/review.md new file mode 100644 index 00000000..06694de2 --- /dev/null +++ b/docs/review/revised-benchmark/review.md @@ -0,0 +1,31 @@ +# Revised real-renderer composition — review candidate + +Captured 2026-10-14 using GameScene, WorldRenderer, SpriteKit and the actual HUD, in a paused 704 × 326 logical viewport. The simulator capture is 2112 × 978 pixels. This is an isolated presentation fixture, not a legal gameplay encounter or a completed benchmark. + +![Scene](scene-704.png) + +## What is present + +- Registered hooded player candidate on a 64 × 64 logical canvas. +- One complete municipal camera on a 64 × 96 logical canvas; no duplicate housing sprite. +- Repaired Victorian building at 190 × 217 logical units, with explicit placement instead of stretching to the collision box. +- New blue newspaper box (20 × 40) and autumn street tree (50 × 85), with deterministic alpha cleanup. +- Existing plaza paving, runtime detection field and HUD. Existing fog is omitted from this review fixture because its source needs repair. + +Candidate textures live in the test bundle. DEBUG-only fixture entry points install them into the real renderer; they are not admitted as production art. Source/export records are in sources.json. The earlier scratch preparation script is intermediate and does not reproduce all final exports; the final records describe the delivered assets. + +## Still open + +The building's visible base does not match the unchanged authoritative AABB (magenta below). Perspective, ground layout, relative scale, contact shadows and the player's bright outline still need reconciliation against the approved street reference. Neutral player/camera images do not validate animation, turning, camera-state clips, occlusion, traversal or hit detection. Dense encounter, performance and physical-device validation remain pending. No physical-device testing was performed. + +![Unchanged collision footprint](geometry-704.png) + +## Validation + +- 760 core tests across 107 suites passed (work/revised-benchmark-core.log). +- 82 iOS Swift Testing tests across 13 suites passed. +- Both XCTest benchmark captures passed, including assertions for one camera sprite, no legacy housing, and the benchmark building. +- Xcode result: Test-SSRuntime-2026.10.14_09-21-07--0700.xcresult, iPhone 17 Pro simulator CACB3927-A76E-43A5-9ACA-C389EB38C0C3. +- These are local results, not a claim that CI has passed this revision. + +Implementation is based on runtime 28e0fab and specs 790676242b0761e6d4c9a3f78af6768fc0a41693. The commit containing this document records the fixture changes. Original capture attachments and their manifest remain in capture-v3/. diff --git a/docs/review/revised-benchmark/scene-704.png b/docs/review/revised-benchmark/scene-704.png new file mode 100644 index 00000000..6bf17fb1 Binary files /dev/null and b/docs/review/revised-benchmark/scene-704.png differ diff --git a/docs/review/revised-benchmark/sources.json b/docs/review/revised-benchmark/sources.json new file mode 100644 index 00000000..f5cad74e --- /dev/null +++ b/docs/review/revised-benchmark/sources.json @@ -0,0 +1,134 @@ +[ + { + "source": "outputs/SS-building-repair-study.png", + "sourceHash": "380a47326c758b3cc86389106a9f704b7e8a86584e0d1934b7979ffbe0dbd859", + "sourceCrop": null, + "alphaCrop": [ + 551, + 34, + 1258, + 841 + ], + "export": "building.png", + "pixels": [ + 673, + 768 + ], + "sha256": "6f0d74055f2f3b785c7b74af35f37198a3df08851bf0e156f579339d3d3e6780" + }, + { + "source": "outputs/SS-municipal-camera-sheet-v2.png", + "sourceHash": "257f0fa5cb35c72245cb0066c043691df2b2ce659efa06050903e00d12039fac", + "sourceCrop": [ + 0, + 0, + 512, + 512 + ], + "alphaCrop": [ + 132, + 33, + 371, + 473 + ], + "export": "camera.png", + "pixels": [ + 256, + 384 + ], + "sha256": "502844058e956dec1c2d8b6cf4959202e1eee963a44e8136b7661807995cd4e8", + "registration": { + "canvasPixels": [ + 256, + 384 + ], + "bodyPixels": [ + 170, + 312 + ], + "pastePixels": [ + 84, + 40 + ], + "logicalCanvas": [ + 64, + 96 + ], + "logicalAnchor": [ + 32, + 88 + ], + "note": "Pole ground center visually registered; camera body preserved as single sprite." + } + }, + { + "source": "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/outputs/SS-player-registered-candidates/south-registered-256.png", + "export": "player-south.png", + "sha256": "0f2af941bdc5eed06239a3d7e10ac823c0b6878734347bebdbfb43120a63fd4c", + "pixels": [ + 256, + 256 + ] + }, + { + "source": "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/outputs/SS-player-registered-candidates/north-registered-256.png", + "export": "player-north.png", + "sha256": "4775a0d6a7a19f6761a3d499e568197867e80f9fb05628527d2c993fc2ab6b66", + "pixels": [ + 256, + 256 + ] + }, + { + "source": "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/outputs/SS-player-registered-candidates/east-registered-256.png", + "export": "player-east.png", + "sha256": "adbae2a5d422cd26eec9e25ba7603a4b899bb7207ec5175135345a6d2368ad19", + "pixels": [ + 256, + 256 + ] + }, + { + "source": "/Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/outputs/SS-player-registered-candidates/west-registered-256.png", + "export": "player-west.png", + "sha256": "c67dde4392e4d019eab4f9934015a5c0f45d4bc202c4efaf8638d1a10b55083f", + "pixels": [ + 256, + 256 + ] + }, + { + "source": "/Users/appliedalchemylabs/.codex/generated_images/01a137ae-17b7-7103-897c-17913923752e/exec-35cb5d32-a337-47fb-9a02-d7eae1a52fb7.png", + "sourceHash": "5f37e00ce1018445cc5c792db7d9aed11b325676f8d7a88450452bc615a81fd4", + "alphaCrop": [ + 134, + 61, + 862, + 1541 + ], + "alphaRemap": "0 through 32;255 from240; linear between", + "export": "newsbox.png", + "pixels": [ + 378, + 768 + ], + "sha256": "a05de0ea875e599ebbf6d2ca29a657d17b01795e6670ab1594896827d8c6f0da" + }, + { + "source": "/Users/appliedalchemylabs/.codex/generated_images/01a137ae-17b7-7103-897c-17913923752e/exec-ab2d56a0-4aba-4f30-9c70-a22001b17692.png", + "sourceHash": "d35318688d047141ab494a226f6bd85393f6096565799870f203f964bd0f4fa0", + "alphaCrop": [ + 101, + 59, + 935, + 1470 + ], + "alphaRemap": "0 through 32;255 from240; linear between", + "export": "tree.png", + "pixels": [ + 454, + 768 + ], + "sha256": "f002a45f3d30f669d410f6fbcc1785284fce22368b834dc261821e31ad4426b6" + } +] diff --git a/docs/review/revised-shared-scene/README.md b/docs/review/revised-shared-scene/README.md new file mode 100644 index 00000000..b3d71e37 --- /dev/null +++ b/docs/review/revised-shared-scene/README.md @@ -0,0 +1,9 @@ +# Revised shared composition — review only + +The clean simulator run passed 114 named tests / 116 executions, zero failures or skips. The scene combines the lower-recovery player, municipal camera, building and props in the real renderer with HUD. Four static poses are exported at 704×326, 50% size and grayscale. The added player outline is hidden in this review fixture only. + +Visual inspection of the four-pose plate confirms the added bright silhouette is absent. This static plate cannot establish contact, seam or animation smoothness. Compared with the approved benchmark, ground repetition, object scale relationships, street composition and surveillance-field presentation still need work. The rotated-ground facing mapping remains unresolved for live travel. + +Separate normal and quarter-speed player recordings are in ../SS-cadence-recorded-review/. Those recordings are earlier isolated-scene evidence, not animation of this shared scene. Recorded performance remains unaccepted (candidate Reduced Motion p95 reached 66.48 ms). No production asset admission or device approval is implied. + +Next: review lower-recovery motion at both speeds, isolate timing stalls, reconcile projected facing/travel and then capture animated shared traversal and occlusion. Keep the before-device visual checkpoint. diff --git a/docs/review/revised-shared-scene/animated-art-app-summary.json b/docs/review/revised-shared-scene/animated-art-app-summary.json new file mode 100644 index 00000000..e7423778 --- /dev/null +++ b/docs/review/revised-shared-scene/animated-art-app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 117, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792116664.574, + "passedTests" : 115, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792116302.557, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "41% of duration", + "text" : "2 longest test runs with outlier durations exceeding 31.65s (three standard deviations)" + } + ], + "totalTestCount" : 115 +} diff --git a/docs/review/revised-shared-scene/animated-art-integration.json b/docs/review/revised-shared-scene/animated-art-integration.json new file mode 100644 index 00000000..ee64fcd9 --- /dev/null +++ b/docs/review/revised-shared-scene/animated-art-integration.json @@ -0,0 +1,11 @@ +{ + "status": "APP_SUITE_PASSED", + "resultBundle": "Test-SSRuntime-2026.10.15_19-05-02--0700.xcresult", + "purpose": "Retain selected player clip when shared environment review art is installed", + "productionAdmitted": false, + "sourceSHA256": { + "App/BenchmarkReviewArt.swift": "221b95be3b8f59d6205b8da611835de1a6926baa387d7d9b09a40c01bdbfdf9f", + "App/WorldRenderer.swift": "2cbf689d896eef72c760fbce36e7e318ef4a1edb45de8e7e78937b3e7619a49a", + "AppTests/DisplayedPlaybackTests.swift": "63f5548ebb2f5aaafd41d3faa213d4a268bfcb52e5fb0131020cb096fa548c2f" + } +} diff --git a/docs/review/revised-shared-scene/animated-art-integration.md b/docs/review/revised-shared-scene/animated-art-integration.md new file mode 100644 index 00000000..e23ce6b2 --- /dev/null +++ b/docs/review/revised-shared-scene/animated-art-integration.md @@ -0,0 +1,7 @@ +# Shared animated-art integration + +Installing environment review art previously forced a static player texture and removed actions on every render. BenchmarkReviewArt now has an explicit playerPresentation mode: staticComposition remains the default; selectedClip leaves normal clip selection, occurrence facing, action timing and fallback intact. + +The regression compares shared-art and normal renderers across movement, idle, dodge, event-owned hurt and an unsupported direction, with repeated render calls in both motion modes. It also verifies the static control. The new test passed; the fresh suite passed 115 named tests / 117 executions, with no failures. Specs validation passed. + +This enables the next live shared traversal but is not that traversal. No production art admission, full-facing acceptance or performance acceptance is claimed. diff --git a/docs/review/revised-shared-scene/app-summary.json b/docs/review/revised-shared-scene/app-summary.json new file mode 100644 index 00000000..5ee1bc2d --- /dev/null +++ b/docs/review/revised-shared-scene/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 116, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792115193.071, + "passedTests" : 114, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792114890.651, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "52% of duration", + "text" : "3 longest test runs with outlier durations exceeding 27.58s (three standard deviations)" + } + ], + "totalTestCount" : 114 +} diff --git a/docs/review/revised-shared-scene/projection-app-summary.json b/docs/review/revised-shared-scene/projection-app-summary.json new file mode 100644 index 00000000..624f7102 --- /dev/null +++ b/docs/review/revised-shared-scene/projection-app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 116, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792116054.924, + "passedTests" : 114, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792115743.654, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "51% of duration", + "text" : "3 longest test runs with outlier durations exceeding 28.14s (three standard deviations)" + } + ], + "totalTestCount" : 114 +} diff --git a/docs/review/revised-shared-scene/projection-audit.json b/docs/review/revised-shared-scene/projection-audit.json new file mode 100644 index 00000000..9ebfef9a --- /dev/null +++ b/docs/review/revised-shared-scene/projection-audit.json @@ -0,0 +1,118 @@ +{ + "status": "OFFLINE_COMPARISON_GEOMETRY_NOT_RUNTIME_ACCEPTANCE", + "coordinateConvention": "SpriteKit scene: right +x, up +y", + "transform": "rotate +45 degrees then scale y by 0.5; translation omitted for vectors", + "fixtureSourceSHA256": "23afac22019d05c0e64250e20844fde771b1ac85e22150fe53db9e92f8da3d4b", + "directions": [ + { + "worldDirection": "E", + "worldUnitVector": [ + 1.0, + 0.0 + ], + "projectedVector": [ + 0.7071067811865476, + 0.3535533905932738 + ], + "screenAngleDegrees": 26.56505117707799 + }, + { + "worldDirection": "NE", + "worldUnitVector": [ + 0.7071067811865475, + 0.7071067811865475 + ], + "projectedVector": [ + 0.0, + 0.5 + ], + "screenAngleDegrees": 90.0 + }, + { + "worldDirection": "N", + "worldUnitVector": [ + 0.0, + 1.0 + ], + "projectedVector": [ + -0.7071067811865476, + 0.3535533905932738 + ], + "screenAngleDegrees": 153.434948822922 + }, + { + "worldDirection": "NW", + "worldUnitVector": [ + -0.7071067811865475, + 0.7071067811865475 + ], + "projectedVector": [ + -1.0, + 0.0 + ], + "screenAngleDegrees": 180.0 + }, + { + "worldDirection": "W", + "worldUnitVector": [ + -1.0, + 0.0 + ], + "projectedVector": [ + -0.7071067811865476, + -0.3535533905932738 + ], + "screenAngleDegrees": -153.434948822922 + }, + { + "worldDirection": "SW", + "worldUnitVector": [ + -0.7071067811865475, + -0.7071067811865475 + ], + "projectedVector": [ + 0.0, + -0.5 + ], + "screenAngleDegrees": -90.0 + }, + { + "worldDirection": "S", + "worldUnitVector": [ + 0.0, + -1.0 + ], + "projectedVector": [ + 0.7071067811865476, + -0.3535533905932738 + ], + "screenAngleDegrees": -26.56505117707799 + }, + { + "worldDirection": "SE", + "worldUnitVector": [ + 0.7071067811865475, + -0.7071067811865475 + ], + "projectedVector": [ + 1.0, + 0.0 + ], + "screenAngleDegrees": 0.0 + } + ], + "screenDownWorldUnitVector": [ + -0.7071067811865476, + -0.7071067811865476 + ], + "checks": [ + "eight-direction inverse round trips", + "projected diagonal speed ratio", + "screen-down inverse direction" + ], + "limitations": [ + "Independent algebra, not execution of the Swift helper", + "No facing sector or hysteresis policy selected", + "No input conversion, source yaw, occlusion or live travel acceptance" + ] +} diff --git a/docs/review/revised-shared-scene/projection-node-check.json b/docs/review/revised-shared-scene/projection-node-check.json new file mode 100644 index 00000000..cd206953 --- /dev/null +++ b/docs/review/revised-shared-scene/projection-node-check.json @@ -0,0 +1,11 @@ +{ + "status": "HOST_AND_APP_SUITE_PASS", + "appRun": "Test-SSRuntime-2026.10.15_18-55-43--0700.xcresult", + "hostSamples": 32, + "hostMaximumErrorPoints": 0.00021364472945606394, + "numericBound": "eight Float ULPs at coordinate magnitude; not a visual tolerance", + "files": { + "AppTests/BenchmarkCaptureTests.swift": "a6250bd8b6eb7b14abe38d586e1a58aaa0e50aeaf8fdf4d6eb790efb1fceca35", + "scripts/check_benchmark_projection.swift": "1d5356bd6b8c1e3d4dee4052949cb1cbb4e2a71a76085a6c6a0d1460ef35d940" + } +} diff --git a/docs/review/revised-shared-scene/projection-reconciliation.md b/docs/review/revised-shared-scene/projection-reconciliation.md new file mode 100644 index 00000000..5c555ae7 --- /dev/null +++ b/docs/review/revised-shared-scene/projection-reconciliation.md @@ -0,0 +1,13 @@ +# Projection reconciliation checkpoint + +The graph-located `BenchmarkCaptureTests.projectedSharedCameraScene` was checked against current source. Its rotation +45° followed by half-height transform projects world south down-right, not toward the viewer. A straight front-facing source therefore cannot validate world-south travel in this shared fixture. + +The specs now distinguish world heading, projected displacement and authored facing, including reaction ownership, inverse input and speed preservation. Screen-down corresponds to world south-west for this comparison. This is a bounded pilot direction, not all-facing art coverage or a production mapping policy. + +`python3 scripts/audit_benchmark_projection.py --output docs/review/revised-shared-scene/projection-audit.json` passes eight inverse round trips, the projected diagonal speed ratio and screen-down inverse mapping. This independent algebra diagnostic does not run the Swift helper. Current production behavior is unchanged. + +Next implementation evidence: actual node-conversion regression, then a labeled live projected pilot without altering simulation direction or silently overriding reaction selection. Full directional art, input conversion and occlusion integration remain open. + +Host SpriteKit follow-up: `swift -module-cache-path /private/tmp/ss-projection-module-cache scripts/check_benchmark_projection.swift` passed 32 forward/inverse samples across eight directions and four magnitudes. Maximum error was 0.00021364472945606394 points. An initial fixed 0.0002 bound failed; the replacement uses eight Float ULPs at coordinate magnitude for composed transform arithmetic, distinct from contact acceptance. The actual shared-scene helper now runs matching assertions. Fresh app run `18-55-43` is pending; prior app results do not validate this edit. + +Completed app result: 114 named tests / 116 executions passed, zero failures. The shared comparison now verifies all eight directions and inverse conversion at four magnitudes in its actual SpriteKit hierarchy. This closes numerical mapping verification only; projected animated traversal, facing selection, input migration and visual acceptance remain open. diff --git a/docs/review/revised-shared-scene/revision-record.json b/docs/review/revised-shared-scene/revision-record.json new file mode 100644 index 00000000..edf75851 --- /dev/null +++ b/docs/review/revised-shared-scene/revision-record.json @@ -0,0 +1,35 @@ +{ + "status": "TEST_ONLY_STATIC_COMPOSITION", + "files": { + "work/SS-runtime/AppTests/BenchmarkCaptureTests.swift": "23afac22019d05c0e64250e20844fde771b1ac85e22150fe53db9e92f8da3d4b", + "work/SS-runtime/AppTests/BenchmarkAssets/player-source-s-record.json": "746341461253fcc5e0b15b69cd506271afbab69beb85e9a9f827e51817181cc0", + "work/SS-specs/specs/001-single-level-vertical-slice/benchmark-production.md": "ebde7ee5e233f20e4cbb6a9beb4675364b9b554de51668e21fb88fa44a5c9030" + }, + "poses": [ + 0, + 4, + 8, + 12 + ], + "playerSize": [ + 64, + 69.33333333333333 + ], + "playerRoot": [ + 192, + 336 + ], + "sourceCanvas": [ + 384, + 416 + ], + "groundProjection": "existing 45-degree rotation and half-height comparison", + "limitations": [ + "Static pose composition, not animated traversal", + "Explicit fixture placement, not a legal encounter", + "Direction mapping under rotated ground not validated", + "No production admission or device acceptance" + ], + "testResult": "Test-SSRuntime-2026.10.15_18-41-30--0700.xcresult", + "outline": "Hidden only for revised review captures; production policy unchanged" +} diff --git a/docs/review/run-keyposes/prompt.txt b/docs/review/run-keyposes/prompt.txt new file mode 100644 index 00000000..86f9cfa7 --- /dev/null +++ b/docs/review/run-keyposes/prompt.txt @@ -0,0 +1,8 @@ +Use case: identity-preserve. Create a KEY POSE STUDY, not a finished animation sheet. Reference is the exact hooded urban game player. Preserve dark charcoal hooded coat, concealed face, diagonal brown strap and belt pouches on their original anatomical sides, gloves, knee pads and boots, muted materials and upper-left lighting. +Layout: exactly FOUR full-body sprites in one horizontal row on transparent background. Same scale, same elevated camera looking down at the hood and shoulders, all facing screen bottom/south. No side views, no turns, no labels or shadows. Each figure has its own equal square space and generous margins. +The FOUR images must be visibly different biomechanical key poses of a brisk RUN, with bent elbows, slight forward lean and visible knees/feet, not a walk and not standing: +1: screen-left boot landing forward, leg extends down toward viewer; screen-right knee bent back, boot lifted behind. Screen-right arm forward, screen-left arm back. +2: support/passing on screen-left leg under pelvis, screen-right knee lifted HIGH forward, screen-right boot bent underneath knee and NOT planted. Arms near crossing their mid-swing. Center of gravity over supporting foot. This is fundamentally different from pose1. +3: screen-right boot landing forward, leg extends toward viewer; screen-left knee bent back with boot lifted behind. Screen-left arm forward, screen-right arm back. Do not mirror the costume/strap. +4: support/passing on screen-right leg under pelvis, screen-left knee lifted HIGH forward, screen-left boot bent underneath knee and NOT planted. Arms near mid-swing. Fundamentally different from pose3. +Clear weight bearing, natural anatomy exactly two arms and two legs. Keep chest width, hood volume and gear identity constant. Coat tails move with the hips but do not hide the knees or boots. Detailed hand-painted game asset finish matching reference. These are four temporal poses of ONE character seen from ONE elevated south-facing angle, not rotation angles. diff --git a/docs/review/run-keyposes/review.md b/docs/review/run-keyposes/review.md new file mode 100644 index 00000000..c7e5162c --- /dev/null +++ b/docs/review/run-keyposes/review.md @@ -0,0 +1,9 @@ +# Running key-pose comparison — NOT ADMITTED + +This is a four-key pose exploration, not a four-frame replacement for the required sixteen-frame loop. Built-in image_gen used the registered south-facing hooded player as the identity reference. The exact prompt is in prompt.txt and source.png preserves the generated image. + +The two extended-leg poses have opposite leading legs and a more active silhouette than the rejected walk sheet. However, poses 2 and 4 repeat the same lifted-knee/support-side configuration instead of providing opposite passing keys. Arm opposition also needs correction. Therefore the set does not establish a complete pair of steps and must not be in-betweened or installed as a loop yet. + +Movement evidence: player-controller.md specifies 240 world units/second and 4 units/tick; a 0.5-second cycle travels 120 units unobstructed. The registered neutral candidate is 52 logical units tall (208 alpha rows / 256 texture rows × 64 logical height). The ratio is approximately 2.31 sprite heights per cycle, not a real-world anatomical measurement. Full-input running is a comparison proposal, not a new movement state or adopted final gait. + +BP-008 now requires explicit contact landmarks and ground-travel evidence, partial-input comparison, collision-stopped and wall-sliding behavior, direction changes and interruption review. Gameplay speed is unchanged. Contact/movement coherence remains unresolved, so no new runtime art or device test occurred. diff --git a/docs/review/run-keyposes/source-record.json b/docs/review/run-keyposes/source-record.json new file mode 100644 index 00000000..777c9330 --- /dev/null +++ b/docs/review/run-keyposes/source-record.json @@ -0,0 +1,7 @@ +{ + "status": "NOT_ADMITTED", + "tool": "built-in image_gen", + "source": "source.png", + "sha256": "684044cae9c2af008d27a0c8265f68e33c176e83e5fc08cd8b4161ad9bd16a41", + "reference": "SS-player-registered-candidates/south-registered-256.png" +} diff --git a/docs/review/schema-bundle-repair/review.md b/docs/review/schema-bundle-repair/review.md new file mode 100644 index 00000000..f666384c --- /dev/null +++ b/docs/review/schema-bundle-repair/review.md @@ -0,0 +1,24 @@ +# BP-003 pinned-schema packaging repair + +OBSERVED: runtime 7c0f062 omitted contracts/clip-metadata-002.schema.json present at its specification pin 56a5a5da1d87491d23df86731cc01a5acd868d26. Exact git-object comparison found one missing file and no other shared-file drift after applying the documented asset-catalog specificationCommit exception. + +Defect recorded before repair: https://github.com/Zero-State-LLC/SS-runtime/issues/123 + +The repair copies that exact pinned schema into Sources/SurveillanceCore/Resources/contracts. It changes no active registry, clip metadata, assets, specification pin or gameplay identity. The parity guard was not modified. + +Validation: +- Existing scripts/spec_parity.sh passed, including both-direction file inclusion and byte comparison. A process-local Git URL rewrite fetched the exact pin from the local SS-specs Git repository instead of GitHub; this is local parity evidence, not remote CI evidence. +- Swift test filter ClipMetadataV2Tests|Contract|LegacyAdmissionTests: 51 tests in 12 suites passed in 3.486 seconds. +- git diff --check passed. + +## Remaining coordinated switch + +Current-state discovery used the indexed graph, followed by exact current-file search because graph results hit the 500-match cap. These are live dependencies, not a proposed expansion of scope: + +1. SS-specs: active versions.json clipMetadata entry; new active metadata payload; catalog ownerContract references; active README index; validator/migration checker inputs; timing design status and plan/tasks/acceptance. Retain the old representation as an explicitly historical compatibility fixture rather than silently converting migration tests into tests against themselves. +2. Runtime: ContractVersions.clipMetadata; ClipCatalog.bundled and ClipFrameLibrary.bundled resource lookup; RuntimeBundleFilter reachable-frame input; bundled metadata and catalog owner references; all four spec-pin sources. Preserve animation/gameplay identities during mechanical conversion. +3. Export/admission: admit_original_art.py and admit_legacy_assets.py contain hard-coded v1 resource and owner references. They must follow the active contract without granting admission to unreviewed art. convert_clip_timing.py remains a v1 input converter by design. +4. Tests: current v1 conversion fixtures and strict malformed-v1 checks must remain independently exercised. Active-delivery assertions in DaemonClipTests, StandardEnemyClipProjectionTests and ClipMetadataTests still require framesPerSecond and need exact timing expectations. This is a planned version migration, not permission to weaken assertions. +5. Run complete spec validation, bidirectional parity, core replay tests and iOS playback tests after the coordinated switch. Existing passing arithmetic and export checks alone do not prove active resource reachability or renderer behavior. + +OPEN: the active switch and benchmark art/rendering work remain incomplete. This packaging repair removes a real parity failure; it does not admit v2 clips or establish benchmark visual quality. Physical-device testing remains deferred until the requested renderer/art review. diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-faded.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-faded.png new file mode 100644 index 00000000..0a9ff8fb Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-faded.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-geometry-false.png new file mode 100644 index 00000000..d98bf992 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-geometry-true.png new file mode 100644 index 00000000..c3acad9a Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-ground-cue.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-ground-cue.png new file mode 100644 index 00000000..9cfe2e96 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-ground-cue.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-opaque.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-opaque.png new file mode 100644 index 00000000..4a341bf7 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-false-opaque.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-faded.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-faded.png new file mode 100644 index 00000000..0a9ff8fb Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-faded.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-geometry-false.png new file mode 100644 index 00000000..d98bf992 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-geometry-true.png new file mode 100644 index 00000000..c3acad9a Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-ground-cue.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-ground-cue.png new file mode 100644 index 00000000..9cfe2e96 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-ground-cue.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-opaque.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-opaque.png new file mode 100644 index 00000000..4a341bf7 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-east-reduced-true-opaque.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-faded.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-faded.png new file mode 100644 index 00000000..f86a306a Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-faded.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-geometry-false.png new file mode 100644 index 00000000..9d820efc Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-geometry-true.png new file mode 100644 index 00000000..5c73e307 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-ground-cue.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-ground-cue.png new file mode 100644 index 00000000..14bdfcad Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-ground-cue.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-opaque.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-opaque.png new file mode 100644 index 00000000..8d321443 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-false-opaque.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-faded.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-faded.png new file mode 100644 index 00000000..f86a306a Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-faded.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-geometry-false.png new file mode 100644 index 00000000..9d820efc Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-geometry-true.png new file mode 100644 index 00000000..5c73e307 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-ground-cue.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-ground-cue.png new file mode 100644 index 00000000..14bdfcad Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-ground-cue.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-opaque.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-opaque.png new file mode 100644 index 00000000..8d321443 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-far-corner-reduced-true-opaque.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-false-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-false-geometry-false.png new file mode 100644 index 00000000..b3be7ee5 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-false-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-false-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-false-geometry-true.png new file mode 100644 index 00000000..34d3a857 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-false-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-true-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-true-geometry-false.png new file mode 100644 index 00000000..b3be7ee5 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-true-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-true-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-true-geometry-true.png new file mode 100644 index 00000000..34d3a857 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-near-corner-reduced-true-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-faded.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-faded.png new file mode 100644 index 00000000..3ebc76fe Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-faded.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-geometry-false.png new file mode 100644 index 00000000..707b3bef Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-geometry-true.png new file mode 100644 index 00000000..b337bfe4 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-ground-cue.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-ground-cue.png new file mode 100644 index 00000000..76cc8326 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-ground-cue.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-opaque.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-opaque.png new file mode 100644 index 00000000..e3ab8ec9 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-false-opaque.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-faded.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-faded.png new file mode 100644 index 00000000..3ebc76fe Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-faded.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-geometry-false.png new file mode 100644 index 00000000..707b3bef Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-geometry-true.png new file mode 100644 index 00000000..b337bfe4 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-ground-cue.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-ground-cue.png new file mode 100644 index 00000000..76cc8326 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-ground-cue.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-opaque.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-opaque.png new file mode 100644 index 00000000..e3ab8ec9 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-north-reduced-true-opaque.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-false-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-false-geometry-false.png new file mode 100644 index 00000000..2e06e2f2 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-false-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-false-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-false-geometry-true.png new file mode 100644 index 00000000..509da9ba Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-false-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-true-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-true-geometry-false.png new file mode 100644 index 00000000..2e06e2f2 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-true-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-true-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-true-geometry-true.png new file mode 100644 index 00000000..509da9ba Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-south-reduced-true-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-false-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-false-geometry-false.png new file mode 100644 index 00000000..561d61d0 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-false-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-false-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-false-geometry-true.png new file mode 100644 index 00000000..f2233ccc Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-false-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-true-geometry-false.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-true-geometry-false.png new file mode 100644 index 00000000..646283a1 Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-true-geometry-false.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-true-geometry-true.png b/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-true-geometry-true.png new file mode 100644 index 00000000..c36a493a Binary files /dev/null and b/docs/review/service-building-contacts/BP005-service-contact-projected-100-west-reduced-true-geometry-true.png differ diff --git a/docs/review/service-building-contacts/BP005-service-contact-q8.txt b/docs/review/service-building-contacts/BP005-service-contact-q8.txt new file mode 100644 index 00000000..7dab3c61 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-q8.txt @@ -0,0 +1,242 @@ +Isolated solver/renderer contact study; neutral pose, no full simulation or depth acceptance. +probe,tick,xQ8,yQ8 +west,1,344576,344064 +west,2,345600,344064 +west,3,346624,344064 +west,4,347648,344064 +west,5,348672,344064 +west,6,349696,344064 +west,7,350720,344064 +west,8,351744,344064 +west,9,352768,344064 +west,10,353792,344064 +west,11,354816,344064 +west,12,355840,344064 +west,13,355840,344064 +west,14,355840,344064 +west,15,355840,344064 +west,16,355840,344064 +west,17,355840,344064 +west,18,355840,344064 +west,19,355840,344064 +west,20,355840,344064 +west,21,355840,344064 +west,22,355840,344064 +west,23,355840,344064 +west,24,355840,344064 +west,25,355840,344064 +west,26,355840,344064 +west,27,355840,344064 +west,28,355840,344064 +west,29,355840,344064 +west,30,355840,344064 +west,31,355840,344064 +west,32,355840,344064 +west,33,355840,344064 +west,34,355840,344064 +west,35,355840,344064 +west,36,355840,344064 +west,37,355840,344064 +west,38,355840,344064 +west,39,355840,344064 +west,40,355840,344064 +east,1,441856,344064 +east,2,440832,344064 +east,3,439808,344064 +east,4,438784,344064 +east,5,437760,344064 +east,6,436736,344064 +east,7,435712,344064 +east,8,434688,344064 +east,9,433664,344064 +east,10,432640,344064 +east,11,431616,344064 +east,12,430592,344064 +east,13,430592,344064 +east,14,430592,344064 +east,15,430592,344064 +east,16,430592,344064 +east,17,430592,344064 +east,18,430592,344064 +east,19,430592,344064 +east,20,430592,344064 +east,21,430592,344064 +east,22,430592,344064 +east,23,430592,344064 +east,24,430592,344064 +east,25,430592,344064 +east,26,430592,344064 +east,27,430592,344064 +east,28,430592,344064 +east,29,430592,344064 +east,30,430592,344064 +east,31,430592,344064 +east,32,430592,344064 +east,33,430592,344064 +east,34,430592,344064 +east,35,430592,344064 +east,36,430592,344064 +east,37,430592,344064 +east,38,430592,344064 +east,39,430592,344064 +east,40,430592,344064 +south,1,393216,303616 +south,2,393216,304640 +south,3,393216,305664 +south,4,393216,306688 +south,5,393216,307712 +south,6,393216,308736 +south,7,393216,309760 +south,8,393216,310784 +south,9,393216,311808 +south,10,393216,312832 +south,11,393216,313856 +south,12,393216,314880 +south,13,393216,314880 +south,14,393216,314880 +south,15,393216,314880 +south,16,393216,314880 +south,17,393216,314880 +south,18,393216,314880 +south,19,393216,314880 +south,20,393216,314880 +south,21,393216,314880 +south,22,393216,314880 +south,23,393216,314880 +south,24,393216,314880 +south,25,393216,314880 +south,26,393216,314880 +south,27,393216,314880 +south,28,393216,314880 +south,29,393216,314880 +south,30,393216,314880 +south,31,393216,314880 +south,32,393216,314880 +south,33,393216,314880 +south,34,393216,314880 +south,35,393216,314880 +south,36,393216,314880 +south,37,393216,314880 +south,38,393216,314880 +south,39,393216,314880 +south,40,393216,314880 +north,1,393216,384512 +north,2,393216,383488 +north,3,393216,382464 +north,4,393216,381440 +north,5,393216,380416 +north,6,393216,379392 +north,7,393216,378368 +north,8,393216,377344 +north,9,393216,376320 +north,10,393216,375296 +north,11,393216,374272 +north,12,393216,373248 +north,13,393216,373248 +north,14,393216,373248 +north,15,393216,373248 +north,16,393216,373248 +north,17,393216,373248 +north,18,393216,373248 +north,19,393216,373248 +north,20,393216,373248 +north,21,393216,373248 +north,22,393216,373248 +north,23,393216,373248 +north,24,393216,373248 +north,25,393216,373248 +north,26,393216,373248 +north,27,393216,373248 +north,28,393216,373248 +north,29,393216,373248 +north,30,393216,373248 +north,31,393216,373248 +north,32,393216,373248 +north,33,393216,373248 +north,34,393216,373248 +north,35,393216,373248 +north,36,393216,373248 +north,37,393216,373248 +north,38,393216,373248 +north,39,393216,373248 +north,40,393216,373248 +near-corner,1,344276,303316 +near-corner,2,345000,304040 +near-corner,3,345724,304764 +near-corner,4,346448,305488 +near-corner,5,347172,306212 +near-corner,6,347896,306936 +near-corner,7,348620,307660 +near-corner,8,349344,308384 +near-corner,9,350068,309108 +near-corner,10,350792,309832 +near-corner,11,351516,310556 +near-corner,12,352240,311280 +near-corner,13,352964,312004 +near-corner,14,353688,312728 +near-corner,15,354412,313452 +near-corner,16,355136,314176 +near-corner,17,355860,314900 +near-corner,18,356584,315624 +near-corner,19,357308,315624 +near-corner,20,357308,315624 +near-corner,21,357308,315624 +near-corner,22,357308,315624 +near-corner,23,357308,315624 +near-corner,24,357308,315624 +near-corner,25,357308,315624 +near-corner,26,357308,315624 +near-corner,27,357308,315624 +near-corner,28,357308,315624 +near-corner,29,357308,315624 +near-corner,30,357308,315624 +near-corner,31,357308,315624 +near-corner,32,357308,315624 +near-corner,33,357308,315624 +near-corner,34,357308,315624 +near-corner,35,357308,315624 +near-corner,36,357308,315624 +near-corner,37,357308,315624 +near-corner,38,357308,315624 +near-corner,39,357308,315624 +near-corner,40,357308,315624 +far-corner,1,442156,384812 +far-corner,2,441432,384088 +far-corner,3,440708,383364 +far-corner,4,439984,382640 +far-corner,5,439260,381916 +far-corner,6,438536,381192 +far-corner,7,437812,380468 +far-corner,8,437088,379744 +far-corner,9,436364,379020 +far-corner,10,435640,378296 +far-corner,11,434916,377572 +far-corner,12,434192,376848 +far-corner,13,433468,376124 +far-corner,14,432744,375400 +far-corner,15,432020,374676 +far-corner,16,431296,373952 +far-corner,17,430572,373228 +far-corner,18,429848,372504 +far-corner,19,429124,372504 +far-corner,20,429124,372504 +far-corner,21,429124,372504 +far-corner,22,429124,372504 +far-corner,23,429124,372504 +far-corner,24,429124,372504 +far-corner,25,429124,372504 +far-corner,26,429124,372504 +far-corner,27,429124,372504 +far-corner,28,429124,372504 +far-corner,29,429124,372504 +far-corner,30,429124,372504 +far-corner,31,429124,372504 +far-corner,32,429124,372504 +far-corner,33,429124,372504 +far-corner,34,429124,372504 +far-corner,35,429124,372504 +far-corner,36,429124,372504 +far-corner,37,429124,372504 +far-corner,38,429124,372504 +far-corner,39,429124,372504 +far-corner,40,429124,372504 \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-faded.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-faded.json new file mode 100644 index 00000000..4cd2655e --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-faded.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "faded", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-geometry-false.json new file mode 100644 index 00000000..72803cc6 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-geometry-true.json new file mode 100644 index 00000000..72803cc6 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-ground-cue.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-ground-cue.json new file mode 100644 index 00000000..33141031 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-ground-cue.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "ground-cue", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-opaque.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-opaque.json new file mode 100644 index 00000000..6f439521 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-false-opaque.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "opaque", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-faded.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-faded.json new file mode 100644 index 00000000..4cd2655e --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-faded.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "faded", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-geometry-false.json new file mode 100644 index 00000000..72803cc6 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-geometry-true.json new file mode 100644 index 00000000..72803cc6 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-ground-cue.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-ground-cue.json new file mode 100644 index 00000000..33141031 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-ground-cue.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "ground-cue", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-opaque.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-opaque.json new file mode 100644 index 00000000..6f439521 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-east-reduced-true-opaque.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1607.238037109375, + 1387.6190185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "opaque", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-faded.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-faded.json new file mode 100644 index 00000000..47631b3e --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-faded.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "faded", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-geometry-false.json new file mode 100644 index 00000000..9cac7ccf --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-geometry-true.json new file mode 100644 index 00000000..9cac7ccf --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-ground-cue.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-ground-cue.json new file mode 100644 index 00000000..0763a618 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-ground-cue.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "ground-cue", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-opaque.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-opaque.json new file mode 100644 index 00000000..977e088a --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-false-opaque.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "opaque", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-faded.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-faded.json new file mode 100644 index 00000000..47631b3e --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-faded.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "faded", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-geometry-false.json new file mode 100644 index 00000000..9cac7ccf --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-geometry-true.json new file mode 100644 index 00000000..9cac7ccf --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-ground-cue.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-ground-cue.json new file mode 100644 index 00000000..0763a618 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-ground-cue.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "ground-cue", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-opaque.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-opaque.json new file mode 100644 index 00000000..977e088a --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-far-corner-reduced-true-opaque.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1524.6280517578125, + 1424.8690185546875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "opaque", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-false-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-false-geometry-false.json new file mode 100644 index 00000000..f84d35cd --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-false-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1483.3719482421875, + 1247.1309814453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-false-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-false-geometry-true.json new file mode 100644 index 00000000..f84d35cd --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-false-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1483.3719482421875, + 1247.1309814453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-true-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-true-geometry-false.json new file mode 100644 index 00000000..f84d35cd --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-true-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1483.3719482421875, + 1247.1309814453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-true-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-true-geometry-true.json new file mode 100644 index 00000000..f84d35cd --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-near-corner-reduced-true-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1483.3719482421875, + 1247.1309814453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-faded.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-faded.json new file mode 100644 index 00000000..55a4100e --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-faded.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "faded", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-geometry-false.json new file mode 100644 index 00000000..b0948304 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-geometry-true.json new file mode 100644 index 00000000..b0948304 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-ground-cue.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-ground-cue.json new file mode 100644 index 00000000..22f66260 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-ground-cue.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "ground-cue", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-opaque.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-opaque.json new file mode 100644 index 00000000..abb20a69 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-false-opaque.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "opaque", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-faded.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-faded.json new file mode 100644 index 00000000..55a4100e --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-faded.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "faded", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-geometry-false.json new file mode 100644 index 00000000..b0948304 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-geometry-true.json new file mode 100644 index 00000000..b0948304 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-ground-cue.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-ground-cue.json new file mode 100644 index 00000000..22f66260 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-ground-cue.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "ground-cue", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-opaque.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-opaque.json new file mode 100644 index 00000000..abb20a69 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-north-reduced-true-opaque.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1423.3900146484375, + 1376.3050537109375, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : true, + "occlusionTreatment" : "opaque", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-false-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-false-geometry-false.json new file mode 100644 index 00000000..eb53b0af --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-false-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1584.6099853515625, + 1295.6949462890625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-false-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-false-geometry-true.json new file mode 100644 index 00000000..eb53b0af --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-false-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1584.6099853515625, + 1295.6949462890625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-true-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-true-geometry-false.json new file mode 100644 index 00000000..eb53b0af --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-true-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1584.6099853515625, + 1295.6949462890625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-true-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-true-geometry-true.json new file mode 100644 index 00000000..eb53b0af --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-south-reduced-true-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1584.6099853515625, + 1295.6949462890625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-false-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-false-geometry-false.json new file mode 100644 index 00000000..7db92503 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-false-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1400.761962890625, + 1284.3809814453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-false-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-false-geometry-true.json new file mode 100644 index 00000000..7db92503 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-false-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1400.761962890625, + 1284.3809814453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-true-geometry-false.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-true-geometry-false.json new file mode 100644 index 00000000..7db92503 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-true-geometry-false.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1400.761962890625, + 1284.3809814453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-true-geometry-true.json b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-true-geometry-true.json new file mode 100644 index 00000000..7db92503 --- /dev/null +++ b/docs/review/service-building-contacts/BP005-service-contact-visibility-100-west-reduced-true-geometry-true.json @@ -0,0 +1,189 @@ +{ + "actors" : [ + { + "bounds" : [ + 1400.761962890625, + 1284.3809814453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1422.946044921875, + 438.54299926757812, + 96, + 127.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1427.14697265625, + 545.4959716796875, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1195.7010498046875, + 504.4840087890625, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1491.7159423828125, + 511.63800048828125, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1471.5560302734375, + 646.8759765625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1475.22998046875, + 699.2440185546875, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1261.7259521484375, + 680.7750244140625, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1526.2669677734375, + 781.22601318359375, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1604.93603515625, + 1072.512939453125, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1283.383056640625, + 1223.4310302734375, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2170.6220703125, + 1136.1519775390625, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2083.342041015625, + 1229.573974609375, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1792.5, + 1227.14697265625, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2681.595947265625, + 1004.22802734375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 1303.5, + 1182, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + } + ], + "cameras" : 0, + "enemies" : 0, + "occlusionCandidate" : false, + "occlusionTreatment" : "control", + "projectiles" : [ + + ], + "tick" : 0, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-contacts/README.md b/docs/review/service-building-contacts/README.md new file mode 100644 index 00000000..7795ea20 --- /dev/null +++ b/docs/review/service-building-contacts/README.md @@ -0,0 +1,7 @@ +# Registered building contact and occlusion + +Focused test `BenchmarkCaptureTests/testRegisteredServiceBuildingContacts` passed, Xcode 2026-10-15 22-38-30, 1 test/0 failures (19.181 seconds execution). 6 isolated approaches ×40 actual Collision.slideCircle steps; per-step nonpenetration; exact cardinal radius contact; 24 normal/overlay captures across both motion settings, plus 18 rear-contact treatment captures. Q8 trace attached. 32 ContractVectorTests/CombatCausalityTests passed separately; initial CollisionTests selector matched zero tests and is not counted. + +Source registration remains v3. Natural control exposes north-contact false elevation: Player draws over awning despite being outside the solid. Opaque depth hides Player; 0.35-alpha restores visibility; projected ground cue adds ground/obstacle reference. Fading remains visually ambiguous in fog. No production treatment selected. The comparison uses a ground ray plus sprite-canvas overlap, not opaque-pixel coverage. Front/rear movement, multiple occluders, restart/removal, actual attack effects, other facings and device performance remain open. + +This is a real WorldRenderer/SpriteKit capture with one isolated solid and neutral player pose; other environment decorations remain visible. No full-gameplay or animation acceptance. Geometry overlays are diagnostic. Original encounter baseline and registered source remain preserved in adjacent review directories. diff --git a/docs/review/service-building-contacts/app-summary.json b/docs/review/service-building-contacts/app-summary.json new file mode 100644 index 00000000..f34ac691 --- /dev/null +++ b/docs/review/service-building-contacts/app-summary.json @@ -0,0 +1,42 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 1, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792129172.362, + "passedTests" : 1, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792129110.069, + "statistics" : [ + + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + + ], + "totalTestCount" : 1 +} diff --git a/docs/review/service-building-contacts/core-tests.log b/docs/review/service-building-contacts/core-tests.log new file mode 100644 index 00000000..084cbef8 --- /dev/null +++ b/docs/review/service-building-contacts/core-tests.log @@ -0,0 +1,87 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/2] Write swift-version--58304C5D6DBC2206.txt +Build complete! (0.50s) +Test Suite 'Selected tests' started at 2026-10-15 22:36:11.893. +Test Suite 'SSRuntimePackageTests.xctest' started at 2026-10-15 22:36:11.896. +Test Suite 'SSRuntimePackageTests.xctest' passed at 2026-10-15 22:36:11.896. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds +Test Suite 'Selected tests' passed at 2026-10-15 22:36:11.896. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.002) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite CombatCausalityTests started. +◇ Suite ContractVectorTests started. +◇ Test actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test case passing 1 argument wallFirst → false to actualSweepOrdersTargetAndWall(wallFirst:) started. +◇ Test exposureEX006ContactOnSixtiethTickResetsClock() started. +✔ Test exposureEX006ContactOnSixtiethTickResetsClock() passed after 0.001 seconds. +◇ Test playerPC004DiagonalIntoVerticalWallSlidesY() started. +✔ Test playerPC004DiagonalIntoVerticalWallSlidesY() passed after 0.017 seconds. +◇ Test combatCB001TenPulsesOverThreeHundredTicks() started. +◇ Test case passing 1 argument wallFirst → true to actualSweepOrdersTargetAndWall(wallFirst:) started. +✔ Test actualSweepOrdersTargetAndWall(wallFirst:) with 2 test cases passed after 0.033 seconds. +◇ Test realWallEntityTieIsBlocked() started. +✔ Test realWallEntityTieIsBlocked() passed after 0.006 seconds. +◇ Test stationaryAndMissedWallSweepsAreDefined() started. +✔ Test stationaryAndMissedWallSweepsAreDefined() passed after 0.001 seconds. +◇ Test startInsideCircleHitsAtEntryNotExit() started. +✔ Test startInsideCircleHitsAtEntryNotExit() passed after 0.001 seconds. +◇ Test mineEvidenceNamesHazardRatherThanOwner() started. +✔ Test mineEvidenceNamesHazardRatherThanOwner() passed after 0.007 seconds. +◇ Test contactEvidenceListsAllCurrentContributors() started. +✔ Test contactEvidenceListsAllCurrentContributors() passed after 0.027 seconds. +◇ Test retiredProjectileRetainsIncomingPoint() started. +✔ Test retiredProjectileRetainsIncomingPoint() passed after 0.007 seconds. +✔ Suite CombatCausalityTests passed after 0.082 seconds. +✔ Test combatCB001TenPulsesOverThreeHundredTicks() passed after 1.054 seconds. +◇ Test combatCB003PredictiveAimDiffersFromDirect() started. +✔ Test combatCB003PredictiveAimDiffersFromDirect() passed after 0.001 seconds. +◇ Test combatCB004OverSpeedUsesDirectAim() started. +✔ Test combatCB004OverSpeedUsesDirectAim() passed after 0.001 seconds. +◇ Test combatCB009CeilingRejectsThirtyThirdShot() started. +✔ Test combatCB009CeilingRejectsThirtyThirdShot() passed after 0.114 seconds. +◇ Test upgradeUP001PendingFreezesClock() started. +✔ Test upgradeUP001PendingFreezesClock() passed after 0.839 seconds. +◇ Test upgradeUP002SelectsSignalJammer() started. +✔ Test upgradeUP002SelectsSignalJammer() passed after 0.005 seconds. +◇ Test upgradeUP003InvalidIndexStaysProtected() started. +✔ Test upgradeUP003InvalidIndexStaysProtected() passed after 0.004 seconds. +◇ Test upgradeUP005JammerDoesNotReduceTamper() started. +✔ Test upgradeUP005JammerDoesNotReduceTamper() passed after 0.001 seconds. +◇ Test upgradeUP006RicochetEqualDistancePrefersLowerID() started. +✔ Test upgradeUP006RicochetEqualDistancePrefersLowerID() passed after 0.001 seconds. +◇ Test upgradeUP007DestroyedCameraExcludedFromContinuation() started. +✔ Test upgradeUP007DestroyedCameraExcludedFromContinuation() passed after 0.001 seconds. +◇ Test upgradeUP008GhostStepImmunityThroughStartPlus29() started. +✔ Test upgradeUP008GhostStepImmunityThroughStartPlus29() passed after 0.001 seconds. +◇ Test upgradeUP009GhostStepHostileProjectileStillDamages() started. +✔ Test upgradeUP009GhostStepHostileProjectileStillDamages() passed after 0.007 seconds. +◇ Test upgradeUP010RestartClearsSelectedUpgrade() started. +✔ Test upgradeUP010RestartClearsSelectedUpgrade() passed after 0.003 seconds. +◇ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() started. +✔ Test bossBO004PhaseTransitionDuringTelegraphCancelsAttack() passed after 0.002 seconds. +◇ Test bossBO008DefeatRetiresFieldAndProjectiles() started. +✔ Test bossBO008DefeatRetiresFieldAndProjectiles() passed after 0.003 seconds. +◇ Test bossBO009SameTickPlayerDeathIsTerminalFailure() started. +✔ Test bossBO009SameTickPlayerDeathIsTerminalFailure() passed after 0.006 seconds. +◇ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() started. +✔ Test bossBO010ZeroCamerasDestroyedBossDefeatArmsExtraction() passed after 0.005 seconds. +◇ Test encounterEN001WaveTotals() started. +✔ Test encounterEN001WaveTotals() passed after 0.001 seconds. +◇ Test cameraCD013ExtractionArmsAtZeroDestroyed() started. +✔ Test cameraCD013ExtractionArmsAtZeroDestroyed() passed after 0.011 seconds. +◇ Test bossBO001DaemonCycleTimingAndQueryDamage() started. +✔ Test bossBO001DaemonCycleTimingAndQueryDamage() passed after 0.002 seconds. +◇ Test bossBO005AndBO006ObservationRounding() started. +✔ Test bossBO005AndBO006ObservationRounding() passed after 0.001 seconds. +◇ Test bossBO007IndependentReviewOmitsLowerTiedLane() started. +✔ Test bossBO007IndependentReviewOmitsLowerTiedLane() passed after 0.001 seconds. +◇ Test arenaAR004PlayerSpawnIsInsideZ01() started. +✔ Test arenaAR004PlayerSpawnIsInsideZ01() passed after 0.002 seconds. +✔ Suite ContractVectorTests passed after 2.086 seconds. +✔ Test run with 32 tests in 2 suites passed after 2.087 seconds. diff --git a/docs/review/service-building-contacts/index.html b/docs/review/service-building-contacts/index.html new file mode 100644 index 00000000..961c9ca9 --- /dev/null +++ b/docs/review/service-building-contacts/index.html @@ -0,0 +1 @@ +Building contact and occlusion

Registered building: contact and visibility

Six isolated approaches, 240 solver steps, both motion settings. No penetration; straight approaches reach the expected radius boundary. These are static neutral-pose captures, not locomotion or legal combat validation.

Control

Geometry: magenta footprint, cyan player body

Opaque depth

Faded building

Faded building + ground cue

Finding: drawing the player above architecture creates false elevation at rear contacts. Opaque depth hides the player entirely. Fading recovers visibility; the ground cue adds a position and footprint reference, but still needs moving review and better contrast in fog. No treatment is admitted.

Validation: focused app test passed (1/1); 32 core contract/combat tests passed; specs validator passed. Legacy props, diagnostic player outline, fixed framing and full-scene depth remain unresolved.

\ No newline at end of file diff --git a/docs/review/service-building-repair/BP010-field-encounter-record.txt b/docs/review/service-building-repair/BP010-field-encounter-record.txt new file mode 100644 index 00000000..79fcd73a --- /dev/null +++ b/docs/review/service-building-repair/BP010-field-encounter-record.txt @@ -0,0 +1,7 @@ +Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. +tick=4248, player=1327,1495, facing=w +enemies=4, projectiles=1, telegraphs=0 +Production GameScene/HUD/fog/ground/projection; painted neutral Player and complete Camera candidate family. +Same unedited snapshot across control/dark/paired and normal/Reduced Motion. +digest=d3802f536474ccaed97abd8a28a2fe24692cc62cf881097f9085ee099e84ddc5; candidate source: docs/review/camera-clips. +Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. \ No newline at end of file diff --git a/docs/review/service-building-repair/BP010-legal-projected-100-reduced-false.png b/docs/review/service-building-repair/BP010-legal-projected-100-reduced-false.png new file mode 100644 index 00000000..d94d6b33 Binary files /dev/null and b/docs/review/service-building-repair/BP010-legal-projected-100-reduced-false.png differ diff --git a/docs/review/service-building-repair/BP010-legal-projected-100-reduced-true.png b/docs/review/service-building-repair/BP010-legal-projected-100-reduced-true.png new file mode 100644 index 00000000..dddd4068 Binary files /dev/null and b/docs/review/service-building-repair/BP010-legal-projected-100-reduced-true.png differ diff --git a/docs/review/service-building-repair/BP010-legal-projected-125-reduced-false.png b/docs/review/service-building-repair/BP010-legal-projected-125-reduced-false.png new file mode 100644 index 00000000..6d15a634 Binary files /dev/null and b/docs/review/service-building-repair/BP010-legal-projected-125-reduced-false.png differ diff --git a/docs/review/service-building-repair/BP010-legal-projected-125-reduced-true.png b/docs/review/service-building-repair/BP010-legal-projected-125-reduced-true.png new file mode 100644 index 00000000..1cb661f9 Binary files /dev/null and b/docs/review/service-building-repair/BP010-legal-projected-125-reduced-true.png differ diff --git a/docs/review/service-building-repair/BP010-legal-visibility-100-reduced-false.json b/docs/review/service-building-repair/BP010-legal-visibility-100-reduced-false.json new file mode 100644 index 00000000..bfed6230 --- /dev/null +++ b/docs/review/service-building-repair/BP010-legal-visibility-100-reduced-false.json @@ -0,0 +1,466 @@ +{ + "actors" : [ + { + "bounds" : [ + 1597.989013671875, + 728.47698974609375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1202.010009765625, + 824.64398193359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1394.342041015625, + 1056.574951171875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1190.696044921875, + 1384.6719970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1643.2440185546875, + 1429.927001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1643.2440185546875, + 1294.1629638671875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2005.282958984375, + 1475.1820068359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2299.43896484375, + 1260.2220458984375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1207.666015625, + 1409.4210205078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1084.6300048828125, + 1266.5860595703125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1280.498046875, + 1374.4189453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1452.324951171875, + 1271.5350341796875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1666.5789794921875, + 1283.9100341796875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1381.1710205078125, + 532.469970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1385.3719482421875, + 639.4229736328125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1153.926025390625, + 598.4110107421875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1449.93994140625, + 605.56597900390625, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1429.781005859375, + 740.802978515625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1433.4549560546875, + 793.1710205078125, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1219.949951171875, + 774.7030029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1484.491943359375, + 875.15301513671875, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1563.1610107421875, + 1166.43994140625, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1241.6070556640625, + 1317.3590087890625, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2128.845947265625, + 1230.0789794921875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2041.5670166015625, + 1323.5009765625, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1750.7239990234375, + 1321.073974609375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2639.821044921875, + 1098.156005859375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 887.1669921875, + 412.59500122070312, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 781.79400634765625, + 742.301025390625, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1203.949951171875, + 808.24200439453125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1171.949951171875, + 861.260986328125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1549.989013671875, + 1005.260986328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1194.5780029296875, + 1108.2220458984375, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1261.7249755859375, + 1275.927001953125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1627.2440185546875, + 1144.907958984375, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1928.0279541015625, + 1170.280029296875, + 127.9998779296875, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1882.77294921875, + 1328.6719970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2186.302001953125, + 1275.41796875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2367.322021484375, + 1365.927001953125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2503.0859375, + 1015.77099609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2774.614990234375, + 1151.5350341796875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-repair/BP010-legal-visibility-100-reduced-true.json b/docs/review/service-building-repair/BP010-legal-visibility-100-reduced-true.json new file mode 100644 index 00000000..bfed6230 --- /dev/null +++ b/docs/review/service-building-repair/BP010-legal-visibility-100-reduced-true.json @@ -0,0 +1,466 @@ +{ + "actors" : [ + { + "bounds" : [ + 1597.989013671875, + 728.47698974609375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1202.010009765625, + 824.64398193359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1394.342041015625, + 1056.574951171875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1190.696044921875, + 1384.6719970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1643.2440185546875, + 1429.927001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1643.2440185546875, + 1294.1629638671875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2005.282958984375, + 1475.1820068359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2299.43896484375, + 1260.2220458984375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1207.666015625, + 1409.4210205078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1084.6300048828125, + 1266.5860595703125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1280.498046875, + 1374.4189453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1452.324951171875, + 1271.5350341796875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1666.5789794921875, + 1283.9100341796875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1381.1710205078125, + 532.469970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1385.3719482421875, + 639.4229736328125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1153.926025390625, + 598.4110107421875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1449.93994140625, + 605.56597900390625, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1429.781005859375, + 740.802978515625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1433.4549560546875, + 793.1710205078125, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1219.949951171875, + 774.7030029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1484.491943359375, + 875.15301513671875, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1563.1610107421875, + 1166.43994140625, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1241.6070556640625, + 1317.3590087890625, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2128.845947265625, + 1230.0789794921875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2041.5670166015625, + 1323.5009765625, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1750.7239990234375, + 1321.073974609375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2639.821044921875, + 1098.156005859375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 887.1669921875, + 412.59500122070312, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 781.79400634765625, + 742.301025390625, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1203.949951171875, + 808.24200439453125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1171.949951171875, + 861.260986328125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1549.989013671875, + 1005.260986328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1194.5780029296875, + 1108.2220458984375, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1261.7249755859375, + 1275.927001953125, + 512, + 512 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1627.2440185546875, + 1144.907958984375, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1928.0279541015625, + 1170.280029296875, + 127.9998779296875, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1882.77294921875, + 1328.6719970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2186.302001953125, + 1275.41796875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2367.322021484375, + 1365.927001953125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2503.0859375, + 1015.77099609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2774.614990234375, + 1151.5350341796875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/service-building-repair/BP010-legal-visibility-125-reduced-false.json b/docs/review/service-building-repair/BP010-legal-visibility-125-reduced-false.json new file mode 100644 index 00000000..fd7ccd5c --- /dev/null +++ b/docs/review/service-building-repair/BP010-legal-visibility-125-reduced-false.json @@ -0,0 +1,466 @@ +{ + "actors" : [ + { + "bounds" : [ + 1622.896728515625, + 536.09625244140625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1127.9228515625, + 656.304931640625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.337890625, + 946.21875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1113.780517578125, + 1356.3399658203125, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1679.46533203125, + 1412.90869140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1679.46533203125, + 1243.2037353515625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2132.01416015625, + 1469.4775390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2499.709228515625, + 1200.777587890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1134.992919921875, + 1387.2762451171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 981.1978759765625, + 1208.7325439453125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1226.032958984375, + 1343.523681640625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1440.816650390625, + 1214.9188232421875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1708.634033203125, + 1230.3875732421875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1351.8741455078125, + 291.08746337890625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1357.1253662109375, + 424.7786865234375, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1067.81787109375, + 373.5137939453125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1437.8353271484375, + 382.45745849609375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1412.63671875, + 551.50372314453125, + 200, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1417.2291259765625, + 616.9637451171875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1150.347900390625, + 593.8787841796875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1481.025390625, + 719.4412841796875, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1579.3616943359375, + 1083.5499267578125, + 159.9998779296875, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1177.419189453125, + 1272.19873046875, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2286.4677734375, + 1163.0987548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2177.369140625, + 1279.876220703125, + 59.999755859375, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1813.8154296875, + 1276.842529296875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2925.186767578125, + 998.195068359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 734.369140625, + 141.2437744140625, + 160, + 639.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 602.6529541015625, + 553.37628173828125, + 479.9998779296875, + 239.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1130.347900390625, + 635.802490234375, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1090.347900390625, + 702.076171875, + 240, + 480 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1562.896728515625, + 882.076171875, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1118.6329345703125, + 1010.777587890625, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1202.566650390625, + 1220.40869140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1659.4654541015625, + 1056.635009765625, + 119.9998779296875, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2035.4453125, + 1088.35009765625, + 159.999755859375, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1978.876708984375, + 1286.3399658203125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2358.287841796875, + 1219.7724609375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2584.56298828125, + 1332.90869140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2754.267822265625, + 895.2137451171875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3093.67919921875, + 1064.9188232421875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/service-building-repair/BP010-legal-visibility-125-reduced-true.json b/docs/review/service-building-repair/BP010-legal-visibility-125-reduced-true.json new file mode 100644 index 00000000..fd7ccd5c --- /dev/null +++ b/docs/review/service-building-repair/BP010-legal-visibility-125-reduced-true.json @@ -0,0 +1,466 @@ +{ + "actors" : [ + { + "bounds" : [ + 1622.896728515625, + 536.09625244140625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1127.9228515625, + 656.304931640625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.337890625, + 946.21875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1113.780517578125, + 1356.3399658203125, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1679.46533203125, + 1412.90869140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1679.46533203125, + 1243.2037353515625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2132.01416015625, + 1469.4775390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2499.709228515625, + 1200.777587890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1134.992919921875, + 1387.2762451171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 981.1978759765625, + 1208.7325439453125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1226.032958984375, + 1343.523681640625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1440.816650390625, + 1214.9188232421875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1708.634033203125, + 1230.3875732421875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1351.8741455078125, + 291.08746337890625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1357.1253662109375, + 424.7786865234375, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1067.81787109375, + 373.5137939453125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1437.8353271484375, + 382.45745849609375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1412.63671875, + 551.50372314453125, + 200, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1417.2291259765625, + 616.9637451171875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1150.347900390625, + 593.8787841796875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1481.025390625, + 719.4412841796875, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1579.3616943359375, + 1083.5499267578125, + 159.9998779296875, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1177.419189453125, + 1272.19873046875, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2286.4677734375, + 1163.0987548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2177.369140625, + 1279.876220703125, + 59.999755859375, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1813.8154296875, + 1276.842529296875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2925.186767578125, + 998.195068359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 734.369140625, + 141.2437744140625, + 160, + 639.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 602.6529541015625, + 553.37628173828125, + 479.9998779296875, + 239.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1130.347900390625, + 635.802490234375, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1090.347900390625, + 702.076171875, + 240, + 480 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1562.896728515625, + 882.076171875, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1118.6329345703125, + 1010.777587890625, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1202.566650390625, + 1220.40869140625, + 640, + 640 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1659.4654541015625, + 1056.635009765625, + 119.9998779296875, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2035.4453125, + 1088.35009765625, + 159.999755859375, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1978.876708984375, + 1286.3399658203125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2358.287841796875, + 1219.7724609375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2584.56298828125, + 1332.90869140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2754.267822265625, + 895.2137451171875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3093.67919921875, + 1064.9188232421875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/service-building-repair/README.md b/docs/review/service-building-repair/README.md new file mode 100644 index 00000000..90e1b913 --- /dev/null +++ b/docs/review/service-building-repair/README.md @@ -0,0 +1,9 @@ +# Registered service-building revision + +2026-10-15. Original generated source preserved; register_source.py reauthors it using recorded continuous left/right transforms, shared vertical scale, and alpha threshold 16. Source/deformation hashes and mapping are in registration-v3.json. + +Focused App test BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter passed (1 test, 0 failures), Xcode 22-28-11. It checks actual SpriteKit mapping of three base points to unchanged authoritative solid corners and unchanged simulation/replay digest, at 1×/1.25× in both motion settings. Numeric 0.002-unit tolerance is transform/rounded-landmark precision, not an art-quality threshold. + +Visual inspection: service-yard-B base now covers its projected footprint. Existing neighboring buildings remain misregistered. Source height cuts the roof off at this edge-encounter view; complete roof review, depth/occlusion, boundary framing and moving contact remain open. This is test-only substitution, not production asset admission. Neutral outlined Player and legacy enemy art remain diagnostic limitations. + +Specs validator and Swift syntax check passed. No new full-suite or device-performance claim. CLI test attempt failed on simulator/cache permissions before execution; successful evidence is the GUI-triggered focused test. diff --git a/docs/review/service-building-repair/app-summary.json b/docs/review/service-building-repair/app-summary.json new file mode 100644 index 00000000..b945419a --- /dev/null +++ b/docs/review/service-building-repair/app-summary.json @@ -0,0 +1,42 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 1, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792128578.801, + "passedTests" : 1, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792128491.931, + "statistics" : [ + + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + + ], + "totalTestCount" : 1 +} diff --git a/docs/review/service-building-repair/base-fit-overlay.jpg b/docs/review/service-building-repair/base-fit-overlay.jpg new file mode 100644 index 00000000..abef57dd Binary files /dev/null and b/docs/review/service-building-repair/base-fit-overlay.jpg differ diff --git a/docs/review/service-building-repair/footprint-guide.png b/docs/review/service-building-repair/footprint-guide.png new file mode 100644 index 00000000..9f02e81d Binary files /dev/null and b/docs/review/service-building-repair/footprint-guide.png differ diff --git a/docs/review/service-building-repair/guide.json b/docs/review/service-building-repair/guide.json new file mode 100644 index 00000000..ccfebbb9 --- /dev/null +++ b/docs/review/service-building-repair/guide.json @@ -0,0 +1,45 @@ +{ + "canvas": [ + 1024, + 1024 + ], + "sourcePixelsPerWorldUnit": 2, + "basePixelsTopLeft": { + "SW": [ + 419.745, + 858.392 + ], + "NW": [ + 148.216, + 722.627 + ], + "NE": [ + 510.255, + 541.608 + ], + "SE": [ + 781.784, + 677.373 + ] + }, + "roofPixelsTopLeft": { + "SW": [ + 419.745, + 468.39200000000005 + ], + "NW": [ + 148.216, + 332.62699999999995 + ], + "NE": [ + 510.255, + 151.60799999999995 + ], + "SE": [ + 781.784, + 287.37300000000005 + ] + }, + "wallHeightPixels": 390, + "status": "proposed art guide; unchanged 256x192 world footprint" +} \ No newline at end of file diff --git a/docs/review/service-building-repair/index.html b/docs/review/service-building-repair/index.html new file mode 100644 index 00000000..ffe8095e --- /dev/null +++ b/docs/review/service-building-repair/index.html @@ -0,0 +1 @@ +Service building repair

Service building repair candidate

Preserves the brick building, service awning and rooftop equipment. Generated with the built-in image tool. This is source art for review, not a runtime acceptance.

Ground fit check

Cyan: provisional observed base. Amber: required projected footprint, using a front-anchored uniform-scale fit. The remaining disagreement is visible and has not been hidden by stretching the sprite or moving collision.

Next: correct the base geometry before renderer integration. Full opacity, ground registration, depth and contact checks remain required.

Registered source revision

Two recorded affine regions correct the visible base while preserving vertical lines. This is an explicit source re-authoring candidate; roof and equipment distortion remain part of visual review.

Corrected base overlay

Real renderer · unchanged hostile encounter

Focused test passed: 1 test, 0 failures. Revised service-yard-B is at upper right. Three marked base points match the projected authoritative corners. Other assets remain unchanged. The roof extends beyond this viewport; this is registration evidence, not final scene acceptance.

1.25× comparison

\ No newline at end of file diff --git a/docs/review/service-building-repair/prompt.txt b/docs/review/service-building-repair/prompt.txt new file mode 100644 index 00000000..5801d6ea --- /dev/null +++ b/docs/review/service-building-repair/prompt.txt @@ -0,0 +1 @@ +Use case: precise-object-edit. Asset: transparent isolated top-down game building sprite, SS urban street theater setting. Image 1 is the EXACT geometry/blockout to texture; image 2 is the existing building design/material reference to improve. Render the brick service building onto image 1's geometry, retaining its rectangular proportions and pixel positions. 1024 square transparent canvas. Preserve visible base corners approximately left (148,723), front (420,858), right (782,677); roof corners left (148,333), front (420,468), right (782,287), rear (510,152). Orthographic elevated view, ground edges slopes plus/minus 0.5, upright vertical walls. The RIGHT visible face is longer than LEFT, as in guide. Geometry takes precedence over old source dimensions. Keep warm weathered brick, dark upper windows, a modest service entrance with corrugated awning on LEFT face, rooftop skylight, vents and small chimney, metal trim. Refined restrained hand-painted game detail, no smeared or fused equipment. Clear individual brick courses and window frames, subdued gray-brown urban palette, soft upper-left light. WALL BASE must terminate on guide base footprint, no surrounding slab, no external crates, barrels or fences extending outside. No ground shadow baked outside base. No objects cut off. Genuine transparent background, no halo, text, labels, watermarks, glow or diagram lines. This is a source repair candidate, not a finished scene. diff --git a/docs/review/service-building-repair/register_source.py b/docs/review/service-building-repair/register_source.py new file mode 100644 index 00000000..909ffd8c --- /dev/null +++ b/docs/review/service-building-repair/register_source.py @@ -0,0 +1,29 @@ +"""Review-only source re-authoring. Keeps runtime collision and assets untouched.""" +from pathlib import Path +from PIL import Image,ImageDraw +import hashlib,json,math +P=Path(__file__).resolve().parent +source=P/'service-building-v2.png' +im=Image.open(source).convert('RGBA') +a=im.getchannel('A');a=a.point(lambda v:0 if v<16 else v);im.putalpha(a) +f=(580.,1066.); endpoints={'left':(214.,831.),'right':(1016.,835.)} +guide=json.loads((P/'guide.json').read_text()); target=guide['basePixelsTopLeft']; t=target['SW']; vertical=.8 +regions={}; images={} +for name,key in [('left','NW'),('right','SE')]: + e=endpoints[name];q=target[key] + sx=(q[0]-t[0])/(e[0]-f[0]); shear=(q[1]-t[1]-vertical*(e[1]-f[1]))/(e[0]-f[0]) + inverse=(1/sx,0,f[0]-t[0]/sx,-shear/(sx*vertical),1/vertical,f[1]-t[1]/vertical+shear*t[0]/(sx*vertical)) + transformed=im.convert('RGBa').transform((1024,1024),Image.Transform.AFFINE,inverse,Image.Resampling.BICUBIC).convert('RGBA') + images[name]=transformed + def forward(p): return (t[0]+sx*(p[0]-f[0]),t[1]+vertical*(p[1]-f[1])+shear*(p[0]-f[0])) + errors=[math.dist(forward(p),q) for p,q in [(f,t),(e,target[key])]] + assert max(errors)<1e-9 + # Shared seam and vertical-preservation assertions independent of endpoint fits. + assert abs(forward((f[0],f[1]-100))[0]-t[0])<1e-9 + regions[name]={'scaleX':sx,'scaleY':vertical,'shearYFromX':shear,'inverseAffine':inverse,'landmarkErrorsPixels':errors} +result=Image.new('RGBA',(1024,1024)); split=round(t[0]);result.paste(images['left'].crop((0,0,split,1024)),(0,0));result.paste(images['right'].crop((split,0,1024,1024)),(split,0)) +out=P/'service-building-v3-registered.png';result.save(out) +record={'status':'SOURCE_REAUTHORING_CANDIDATE_NOT_ADMITTED','sourceHash':hashlib.sha256(source.read_bytes()).hexdigest(),'deliveryHash':hashlib.sha256(out.read_bytes()).hexdigest(),'canvas':[1024,1024],'sourceFront':f,'sourceEndpoints':endpoints,'outputBase':target,'alphaNoiseThreshold':16,'sourcePixelsPerWorldUnit':2,'drawSizeLogical':[512,512],'frontAnchorNormalizedSpriteKit':[t[0]/1024,1-t[1]/1024],'worldAnchor':'solid-07-service-yard-b SW corner (1408,1248), projected by shared transform','regions':regions,'limitations':['Hand-marked base points remain review observations','Piecewise correction may alter roof/equipment; inspect before adoption','No source rear-base pixels reconstructed','No runtime integration or traversal evidence yet']} +(P/'registration-v3.json').write_text(json.dumps(record,indent=2)+'\n') +bg=Image.new('RGBA',result.size,'#20242a');bg.alpha_composite(result);d=ImageDraw.Draw(bg);d.line([tuple(target[k]) for k in ['NW','SW','SE']],fill='#00ffff',width=2);bg.convert('RGB').save(P/'registered-base-overlay.jpg') +print(json.dumps({'output':str(out),'regions':regions,'anchor':record['frontAnchorNormalizedSpriteKit']},indent=2)) diff --git a/docs/review/service-building-repair/registered-base-overlay.jpg b/docs/review/service-building-repair/registered-base-overlay.jpg new file mode 100644 index 00000000..003e4b1f Binary files /dev/null and b/docs/review/service-building-repair/registered-base-overlay.jpg differ diff --git a/docs/review/service-building-repair/registration-v3.json b/docs/review/service-building-repair/registration-v3.json new file mode 100644 index 00000000..1ba405eb --- /dev/null +++ b/docs/review/service-building-repair/registration-v3.json @@ -0,0 +1,97 @@ +{ + "status": "SOURCE_REAUTHORING_CANDIDATE_NOT_ADMITTED", + "sourceHash": "249877813ab5ee49a158668cfea492a933063b2e377fc9f5dbb69ec22e727941", + "deliveryHash": "7f5ba29334750c93196ce31ba3fe2dfd01d6fcc566c20f45c3610059ffec2146", + "canvas": [ + 1024, + 1024 + ], + "sourceFront": [ + 580.0, + 1066.0 + ], + "sourceEndpoints": { + "left": [ + 214.0, + 831.0 + ], + "right": [ + 1016.0, + 835.0 + ] + }, + "outputBase": { + "SW": [ + 419.745, + 858.392 + ], + "NW": [ + 148.216, + 722.627 + ], + "NE": [ + 510.255, + 541.608 + ], + "SE": [ + 781.784, + 677.373 + ] + }, + "alphaNoiseThreshold": 16, + "sourcePixelsPerWorldUnit": 2, + "drawSizeLogical": [ + 512, + 512 + ], + "frontAnchorNormalizedSpriteKit": [ + 0.4099072265625, + 0.16172656249999995 + ], + "worldAnchor": "solid-07-service-yard-b SW corner (1408,1248), projected by shared transform", + "regions": { + "left": { + "scaleX": 0.7418825136612022, + "scaleY": 0.8, + "shearYFromX": -0.14271857923497241, + "inverseAffine": [ + 1.347922321372671, + 0, + 14.216345215428191, + 0.2404669482817669, + 1.25, + -107.92479920653025 + ], + "landmarkErrorsPixels": [ + 0.0, + 0.0 + ] + }, + "right": { + "scaleX": 0.8303646788990825, + "scaleY": 0.8, + "shearYFromX": 0.008672018348623866, + "inverseAffine": [ + 1.204290145536807, + 0, + 74.50523286165298, + -0.013054532798952618, + 1.25, + -1.5104251303036422 + ], + "landmarkErrorsPixels": [ + 0.0, + 0.0 + ] + } + }, + "limitations": [ + "Hand-marked base points remain review observations", + "Piecewise correction may alter roof/equipment; inspect before adoption", + "No source rear-base pixels reconstructed", + "No runtime integration or traversal evidence yet" + ], + "runtimeReviewIntegration": "AppTests/BenchmarkCaptureTests.captureProjectedLegalEncounter substitutes only service-yard-B source; full encounter and authoritative footprint preserved", + "runtimeReviewStatus": "FOCUSED_TEST_PASSED_1_OF_1", + "visualInspection": "Service-yard-B base now covers the projected footprint instead of floating over one side. Tall source extends beyond upper viewport in edge encounter; roof not fully reviewable here. Other building registration, legacy enemy art, depth, boundary framing and traversal remain open." +} diff --git a/docs/review/service-building-repair/service-building-v2.png b/docs/review/service-building-repair/service-building-v2.png new file mode 100644 index 00000000..08b4032d Binary files /dev/null and b/docs/review/service-building-repair/service-building-v2.png differ diff --git a/docs/review/service-building-repair/service-building-v3-registered.png b/docs/review/service-building-repair/service-building-v3-registered.png new file mode 100644 index 00000000..37db3430 Binary files /dev/null and b/docs/review/service-building-repair/service-building-v3-registered.png differ diff --git a/docs/review/service-building-repair/source-record.json b/docs/review/service-building-repair/source-record.json new file mode 100644 index 00000000..96664e09 --- /dev/null +++ b/docs/review/service-building-repair/source-record.json @@ -0,0 +1,42 @@ +{ + "status": "GENERATED_CANDIDATE_NOT_ADMITTED", + "tool": "built-in image_gen", + "sourceFile": "service-building-v2.png", + "sha256": "249877813ab5ee49a158668cfea492a933063b2e377fc9f5dbb69ec22e727941", + "dimensions": [ + 1254, + 1254 + ], + "mode": "RGBA", + "alphaBounds": [ + 0, + 21, + 1240, + 1254 + ], + "provisionalBaseLandmarksPixels": { + "front": [ + 580, + 1063 + ], + "left": [ + 213, + 834 + ], + "right": [ + 1015, + 838 + ] + }, + "logicalUnitsPerSourcePixel": 0.3852140478669738, + "frontAnchoredEndpointErrorsLogical": [ + 21.09128230854089, + 13.98764619268234 + ], + "inspection": "Brick/material continuity and source detail improved. Geometry guide not matched exactly; base slopes and proportions still need correction. No runtime replacement or collision change.", + "measurementLimitations": [ + "Landmarks are provisional manual observations; pixel coordinates need full-resolution refinement before placement", + "Alpha bounds reach canvas edges, indicating possible low-alpha stray pixels; cleanup and alpha-threshold inspection pending", + "No renderer capture exists for this candidate" + ] +} diff --git a/docs/review/shared-traversal-recorded/README.md b/docs/review/shared-traversal-recorded/README.md new file mode 100644 index 00000000..ad89e8e0 --- /dev/null +++ b/docs/review/shared-traversal-recorded/README.md @@ -0,0 +1,13 @@ +# Recorded shared traversal review + +Open normal-speed.html and quarter-speed.html separately. Each provides standard and Reduced Motion at 704×326 logical size plus a detail crop. These are real simulator pixels from the shared-renderer run, with no interpolated frames. The screen overlay at left belongs to the simulator/system. + +Shared traversal passed in both modes: all 16 source textures and two wraps observed. Full recorded suite failed one test (115 named passed, one failed): the full-input, standard-motion distance-phase candidate observed only 15 frames. The earlier unrecorded suite passed 118 executions. Keep the recorded failure open; shared traversal success does not override it. + +Exports retain 125 captured frames for standard mode and 136 for Reduced Motion in both speeds. Quarter-speed presentation timestamps equal four times normal offsets within 1 microsecond of ffprobe rounding. Final packet hold may differ; excerpt endpoints are not authored seams. Cuts were checked against actual visible player/scene transitions because MOV creation_time has only second precision. Initial incorrect title-screen cuts were replaced before delivery. + +Scene is a filtered art composition using a real preflighted route and unchanged simulation rules. The existing front source is explicitly aliased for this SW-to-screen-down pilot; other facing/action art is not completed. Entry and exit idle use unsupported-source fallback and are excluded from movement clips; that gap remains open. No legal encounter, full-facing, occlusion or physical-device acceptance is claimed. + +Static export checks confirm the hooded player remains visible at both endpoints without the added bright outline. Moving contact/seam/coat/arm quality still requires separate normal- and quarter-speed review. Unrecorded observation intervals reached p95 21–26 ms, so coverage is not steady-60-fps proof. Ground repetition, street composition and scale remain below the target reference. + +Next: review these clips, investigate the recording-load frame miss without weakening coverage, complete shared-scene stop/start/action/facing presentation, and then continue the benchmark art/environment and device gates. diff --git a/docs/review/shared-traversal-recorded/app-summary.json b/docs/review/shared-traversal-recorded/app-summary.json new file mode 100644 index 00000000..b7dcd156 --- /dev/null +++ b/docs/review/shared-traversal-recorded/app-summary.json @@ -0,0 +1,56 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 1, + "passedTests" : 117, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 1, + "finishTime" : 1792118332.591, + "passedTests" : 115, + "result" : "Failed", + "skippedTests" : 0, + "startTime" : 1792117977.343, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + { + "failureText" : "XCTAssertEqual failed: (\"15\") is not equal to (\"16\") - Normal playback must actually display every source texture", + "targetName" : "SSRuntimeTests", + "testIdentifier" : 11, + "testIdentifierString" : "DisplayedPlaybackTests/testDistancePhaseCandidateAtAllInputLevels()", + "testIdentifierURL" : "test://com.apple.xcode/SSRuntime/SSRuntimeTests/DisplayedPlaybackTests/testDistancePhaseCandidateAtAllInputLevels", + "testName" : "testDistancePhaseCandidateAtAllInputLevels()" + } + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "41% of duration", + "text" : "2 longest test runs with outlier durations exceeding 32.21s (three standard deviations)" + } + ], + "totalTestCount" : 116 +} diff --git a/docs/review/shared-traversal-recorded/clip-export.json b/docs/review/shared-traversal-recorded/clip-export.json new file mode 100644 index 00000000..03b645ad --- /dev/null +++ b/docs/review/shared-traversal-recorded/clip-export.json @@ -0,0 +1,35 @@ +{ + "source": "outputs/SS-player-startup-review/shared-traversal-live.mov", + "clips": [ + [ + "standard", + 333.92, + 1.18 + ], + [ + "reduced", + 336.43, + 1.18 + ] + ], + "crop": [ + 2112, + 978, + 0, + 0 + ], + "detailCrop": [ + 400, + 840, + 880, + 120 + ], + "retiming": "quarter PTS multiplied by four, no interpolation", + "alignment": "MOV creation_time is second-resolution; cuts selected from actual visible scene transition and player presence, not direct wall-time equality", + "limits": [ + "trims omit unsupported idle start/end", + "composition-only filtered encounter", + "simulator system overlay visible at left", + "not physical device" + ] +} diff --git a/docs/review/shared-traversal-recorded/retiming-verification.json b/docs/review/shared-traversal-recorded/retiming-verification.json new file mode 100644 index 00000000..19a072ab --- /dev/null +++ b/docs/review/shared-traversal-recorded/retiming-verification.json @@ -0,0 +1,30 @@ +[ + { + "mode": "standard", + "detail": false, + "frames": 125, + "maximumPTSResidualSeconds": 1.000000000139778e-06, + "status": "PASS" + }, + { + "mode": "standard", + "detail": true, + "frames": 125, + "maximumPTSResidualSeconds": 1.000000000139778e-06, + "status": "PASS" + }, + { + "mode": "reduced", + "detail": false, + "frames": 136, + "maximumPTSResidualSeconds": 1.000000000139778e-06, + "status": "PASS" + }, + { + "mode": "reduced", + "detail": true, + "frames": 136, + "maximumPTSResidualSeconds": 1.000000000139778e-06, + "status": "PASS" + } +] diff --git a/docs/review/shared-traversal-recorded/revision.json b/docs/review/shared-traversal-recorded/revision.json new file mode 100644 index 00000000..b2f3723d --- /dev/null +++ b/docs/review/shared-traversal-recorded/revision.json @@ -0,0 +1,7 @@ +{ + "resultBundle": "Test-SSRuntime-2026.10.15_19-32-57--0700.xcresult", + "sourceSHA256": "701d366eeb392f55f0d72c508c5609e3a266c5f300edac507c10bdc0d646083b", + "sharedTest": "passed", + "suite": "failed one full-input standard-motion distance-phase coverage comparison", + "productionAdmitted": false +} diff --git a/docs/review/shared-traversal/README.md b/docs/review/shared-traversal/README.md new file mode 100644 index 00000000..594ab610 --- /dev/null +++ b/docs/review/shared-traversal/README.md @@ -0,0 +1,11 @@ +# Live shared traversal checkpoint + +The fresh suite passed 116 named tests / 118 executions, zero failures. Both normal and Reduced Motion shared-scene runs observed all 16 source textures and two wraps. All 90 simulated positions and final state digest match the independent seed-1 preflight. The route uses actual movement (75 south-west command ticks then neutral); no geometry, speed or collision-rule edits. + +World south-west resolves to the existing world-facing key `w`; the isolated pilot explicitly aliases that key to the front source because the comparison projection sends this diagonal straight down-screen. This is not a newly authored west-facing sheet or production metadata change. Camera candidate textures use the six existing camera timing contracts in the isolated library. Shared environment injection preserves selected clips. + +The first run failed camera metadata installation, frame coverage (5/7) and an incorrectly bounded raw-to-presentation comparison. The corrected run includes camera metadata, prepares player masks and initial scene textures before display, removes synchronous image readbacks from strict coverage and checks the exact rounded presentation coordinates. No coverage gate was weakened. Playback player-outline readbacks are zero. + +The environment/camera presentation is an explicitly filtered composition snapshot. Other simulation actors remain authoritative but are not presented, so this is not a legal encounter or complete gameplay view. No normal/quarter-speed video from the passing shared run has yet been reviewed. First-run stills are diagnostic only and must not be relabeled passing evidence. Whole-scene performance, contact/seam visual acceptance, full-facing art and production admission remain open. + +See outputs/SS-shared-traversal for frame records, coverage and modeled support-toe observations. These are authored landmarks plus displayed roots, not pixel tracking or an adopted slip threshold. diff --git a/docs/review/shared-traversal/app-summary.json b/docs/review/shared-traversal/app-summary.json new file mode 100644 index 00000000..8678bf23 --- /dev/null +++ b/docs/review/shared-traversal/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 0, + "passedTests" : 118, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 0, + "finishTime" : 1792117782.383, + "passedTests" : 116, + "result" : "Passed", + "skippedTests" : 0, + "startTime" : 1792117434.27, + "statistics" : [ + { + "subtitle" : "3 test runs", + "title" : "1 test ran with dynamic parameters" + } + ], + "testFailures" : [ + + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + { + "category" : "Longest Test Runs", + "impact" : "40% of duration", + "text" : "2 longest test runs with outlier durations exceeding 30.79s (three standard deviations)" + } + ], + "totalTestCount" : 116 +} diff --git a/docs/review/shared-traversal/contact-observations.json b/docs/review/shared-traversal/contact-observations.json new file mode 100644 index 00000000..13497716 --- /dev/null +++ b/docs/review/shared-traversal/contact-observations.json @@ -0,0 +1,626 @@ +{ + "status": "DIAGNOSTIC_NOT_VISUAL_ACCEPTANCE", + "method": "Front-source authored support toe plus displayed root; source x remains screen lateral, source y projects at half scale. Not pixel-tracked. Strict coverage run disables image readbacks; initial failed capture run had readbacks. No tolerance selected.", + "segments": [ + { + "run": "BP008-shared-traversal-reduced-false-records", + "side": "left", + "samples": 8, + "frames": [ + 8, + 9, + 10, + 11 + ], + "rangeYLogicalPixels": 3.75, + "observations": [ + { + "tick": 17, + "frame": 8, + "x": 724.14208984375, + "y": 615.993896484375 + }, + { + "tick": 18, + "frame": 8, + "x": 724.14208984375, + "y": 614.5797119140625 + }, + { + "tick": 19, + "frame": 9, + "x": 724.1421508789062, + "y": 616.2083740234375 + }, + { + "tick": 20, + "frame": 9, + "x": 724.14208984375, + "y": 614.0870361328125 + }, + { + "tick": 21, + "frame": 10, + "x": 724.1421508789062, + "y": 615.7156982421875 + }, + { + "tick": 22, + "frame": 10, + "x": 724.14208984375, + "y": 613.5944213867188 + }, + { + "tick": 22, + "frame": 11, + "x": 724.14208984375, + "y": 617.3444213867188 + }, + { + "tick": 24, + "frame": 11, + "x": 724.14208984375, + "y": 613.8088989257812 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-false-records", + "side": "left", + "samples": 8, + "frames": [ + 8, + 9, + 10, + 11 + ], + "rangeYLogicalPixels": 3.75, + "observations": [ + { + "tick": 47, + "frame": 8, + "x": 724.14208984375, + "y": 556.596923828125 + }, + { + "tick": 48, + "frame": 8, + "x": 724.1421508789062, + "y": 554.4755859375 + }, + { + "tick": 49, + "frame": 9, + "x": 724.14208984375, + "y": 556.1043090820312 + }, + { + "tick": 50, + "frame": 9, + "x": 724.14208984375, + "y": 553.9829711914062 + }, + { + "tick": 51, + "frame": 10, + "x": 724.14208984375, + "y": 555.6116943359375 + }, + { + "tick": 52, + "frame": 10, + "x": 724.14208984375, + "y": 553.4903564453125 + }, + { + "tick": 52, + "frame": 11, + "x": 724.14208984375, + "y": 557.2403564453125 + }, + { + "tick": 54, + "frame": 11, + "x": 724.1421508789062, + "y": 553.704833984375 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-false-records", + "side": "right", + "samples": 8, + "frames": [ + 0, + 1, + 2, + 3 + ], + "rangeYLogicalPixels": 4.24261474609375, + "observations": [ + { + "tick": 2, + "frame": 0, + "x": 716.14208984375, + "y": 646.3995361328125 + }, + { + "tick": 3, + "frame": 0, + "x": 716.1421508789062, + "y": 644.2781982421875 + }, + { + "tick": 4, + "frame": 1, + "x": 716.1421508789062, + "y": 645.9068603515625 + }, + { + "tick": 5, + "frame": 1, + "x": 716.14208984375, + "y": 643.7855224609375 + }, + { + "tick": 6, + "frame": 2, + "x": 716.14208984375, + "y": 646.121337890625 + }, + { + "tick": 7, + "frame": 2, + "x": 716.1421508789062, + "y": 644.0 + }, + { + "tick": 7, + "frame": 3, + "x": 716.1421508789062, + "y": 647.75 + }, + { + "tick": 9, + "frame": 3, + "x": 716.14208984375, + "y": 643.5073852539062 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-false-records", + "side": "right", + "samples": 8, + "frames": [ + 0, + 1, + 2, + 3 + ], + "rangeYLogicalPixels": 4.24261474609375, + "observations": [ + { + "tick": 32, + "frame": 0, + "x": 716.14208984375, + "y": 586.29541015625 + }, + { + "tick": 33, + "frame": 0, + "x": 716.1421508789062, + "y": 584.174072265625 + }, + { + "tick": 34, + "frame": 1, + "x": 716.14208984375, + "y": 585.8027954101562 + }, + { + "tick": 35, + "frame": 1, + "x": 716.14208984375, + "y": 584.3885498046875 + }, + { + "tick": 36, + "frame": 2, + "x": 716.14208984375, + "y": 586.0172119140625 + }, + { + "tick": 37, + "frame": 2, + "x": 716.14208984375, + "y": 583.8959350585938 + }, + { + "tick": 37, + "frame": 3, + "x": 716.14208984375, + "y": 587.6459350585938 + }, + { + "tick": 39, + "frame": 3, + "x": 716.1421508789062, + "y": 583.4033203125 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-false-records", + "side": "right", + "samples": 8, + "frames": [ + 0, + 1, + 2, + 3 + ], + "rangeYLogicalPixels": 4.24267578125, + "observations": [ + { + "tick": 62, + "frame": 0, + "x": 716.1421508789062, + "y": 526.1913452148438 + }, + { + "tick": 63, + "frame": 0, + "x": 716.14208984375, + "y": 524.070068359375 + }, + { + "tick": 64, + "frame": 1, + "x": 716.14208984375, + "y": 526.4058227539062 + }, + { + "tick": 65, + "frame": 1, + "x": 716.14208984375, + "y": 524.2845458984375 + }, + { + "tick": 66, + "frame": 2, + "x": 716.1421508789062, + "y": 525.9132080078125 + }, + { + "tick": 67, + "frame": 2, + "x": 716.14208984375, + "y": 523.7918701171875 + }, + { + "tick": 67, + "frame": 3, + "x": 716.14208984375, + "y": 527.5418701171875 + }, + { + "tick": 69, + "frame": 3, + "x": 716.14208984375, + "y": 523.2991943359375 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-true-records", + "side": "left", + "samples": 8, + "frames": [ + 8, + 9, + 10, + 11 + ], + "rangeYLogicalPixels": 4.73529052734375, + "observations": [ + { + "tick": 16, + "frame": 8, + "x": 724.14208984375, + "y": 618.115234375 + }, + { + "tick": 17, + "frame": 8, + "x": 724.14208984375, + "y": 615.993896484375 + }, + { + "tick": 18, + "frame": 9, + "x": 724.14208984375, + "y": 618.3297119140625 + }, + { + "tick": 20, + "frame": 9, + "x": 724.14208984375, + "y": 614.0870361328125 + }, + { + "tick": 21, + "frame": 10, + "x": 724.1421508789062, + "y": 615.7156982421875 + }, + { + "tick": 22, + "frame": 10, + "x": 724.14208984375, + "y": 613.5944213867188 + }, + { + "tick": 22, + "frame": 11, + "x": 724.14208984375, + "y": 617.3444213867188 + }, + { + "tick": 23, + "frame": 11, + "x": 724.14208984375, + "y": 615.22314453125 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-true-records", + "side": "left", + "samples": 8, + "frames": [ + 8, + 9, + 10, + 11 + ], + "rangeYLogicalPixels": 4.7352294921875, + "observations": [ + { + "tick": 46, + "frame": 8, + "x": 724.14208984375, + "y": 558.0111694335938 + }, + { + "tick": 47, + "frame": 8, + "x": 724.14208984375, + "y": 556.596923828125 + }, + { + "tick": 48, + "frame": 9, + "x": 724.1421508789062, + "y": 558.2255859375 + }, + { + "tick": 50, + "frame": 9, + "x": 724.14208984375, + "y": 553.9829711914062 + }, + { + "tick": 51, + "frame": 10, + "x": 724.14208984375, + "y": 555.6116943359375 + }, + { + "tick": 52, + "frame": 10, + "x": 724.14208984375, + "y": 553.4903564453125 + }, + { + "tick": 52, + "frame": 11, + "x": 724.14208984375, + "y": 557.2403564453125 + }, + { + "tick": 53, + "frame": 11, + "x": 724.14208984375, + "y": 555.826171875 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-true-records", + "side": "right", + "samples": 8, + "frames": [ + 0, + 1, + 2, + 3 + ], + "rangeYLogicalPixels": 4.73529052734375, + "observations": [ + { + "tick": 1, + "frame": 0, + "x": 716.14208984375, + "y": 648.5208129882812 + }, + { + "tick": 2, + "frame": 0, + "x": 716.14208984375, + "y": 646.3995361328125 + }, + { + "tick": 3, + "frame": 1, + "x": 716.1421508789062, + "y": 648.0281982421875 + }, + { + "tick": 5, + "frame": 1, + "x": 716.14208984375, + "y": 643.7855224609375 + }, + { + "tick": 6, + "frame": 2, + "x": 716.14208984375, + "y": 646.121337890625 + }, + { + "tick": 7, + "frame": 2, + "x": 716.1421508789062, + "y": 644.0 + }, + { + "tick": 7, + "frame": 3, + "x": 716.1421508789062, + "y": 647.75 + }, + { + "tick": 8, + "frame": 3, + "x": 716.14208984375, + "y": 645.628662109375 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-true-records", + "side": "right", + "samples": 8, + "frames": [ + 0, + 1, + 2, + 3 + ], + "rangeYLogicalPixels": 4.52081298828125, + "observations": [ + { + "tick": 31, + "frame": 0, + "x": 716.1421508789062, + "y": 588.416748046875 + }, + { + "tick": 32, + "frame": 0, + "x": 716.14208984375, + "y": 586.29541015625 + }, + { + "tick": 33, + "frame": 1, + "x": 716.1421508789062, + "y": 587.924072265625 + }, + { + "tick": 35, + "frame": 1, + "x": 716.14208984375, + "y": 584.3885498046875 + }, + { + "tick": 36, + "frame": 2, + "x": 716.14208984375, + "y": 586.0172119140625 + }, + { + "tick": 37, + "frame": 2, + "x": 716.14208984375, + "y": 583.8959350585938 + }, + { + "tick": 37, + "frame": 3, + "x": 716.14208984375, + "y": 587.6459350585938 + }, + { + "tick": 38, + "frame": 3, + "x": 716.14208984375, + "y": 585.524658203125 + } + ] + }, + { + "run": "BP008-shared-traversal-reduced-true-records", + "side": "right", + "samples": 8, + "frames": [ + 0, + 1, + 2, + 3 + ], + "rangeYLogicalPixels": 4.52081298828125, + "observations": [ + { + "tick": 61, + "frame": 0, + "x": 716.14208984375, + "y": 528.3126831054688 + }, + { + "tick": 62, + "frame": 0, + "x": 716.1421508789062, + "y": 526.1913452148438 + }, + { + "tick": 63, + "frame": 1, + "x": 716.14208984375, + "y": 527.820068359375 + }, + { + "tick": 65, + "frame": 1, + "x": 716.14208984375, + "y": 524.2845458984375 + }, + { + "tick": 66, + "frame": 2, + "x": 716.1421508789062, + "y": 525.9132080078125 + }, + { + "tick": 67, + "frame": 2, + "x": 716.14208984375, + "y": 523.7918701171875 + }, + { + "tick": 67, + "frame": 3, + "x": 716.14208984375, + "y": 527.5418701171875 + }, + { + "tick": 68, + "frame": 3, + "x": 716.1421508789062, + "y": 525.4205322265625 + } + ] + } + ] +} diff --git a/docs/review/shared-traversal/coverage.json b/docs/review/shared-traversal/coverage.json new file mode 100644 index 00000000..41ec0c35 --- /dev/null +++ b/docs/review/shared-traversal/coverage.json @@ -0,0 +1,60 @@ +[ + { + "run": "BP008-shared-traversal-reduced-false-records", + "records": 75, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "wraps": 2, + "worldFacings": [ + "w" + ], + "clips": [ + "player_move|w" + ] + }, + { + "run": "BP008-shared-traversal-reduced-true-records", + "records": 75, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "wraps": 2, + "worldFacings": [ + "w" + ], + "clips": [ + "player_move|w" + ] + } +] diff --git a/docs/review/shared-traversal/revision.json b/docs/review/shared-traversal/revision.json new file mode 100644 index 00000000..9cf192f6 --- /dev/null +++ b/docs/review/shared-traversal/revision.json @@ -0,0 +1,23 @@ +{ + "status": "RETRY_APP_SUITE_PASSED", + "firstResult": "Test-SSRuntime-2026.10.15_19-15-35--0700.xcresult", + "retryResult": "Test-SSRuntime-2026.10.15_19-23-54--0700.xcresult", + "testSourceSHA256": "701d366eeb392f55f0d72c508c5609e3a266c5f300edac507c10bdc0d646083b", + "firstRunFailures": [ + "camera metadata missing in isolated library", + "5 normal / 7 Reduced Motion source frames observed", + "raw-position rounding assumed a single coordinate contribution" + ], + "changes": [ + "include six camera timing contracts in isolated review library", + "prepare all player outlines and preload initial scene textures", + "no synchronous image readback in strict coverage run", + "compare projected displayed root to presentation coordinates" + ], + "remaining": [ + "actual full coverage result", + "visual normal/quarter review", + "performance acceptance", + "full-facing and legal encounter integration" + ] +} diff --git a/docs/review/south-cycle-study/exports.json b/docs/review/south-cycle-study/exports.json new file mode 100644 index 00000000..e2e1fe61 --- /dev/null +++ b/docs/review/south-cycle-study/exports.json @@ -0,0 +1,296 @@ +{ + "status": "FAILED_NOT_ADMITTED", + "sourceSha256": "ef4411fac121e8268317947abeca5f21df982c161e91fd8c60ffa7266fae8c7e", + "mapping": "4x4 equal cells, common224x224 resampling pasted at16,0 in256x256; diagnostic only, no validated anatomical registration", + "normalCycleSeconds": 0.5, + "frames": [ + { + "frame": 1, + "sourceRect": [ + 0, + 0, + 314, + 314 + ], + "export": "frame-01.png", + "sha256": "08088fd5d9f253c7c75c46bf6c7fe468cf9a5f7145e4f24c339849883b4641b0", + "alphaBounds": [ + 64, + 10, + 227, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 2, + "sourceRect": [ + 314, + 0, + 627, + 314 + ], + "export": "frame-02.png", + "sha256": "793649575e9ab63668f0ae301a36d9f1be39a676e88207850ad8129b7d2eb31b", + "alphaBounds": [ + 22, + 11, + 237, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 3, + "sourceRect": [ + 627, + 0, + 940, + 314 + ], + "export": "frame-03.png", + "sha256": "e8e39846ede07342390da61647bba8bbac57b2069420ac55cbe39255ee873fb1", + "alphaBounds": [ + 21, + 10, + 217, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 4, + "sourceRect": [ + 940, + 0, + 1254, + 314 + ], + "export": "frame-04.png", + "sha256": "d28cac45c8fbc4194c38014f1f510daf8e18af20adbb38fb3f76cc9a1ab091a5", + "alphaBounds": [ + 59, + 11, + 196, + 223 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 5, + "sourceRect": [ + 0, + 314, + 314, + 627 + ], + "export": "frame-05.png", + "sha256": "82d90f621496a5bd61767707ce71bfe7f15fdc23346be24d9024c9e07e6df458", + "alphaBounds": [ + 61, + 0, + 234, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 6, + "sourceRect": [ + 314, + 314, + 627, + 627 + ], + "export": "frame-06.png", + "sha256": "7fcc9ed46452549a16c1d17f20832ab0fad0c7acd929ba22d8921d8312f6f14d", + "alphaBounds": [ + 62, + 0, + 230, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 7, + "sourceRect": [ + 627, + 314, + 940, + 627 + ], + "export": "frame-07.png", + "sha256": "e2667756dedbbaeefe45682e15256d84f884334c05c51bc139417da6c881fa9f", + "alphaBounds": [ + 61, + 0, + 209, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 8, + "sourceRect": [ + 940, + 314, + 1254, + 627 + ], + "export": "frame-08.png", + "sha256": "77ba3af316f23a7132824ee66cc42374bc8a4cb9f31a6fe15d02f5a77882baa1", + "alphaBounds": [ + 56, + 8, + 226, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 9, + "sourceRect": [ + 0, + 627, + 314, + 940 + ], + "export": "frame-09.png", + "sha256": "3700859e2f0311a1cb38325f0600f0b9740eff13423fc19190d9bd551986b994", + "alphaBounds": [ + 60, + 0, + 233, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 10, + "sourceRect": [ + 314, + 627, + 627, + 940 + ], + "export": "frame-10.png", + "sha256": "f7c20f1c0b69d31861e23d770b1adeb6a7c0b59278cb48d9a38878dba0872e6c", + "alphaBounds": [ + 22, + 0, + 240, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 11, + "sourceRect": [ + 627, + 627, + 940, + 940 + ], + "export": "frame-11.png", + "sha256": "22a47f15af6d5eb14738d7b47dc1fb6f1da7dd3b4670c455c87c2faa0b855e24", + "alphaBounds": [ + 18, + 4, + 204, + 224 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 12, + "sourceRect": [ + 940, + 627, + 1254, + 940 + ], + "export": "frame-12.png", + "sha256": "d594b7730e7b9af098d092bb759c1c13edbcc7d40e46aca7e7b7c745bbaf8139", + "alphaBounds": [ + 56, + 6, + 220, + 221 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 13, + "sourceRect": [ + 0, + 940, + 314, + 1254 + ], + "export": "frame-13.png", + "sha256": "ecc9eeccec6f8e66be674aa94131670de650678656ab183836e1818f8d311bf9", + "alphaBounds": [ + 62, + 0, + 230, + 213 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 14, + "sourceRect": [ + 314, + 940, + 627, + 1254 + ], + "export": "frame-14.png", + "sha256": "babfa01be1300d99645fa5bb22462c161ec638baefb13dc3e192b871107e8112", + "alphaBounds": [ + 20, + 0, + 219, + 215 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 15, + "sourceRect": [ + 627, + 940, + 940, + 1254 + ], + "export": "frame-15.png", + "sha256": "1790ccdb6a20405a830d4fced84908fd673452d45615c5506e2967a0aa785914", + "alphaBounds": [ + 60, + 0, + 235, + 216 + ], + "status": "FAILED_PHASE_ORDER" + }, + { + "frame": 16, + "sourceRect": [ + 940, + 940, + 1254, + 1254 + ], + "export": "frame-16.png", + "sha256": "1d42ee0bd14615695366ee64bfaf5a592ccc468623ccb53bf1c4d8cad8b645ac", + "alphaBounds": [ + 53, + 7, + 195, + 216 + ], + "status": "FAILED_PHASE_ORDER" + } + ] +} diff --git a/docs/review/south-cycle-study/numbered-plate.png b/docs/review/south-cycle-study/numbered-plate.png new file mode 100644 index 00000000..5d0a91c1 Binary files /dev/null and b/docs/review/south-cycle-study/numbered-plate.png differ diff --git a/docs/review/south-cycle-study/prompts.json b/docs/review/south-cycle-study/prompts.json new file mode 100644 index 00000000..581cddb3 --- /dev/null +++ b/docs/review/south-cycle-study/prompts.json @@ -0,0 +1,4 @@ +{ + "initial": "Use case: identity-preserve. Asset: a coherent 16-frame south-facing locomotion sprite sheet for the existing hooded player in an elevated top-down urban action game. Reference image is the character identity and exact viewpoint, not a side-scroller. Preserve charcoal hood and coat, concealed face, brown diagonal strap and belt pouches, gloves, knee pads and boots. Preserve the asymmetrical strap on the same anatomical side. Restrained urban street-theater costume, not fantasy wizard or armored soldier. No new equipment.\nCreate exactly 16 distinct sequential movement poses in a precise 4 columns by 4 rows square grid, read left-to-right then top-to-bottom. All 16 sprites face toward screen bottom from the SAME elevated camera angle, showing top of hood and shoulders. No turning, no profile views. No labels, grid lines, text or cast shadows. Transparent background.\nEach equal cell contains full character with generous transparent margins, identical scale and body proportions. Hip/root center remains at same location within each cell; consistent ground reference. Animate a brisk grounded walk cycle in place with clearly changing leg and opposed arm positions, natural boot contacts, passing poses and small vertical body motion. Frame1 left foot forward contact/right foot back; 2-4 left support and right recovery; 5 right passing under hips; 6-8 right reaching forward; 9 right foot forward contact/left foot back;10-12 right support and left recovery;13 left passing;14-16 left reaching to next frame1. No repeated neutral poses, no decorative jitter pretending to be animation. Frame16 flows into frame1 without duplicating it. Exactly two legs, two arms, feet always identifiable. Coat tails follow motion without concealing the feet. Maintain identical hood volume, shoulder width, material palette, line weight and upper-left lighting across cells. Carefully drawn detailed hand-painted sprite finish matching reference. This is one continuous gait, not sixteen redesigns.", + "correction": "Edit the supplied 4x4 hooded-player animation sheet. Keep the exact character design, elevated top-down south-facing viewpoint, clothing details, scale, lighting, transparent background, grid and 16 cells. Correct ONLY the locomotion phase sequence to be temporally coherent. Previous result switches leading legs repeatedly too soon. We need one complete two-step walk over all16cells read rowmajor, not16 random walking poses.\nScreen-left and screen-right refer to the viewer's image.\nFrame1 screen-left boot forward/down, screen-right boot back/up.\nFrame2 same left support, right heel lifting.\nFrame3 left leg supports, right knee recovers toward body.\nFrame4 right knee advancing, right boot still behind left boot.\nFrame5 passing: right boot under hips beside left leg, left boot now travels rearward.\nFrame6 right boot reaches a little forward.\nFrame7 right boot reaches farther forward, left heel lifting.\nFrame8 right boot nearly full forward extension.\nFrame9 right boot full forward/down contact, left boot full back/up.\nFrame10 same right support, left heel lifting.\nFrame11 right leg supports, left knee recovers toward body.\nFrame12 left knee advancing, left boot still behind right boot.\nFrame13 passing: left boot under hips beside right leg, right boot travels rearward.\nFrame14 left boot reaches a little forward.\nFrame15 left boot reaches farther forward, right heel lifting.\nFrame16 left boot nearly full forward extension, smoothly leading to frame1.\nArms move opposite legs smoothly through the16frames. Small natural vertical hip motion, no skating, no leg crossing, no duplicate idle poses. Torso stays square south toward bottom of screen, hood volume and chest straps stable. Ground projection and each sprite's hip-root center fixed across cells. Keep all boots visible and entirely within their cells. NO text numbers lines or floor." +} diff --git a/docs/review/south-cycle-study/review.md b/docs/review/south-cycle-study/review.md new file mode 100644 index 00000000..82167bb0 --- /dev/null +++ b/docs/review/south-cycle-study/review.md @@ -0,0 +1,11 @@ +# South movement study — FAILED, not admitted + +Built-in image generation produced an initial 4×4 sheet and one targeted gait-order correction from the registered hooded-player south candidate. Both original PNGs and exact prompts are preserved. No shipping assets, catalog entries or animation metadata changed. + +Visual review of the corrected sheet: frames 1–2 have a screen-left leading boot, frames 3–4 switch to screen-right although the requested passing transition is later; frame 8 returns to screen-left before frame 9 returns right. Similar switches recur in frames 10–12 and 13–16. Passing poses are not clearly established. Arms and coat contours change without a coherent mechanical progression. A stable-looking costume and sixteen different images do not establish sixteen usable animation poses. + +The diagnostic export uses proportional 4×4 cell boundaries (the generated sheet is 1254×1254, not an exact multiple of four), one common 224×224 resampling and a fixed placement on 256×256 canvases. Individual poses were not resized to hide drift. These are diagnostic frames, not validated ground-anchor registrations. Source hashes and frame hashes are in exports.json. The quarter-speed WebP uses 125ms holds. The HTML viewer uses a 31.25ms normal frame interval (16 poses over 0.5 seconds), quarter-speed and frame stepping; it is not the runtime renderer and cannot establish foot slide against world travel. + +Next production action: establish and review contact, down, passing and up key poses for both steps with explicit anatomical landmarks; construct in-betweens from those constraints. Do not repeat unconstrained 16-frame generation or promote this sheet merely because all cells differ. The timing foundation remains useful, but art fidelity is still unproven. + +Tool: built-in image_gen. No CLI fallback used. Deterministic export follows the user's explicit cleanup/export authorization. Full initial and correction prompts: prompts.json. diff --git a/docs/review/street-corner-review/README.md b/docs/review/street-corner-review/README.md new file mode 100644 index 00000000..550a5bc4 --- /dev/null +++ b/docs/review/street-corner-review/README.md @@ -0,0 +1,7 @@ +# Street-corner composition trial + +Specs first: benchmark-production.md defines a researched street organization trial, with proposed fixture dimensions separated from NACTO guidance. Runtime BenchmarkReviewArt.configureStreetCorner shares road/curb/rail/crossing placement between static and live review fixtures. No collision, actor size, cadence or rules changed. + +Captured by testCaptureCompleteCameraCandidatesInSharedScene (passed, 16.842 s) in Test-SSRuntime-2026.10.15_21-09-37--0700. Overall suite was deliberately stopped after Xcode retained the old full scheme; do not claim a full pass. Updated live traversal remains unverified. Swift parse and diff checks pass. + +Visual inspection: road now wraps the corner and separates sidewalk from asphalt. Camera field remains visible, player retains clean review silhouette. The small player/large viewport and crossing clipped by lower edge remain below benchmark. Next: closer framing comparison with unchanged world sizes and HUD, then targeted traversal. Added SSBenchmarkReview scheme and its project.yml source for focused iteration, but UI selection has not yet been verified effective. diff --git a/docs/review/street-corner-review/app-summary.json b/docs/review/street-corner-review/app-summary.json new file mode 100644 index 00000000..8c9b1fb7 --- /dev/null +++ b/docs/review/street-corner-review/app-summary.json @@ -0,0 +1,49 @@ +{ + "devicesAndConfigurations" : [ + { + "device" : { + "architecture" : "arm64", + "deviceId" : "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "deviceName" : "iPhone 17 Pro", + "modelName" : "iPhone 17 Pro", + "osBuildNumber" : "23F77", + "osVersion" : "26.5", + "platform" : "iOS Simulator" + }, + "expectedFailures" : 0, + "failedTests" : 1, + "passedTests" : 5, + "skippedTests" : 0, + "testPlanConfiguration" : { + "configurationId" : "1", + "configurationName" : "Test Scheme Action" + } + } + ], + "environmentDescription" : "SSRuntime · Built with macOS 26.3.1", + "expectedFailures" : 0, + "failedTests" : 1, + "finishTime" : 1792123901.711, + "passedTests" : 5, + "result" : "Failed", + "skippedTests" : 0, + "startTime" : 1792123777.906, + "statistics" : [ + + ], + "testFailures" : [ + { + "failureText" : "Testing was canceled", + "targetName" : "SSRuntimeTests", + "testIdentifier" : 6, + "testIdentifierString" : "BenchmarkCaptureTests/testCaptureRevisedBenchmarkComposition()", + "testIdentifierURL" : "test://com.apple.xcode/SSRuntime/SSRuntimeTests/BenchmarkCaptureTests/testCaptureRevisedBenchmarkComposition", + "testName" : "testCaptureRevisedBenchmarkComposition()" + } + ], + "title" : "Test - SSRuntime", + "topInsights" : [ + + ], + "totalTestCount" : 6 +} diff --git a/docs/review/street-corner-review/before.png b/docs/review/street-corner-review/before.png new file mode 100644 index 00000000..ad1367cb Binary files /dev/null and b/docs/review/street-corner-review/before.png differ diff --git a/docs/review/street-corner-review/scene-native.png b/docs/review/street-corner-review/scene-native.png new file mode 100644 index 00000000..c384732e Binary files /dev/null and b/docs/review/street-corner-review/scene-native.png differ diff --git a/docs/review/street-surface/BP004-shared-scene-record.txt b/docs/review/street-surface/BP004-shared-scene-record.txt new file mode 100644 index 00000000..d417f9d6 --- /dev/null +++ b/docs/review/street-surface/BP004-shared-scene-record.txt @@ -0,0 +1,13 @@ +Actual GameScene/WorldRenderer/HUD; 704x326 logical viewport. Complete camera +candidates use the production integrity policy, with Reduced Motion settled +frames. Painted neutral player and constrained building are review assets. +Explicit composition placements; not a legal encounter or animation capture. +Registered variants use the BP007 45-degree rotation/half-height ground comparison, +unchanged zoom, upright artwork and documented constrained-building corner anchor. +Control variants retain the old stretched building for direct comparison (issue 128). +Street variants add asphalt bounds (960,0,1344,1536), 128-unit tiles; curb at +x=960/957 (width 4/3), rail grooves at x=1020/1060 (width 5, metal 1.5). +All strips span y=0...1536; these are editable fixture values, not arena placement. +Geometry mapping and player locomotion remain unaccepted. Native frame scale +must be read from the exported pixel dimensions. Camera texture filtering is +nearest; other high-resolution composition sources use linear filtering. \ No newline at end of file diff --git a/docs/review/street-surface/BP004-street-shared-scene-paired-integrity-0.png b/docs/review/street-surface/BP004-street-shared-scene-paired-integrity-0.png new file mode 100644 index 00000000..74538876 Binary files /dev/null and b/docs/review/street-surface/BP004-street-shared-scene-paired-integrity-0.png differ diff --git a/docs/review/street-surface/BP004-street-shared-scene-paired-integrity-3.png b/docs/review/street-surface/BP004-street-shared-scene-paired-integrity-3.png new file mode 100644 index 00000000..8d5f3ab2 Binary files /dev/null and b/docs/review/street-surface/BP004-street-shared-scene-paired-integrity-3.png differ diff --git a/docs/review/street-surface/README.md b/docs/review/street-surface/README.md new file mode 100644 index 00000000..b40e9c0a --- /dev/null +++ b/docs/review/street-surface/README.md @@ -0,0 +1,25 @@ +# Shared street-surface comparison — BP-001/BP-005/BP-007 + +Spec d602775; runtime parent e4b668d. The spec was deepened before runtime changes, with matching plan/task/acceptance clauses. All 22 bundled JSON contracts/fixtures match that spec commit, with the catalog's adopted specificationCommit field. Ruleset, arena, content and replay identities remain unchanged. + +## Implementation and scope + +WorldRenderer's review-art path now supports bounded repeating surface patches and independently placed continuous ground lines. A partial tile uses a texture subrectangle at the same density rather than stretching the full texture. All details belong to the ground layer and therefore share the benchmark ground transform. They are removed with the usual renderer reset. Normal gameplay supplies no review art and receives no patches or lines. + +The existing control and registered plain scene are retained. The added street scene uses the existing asphalt and plaza sources, one asphalt rectangle and six placed strips for curb shadow/top and two rail grooves/metal faces. The exact fixture values and source hashes are in source-record.json. The road clears the one fixture building and keeps the placed camera/tree/newsbox on the pedestrian side. This is not the level's authoritative 30-degree rail spine. No crosswalk is drawn because the fixture has no opposite pedestrian landing. Procedural strips remain comparison geometry rather than finished infrastructure artwork. + +## Research + +[SF Better Streets sidewalk zones](https://sfbetterstreets.org/design-guidelines/sidewalk-zones/index.html) distinguishes frontage, throughway, furnishings and edge functions. [SFMTA historic streetcars](https://www.sfmta.com/getting-around/muni/historic-streetcars) records streetcar track work alongside curbs, crossings and boarding islands. Accessed 2026-10-14. These support the contextual separation; all game-unit dimensions and material values are authored comparison parameters. Existing civic-seam-visual-direction.md §5b already prohibits repeated linear infrastructure in ground tiles. + +## Verification + +Specification validator passed (23 JSON artifacts, 7 schemas, 33 registered contracts, 55 indexed files). Four ContractVersionsTests/AssetCatalogTests passed with exit 0. The simulator capture checks all 132 road tiles remain within the patch, partial tiles preserve 128px/128-unit density, plain-scene reset removes the curb, projection preserves the building anchor, and simulation digest remains unchanged. Final simulator run Test-SSRuntime-2026.10.14_23-30-18--0700.xcresult: 106 executions, no failures; one existing EnvironmentLibrary nonthrowing-try warning. + +## Remaining + +This explicitly placed composition is not a legal encounter or live traversal result. Source material variation, final curb/rail art, source-building residuals, Player outline treatment, continuous animation, occlusion, legal/dense encounter integration and device performance remain open. No production style or asset admission is claimed. + +## Visual observation + +The upper-right street now reads as a continuous asphalt band with two embedded rail indications. The tree, camera and newsbox remain on the pedestrian side. The road edge is still mechanically straight and the paving repeats prominently. Most of the Camera field remains on pale paving; this capture does not satisfy the asphalt field-readability matrix. The current opaque Player border remains conspicuous. diff --git a/docs/review/street-surface/comparison.png b/docs/review/street-surface/comparison.png new file mode 100644 index 00000000..f6a57f83 Binary files /dev/null and b/docs/review/street-surface/comparison.png differ diff --git a/docs/review/street-surface/core-tests.log b/docs/review/street-surface/core-tests.log new file mode 100644 index 00000000..0cecb5bb --- /dev/null +++ b/docs/review/street-surface/core-tests.log @@ -0,0 +1,55 @@ +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/configuration is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/org.swift.swiftpm/security is not accessible or not writable, disabling user-level cache features. +warning: /Users/appliedalchemylabs/Library/Caches/org.swift.swiftpm is not accessible or not writable, disabling user-level cache features. +warning: 'ss-runtime': failed storing manifest for 'ss-runtime' in cache: attempt to write a readonly database +Building for debugging... +[0/4] Write sources +[1/4] Copying contracts +[2/5] Copying SPEC_PIN.txt +[3/5] Write swift-version--58304C5D6DBC2206.txt +[5/7] Compiling SurveillanceCore ContractVersions.swift +[6/7] Emitting module SurveillanceCore +[7/14] Compiling SurveillanceCore ReleaseCandidateEvidence.swift +[8/14] Compiling SurveillanceCore AssetCatalog.swift +[9/14] Compiling SurveillanceCore ReplayEnvelope.swift +[10/14] Compiling SurveillanceCore RunReceipt.swift +[11/14] Compiling SurveillanceCore ProceduralVFX.swift +[12/14] Compiling SurveillanceCore Simulation.swift +[13/14] Compiling SurveillanceCore ArenaManifest.swift +[14/26] Compiling SurveillanceCoreTests ProceduralVFXTests.swift +[15/27] Compiling SurveillanceCoreTests ReleaseCandidateEvidenceTests.swift +[16/27] Compiling SurveillanceCoreTests ReplayTests.swift +[17/27] Compiling SurveillanceCoreTests ReadabilityFinishTests.swift +[18/27] Compiling SurveillanceCoreTests ContractVersionsTests.swift +[19/27] Compiling SurveillanceCoreTests ClipMetadataTests.swift +[20/27] Compiling SurveillanceCoreTests CameraPlacementTests.swift +[21/27] Compiling SurveillanceCoreTests DailyRunGhostTests.swift +[22/27] Compiling SurveillanceCoreTests AssetCatalogTests.swift +[23/27] Compiling SurveillanceCoreTests AmbientMotionTests.swift +[24/27] Compiling SurveillanceCoreTests ArenaAndSimulationTests.swift +[25/27] Emitting module SurveillanceCoreTests +[25/27] Write Objects.LinkFileList +[26/27] Linking SSRuntimePackageTests +Build complete! (25.21s) +Test Suite 'Selected tests' started at 2026-10-14 23:30:09.939. +Test Suite 'SSRuntimePackageTests.xctest' started at 2026-10-14 23:30:09.951. +Test Suite 'SSRuntimePackageTests.xctest' passed at 2026-10-14 23:30:09.952. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds +Test Suite 'Selected tests' passed at 2026-10-14 23:30:09.952. + Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.013) seconds +◇ Test run started. +↳ Testing Library Version: 1902 +↳ Target Platform: arm64e-apple-macos14.0 +◇ Suite ContractVersionsTests started. +◇ Suite AssetCatalogTests started. +◇ Test currentIdentityIsCompatible() started. +◇ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() started. +✔ Test currentIdentityIsCompatible() passed after 0.001 seconds. +◇ Test unknownIdentityFailsClosed() started. +✔ Test unknownIdentityFailsClosed() passed after 0.001 seconds. +✔ Suite ContractVersionsTests passed after 0.002 seconds. +✔ Test bundledAssetCatalogFailsClosedAndCoversPresentationIDs() passed after 0.495 seconds. +◇ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() started. +✔ Test excludedOrAcceptedWithoutHashCatalogsFailClosed() passed after 0.131 seconds. +✔ Suite AssetCatalogTests passed after 0.626 seconds. +✔ Test run with 4 tests in 2 suites passed after 0.627 seconds. diff --git a/docs/review/street-surface/result.json b/docs/review/street-surface/result.json new file mode 100644 index 00000000..de7b3c87 --- /dev/null +++ b/docs/review/street-surface/result.json @@ -0,0 +1,608 @@ +{ + "_type": { + "_name": "ActionsInvocationRecord" + }, + "actions": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "ActionRecord" + }, + "actionResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "diagnosticsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~B6ROmEne-chst0XKeHwc1uboD-EkYkPv8OpnlyJUzloUYCbF0rbvUQyTLXJPnoLvnbY9A-EFMqde6e9DrdnEDQ==" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~d4sDedMc8n0RWnRzudqY4GFZ0OzTxp1BnYzw89g-naEsRAIJSC2LqzhYwOsENdTGTeHwca6yK6uaVdWFGqppQw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "106" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "action" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + }, + "testsRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~8MexFiHHzY21fOVqlXuvolVXhgdcaNVLcWojTkuXox9_2zlx14zqK63tTmtIhtNYSvtQ0lZfBPS852oBhzPEEw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionTestPlanRunSummaries" + } + } + } + }, + "buildResult": { + "_type": { + "_name": "ActionResult" + }, + "coverage": { + "_type": { + "_name": "CodeCoverageInfo" + } + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "logRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~tLCGAbGga8QMVSH0Ok6O-_TIfNgbgegHOUlHVWGeBpHHagJAebP6thjAEhA9xizDJXwcnYS7XOghtCZRYSVAfQ==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActivityLogSection" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + }, + "resultName": { + "_type": { + "_name": "String" + }, + "_value": "build" + }, + "status": { + "_type": { + "_name": "String" + }, + "_value": "succeeded" + } + }, + "endedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T23:33:46.468-0700" + }, + "runDestination": { + "_type": { + "_name": "ActionRunDestinationRecord" + }, + "displayName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "localComputerRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + }, + "cpuKind": { + "_type": { + "_name": "String" + }, + "_value": "Apple M4" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "00008132-001168DE3C2B801C" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "Mac16,13" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "MacBook Air" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.macbookair-15-2025" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "My Mac" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64e" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.3.1 (25D2128)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "10" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.macosx" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "macOS" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "24576" + } + }, + "targetArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "targetDeviceRecord": { + "_type": { + "_name": "ActionDeviceRecord" + }, + "busSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuCount": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "cpuSpeedInMHz": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3" + }, + "isConcreteDevice": { + "_type": { + "_name": "Bool" + }, + "_value": "true" + }, + "logicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "modelCode": { + "_type": { + "_name": "String" + }, + "_value": "iPhone18,1" + }, + "modelName": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "modelUTI": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.com.apple.iphone-17-pro-2" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "iPhone 17 Pro" + }, + "nativeArchitecture": { + "_type": { + "_name": "String" + }, + "_value": "arm64" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + }, + "operatingSystemVersionWithBuildNumber": { + "_type": { + "_name": "String" + }, + "_value": "26.5 (23F77)" + }, + "physicalCPUCoresPerPackage": { + "_type": { + "_name": "Int" + }, + "_value": "0" + }, + "platformRecord": { + "_type": { + "_name": "ActionPlatformRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "com.apple.platform.iphonesimulator" + }, + "userDescription": { + "_type": { + "_name": "String" + }, + "_value": "iOS Simulator" + } + }, + "ramSizeInMegabytes": { + "_type": { + "_name": "Int" + }, + "_value": "0" + } + }, + "targetSDKRecord": { + "_type": { + "_name": "ActionSDKRecord" + }, + "identifier": { + "_type": { + "_name": "String" + }, + "_value": "iphonesimulator26.5" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "Simulator - iOS 26.5" + }, + "operatingSystemVersion": { + "_type": { + "_name": "String" + }, + "_value": "26.5" + } + } + }, + "schemeCommandName": { + "_type": { + "_name": "String" + }, + "_value": "Test" + }, + "schemeTaskName": { + "_type": { + "_name": "String" + }, + "_value": "BuildAndAction" + }, + "startedTime": { + "_type": { + "_name": "Date" + }, + "_value": "2026-10-14T23:30:18.978-0700" + }, + "testPlanName": { + "_type": { + "_name": "String" + }, + "_value": "SSRuntime" + } + } + ] + }, + "issues": { + "_type": { + "_name": "ResultIssueSummaries" + }, + "warningSummaries": { + "_type": { + "_name": "Array" + }, + "_values": [ + { + "_type": { + "_name": "IssueSummary" + }, + "documentLocationInCreatingWorkspace": { + "_type": { + "_name": "DocumentLocation" + }, + "concreteTypeName": { + "_type": { + "_name": "String" + }, + "_value": "DVTTextDocumentLocation" + }, + "url": { + "_type": { + "_name": "String" + }, + "_value": "file:///Users/appliedalchemylabs/Documents/Codex/2026-10-13/can/work/SS-runtime/Sources/SurveillanceCore/Presentation/EnvironmentLibrary.swift#EndingColumnNumber=27&EndingLineNumber=108&StartingColumnNumber=27&StartingLineNumber=108&Timestamp=813643555.504869" + } + }, + "issueType": { + "_type": { + "_name": "String" + }, + "_value": "Swift Compiler Warning" + }, + "message": { + "_type": { + "_name": "String" + }, + "_value": "No calls to throwing functions occur within 'try' expression" + }, + "producingTarget": { + "_type": { + "_name": "String" + }, + "_value": "SurveillanceCore" + } + } + ] + } + }, + "metadataRef": { + "_type": { + "_name": "Reference" + }, + "id": { + "_type": { + "_name": "String" + }, + "_value": "0~IxMHh5BA5Swp2OsZDzhErsz-WZ9bkEcyi4r42-Yb8VImgjZZNfF8epb29Rulxy0TossVLDveHzpRZHlO717Iuw==" + }, + "targetType": { + "_type": { + "_name": "TypeDefinition" + }, + "name": { + "_type": { + "_name": "String" + }, + "_value": "ActionsInvocationMetadata" + } + } + }, + "metrics": { + "_type": { + "_name": "ResultMetrics" + }, + "testsCount": { + "_type": { + "_name": "Int" + }, + "_value": "106" + }, + "warningCount": { + "_type": { + "_name": "Int" + }, + "_value": "1" + } + } +} diff --git a/docs/review/street-surface/source-record.json b/docs/review/street-surface/source-record.json new file mode 100644 index 00000000..2d381bb5 --- /dev/null +++ b/docs/review/street-surface/source-record.json @@ -0,0 +1,80 @@ +{ + "specificationCommit": "d6027758fa8e46ed2073cbb3b6face8ee19847ef", + "runtimeParent": "e4b668d", + "scope": "explicit composition fixture; not a legal arena road plan", + "roadBounds": [ + 960, + 0, + 1344, + 1536 + ], + "sources": [ + { + "asset": "env_ground_plaza", + "path": "Sources/SurveillanceCore/Resources/RuntimeAssets/env_ground_plaza@1x.png", + "sha256": "098bc9dadddd45259cdf76bec9ba0c43835a1cbad14e689440c02780d2711484", + "pixelSize": [ + 128, + 128 + ], + "tileWorldUnits": 128 + }, + { + "asset": "env_ground_asphalt", + "path": "Sources/SurveillanceCore/Resources/RuntimeAssets/env_ground_asphalt@1x.png", + "sha256": "96774980c0b90535f0edfa263b1f5c4841be0be9778be48feaec27e2fd7c1676", + "pixelSize": [ + 128, + 128 + ], + "tileWorldUnits": 128 + } + ], + "strips": [ + { + "x": 960, + "width": 4, + "gray": 0.23, + "y0": 0, + "y1": 1536 + }, + { + "x": 957, + "width": 3, + "gray": 0.66, + "y0": 0, + "y1": 1536 + }, + { + "x": 1020, + "width": 5, + "gray": 0.12, + "y0": 0, + "y1": 1536 + }, + { + "x": 1020, + "width": 1.5, + "gray": 0.59, + "y0": 0, + "y1": 1536 + }, + { + "x": 1060, + "width": 5, + "gray": 0.12, + "y0": 0, + "y1": 1536 + }, + { + "x": 1060, + "width": 1.5, + "gray": 0.59, + "y0": 0, + "y1": 1536 + } + ], + "projection": "existing 45-degree ground rotation, half vertical scale, unchanged zoom; upright art separate", + "crosswalk": "not added: opposite pedestrian landing absent in this fixture", + "authority": "no simulation changes" +} diff --git a/docs/review/subunit-locomotion.md b/docs/review/subunit-locomotion.md new file mode 100644 index 00000000..5716d434 --- /dev/null +++ b/docs/review/subunit-locomotion.md @@ -0,0 +1,13 @@ +# BP-008 sub-unit locomotion correction + +Specification pin: 262f4d66ddb271f5d4199be4ccfa130325f62221. Runtime implementation is in the commit containing this record. + +Observed defect: Simulation records movedUnitsLastTick as the integer floor of actual distance. PresentationSnapshot uses zero in that counter to choose player_idle. At analog input ±2000/32767, unobstructed position changes by less than one world unit each tick, yet the old GameSession snapshot reports idle. The new regression reproduced three player_idle-versus-player_move failures before the implementation change; actual position-change and replay digest assertions passed. + +GameSession now samples the exact fixed-point position before and after an advancing simulation tick. Its presentation snapshot uses that boolean only when the base clip is idle or move, before reaction overrides. Dodge, extraction and terminal clips are not replaced. No advancing tick leaves the prior sample intact; restart and debug scenario replacement clear it. The simulation distance counter, authoritative velocity, events and digest are unchanged. Standalone snapshots without position history retain their existing fallback; the real gameplay scene uses the session projection. + +The regression drives the same commands through GameSession and a bare Simulation, checks digest equality, confirms the whole-unit counter stays zero, requires movement animation for actual sub-unit travel, returns to idle after neutral input, and verifies restart clears the motion sample. This fixes clip selection only; playback speed at partial input, source pose quality, contact slip and the full BP-008 movement matrix remain open. + +Local exact-commit parity: all 21 contract/fixture files match the adopted spec, with the D-065 catalog pin exception; all four pin sources agree. Targeted core checks passed: 17 tests / 4 suites (ContractVersions, AssetCatalog, ClipTiming, ReactionClipTracker). Full core suite previously passed 764 tests at the timing foundation; it was not repeated for this app-only presentation fix and pin adoption. + +Post-fix iOS simulator validation: 83 Swift Testing tests / 13 suites passed in 38.233 seconds, including the previously failing sub-unit regression; three XCTest checks also completed in the run. Destination: iPhone 17 Pro iOS 26.5 simulator. No physical-device testing. diff --git a/docs/review/timing-export/hashes.json b/docs/review/timing-export/hashes.json new file mode 100644 index 00000000..62128ae5 --- /dev/null +++ b/docs/review/timing-export/hashes.json @@ -0,0 +1,5 @@ +{ + "clip-metadata-001.json": "21f734ddaf228e99c3624b8c0d1cbc9a2af252cba1bf15f67986ec649f2daf26", + "clip-metadata-002.candidate.json": "f311628d1362a400ca761207b497a8b609812662442c25245ce3dfbf6e7ed203", + "clip-metadata-002.schema.json": "9f95c8baf6ba134b5c8f5055db37166bbea9fb44af30558ee70358a2cb13e83c" +} diff --git a/docs/review/timing-export/review.md b/docs/review/timing-export/review.md new file mode 100644 index 00000000..46f7a94b --- /dev/null +++ b/docs/review/timing-export/review.md @@ -0,0 +1,20 @@ +# BP-003 reproducible timing export + +OBSERVED: the runtime now has `scripts/convert_clip_timing.py`, a mechanical v1-to-v2 candidate exporter. It reads the pinned target schema explicitly, validates before writing stdout, rejects duplicate JSON keys and mixed representations, and leaves active resources untouched. Requires Python and jsonschema. It does not admit art or replace runtime semantic validation. + +Run from SS-runtime: + +```sh +python3 scripts/convert_clip_timing.py Sources/SurveillanceCore/Resources/contracts/clip-metadata-001.json --schema ../SS-specs/contracts/clip-metadata-002.schema.json > /tmp/clip-metadata-002.candidate.json +python3 scripts/test_clip_timing_export.py --schema ../SS-specs/contracts/clip-metadata-002.schema.json +``` + +Use a separate output path: shell redirection truncates its destination before the converter starts. Do not redirect onto the source. + +OBSERVED: two export tests passed. Complete round-trip comparison preserved all non-timing fields, full frame order, anchors, events, cancellation rules and loop flags across 59 clips. All 218 facing selections retained exact rational duration and 60 Hz lifetime. Two CLI runs emitted identical bytes. Eighteen invalid inputs (including boolean/fractional fps, mixed timing, unknown fields, invalid/duplicate/empty facings, duplicate JSON keys, wrong version and malformed JSON) emitted no candidate. + +OBSERVED: eight focused Swift timing/decoder tests passed in 0.428 seconds. No Swift, bundled resources, gameplay identities or specification pin changed in this step. This is not a new full-core or simulator run; the preceding renderer integration evidence remains in `docs/review/v2-renderer-integration`. + +The source specification is 56a5a5da1d87491d23df86731cc01a5acd868d26, `animation-timing-migration.md` under BP-003. This implements its existing export/round-trip requirement without new design choices. Source, schema and candidate SHA-256 values are in hashes.json. + +OPEN: coordinated active-resource/version/catalog/export admission; benchmark-quality source animation; camera family completion; projection/occlusion and encounter acceptance; native visual review and physical-device performance. A mechanically valid export does not establish visual quality. Active clip delivery remains v1. diff --git a/docs/review/upright-environment/BP010-field-encounter-record.txt b/docs/review/upright-environment/BP010-field-encounter-record.txt new file mode 100644 index 00000000..79fcd73a --- /dev/null +++ b/docs/review/upright-environment/BP010-field-encounter-record.txt @@ -0,0 +1,7 @@ +Seed 1; normal GameSession commands from DebugAutopilot run; no scenario seeding. +tick=4248, player=1327,1495, facing=w +enemies=4, projectiles=1, telegraphs=0 +Production GameScene/HUD/fog/ground/projection; painted neutral Player and complete Camera candidate family. +Same unedited snapshot across control/dark/paired and normal/Reduced Motion. +digest=d3802f536474ccaed97abd8a28a2fe24692cc62cf881097f9085ee099e84ddc5; candidate source: docs/review/camera-clips. +Static paused comparison; not movement-animation, final projection, dense-scene or damage-effect acceptance. \ No newline at end of file diff --git a/docs/review/upright-environment/BP010-legal-projected-100-reduced-false.png b/docs/review/upright-environment/BP010-legal-projected-100-reduced-false.png new file mode 100644 index 00000000..a7b76369 Binary files /dev/null and b/docs/review/upright-environment/BP010-legal-projected-100-reduced-false.png differ diff --git a/docs/review/upright-environment/BP010-legal-projected-100-reduced-true.png b/docs/review/upright-environment/BP010-legal-projected-100-reduced-true.png new file mode 100644 index 00000000..15c7fdae Binary files /dev/null and b/docs/review/upright-environment/BP010-legal-projected-100-reduced-true.png differ diff --git a/docs/review/upright-environment/BP010-legal-projected-125-reduced-false.png b/docs/review/upright-environment/BP010-legal-projected-125-reduced-false.png new file mode 100644 index 00000000..e0b1931b Binary files /dev/null and b/docs/review/upright-environment/BP010-legal-projected-125-reduced-false.png differ diff --git a/docs/review/upright-environment/BP010-legal-projected-125-reduced-true.png b/docs/review/upright-environment/BP010-legal-projected-125-reduced-true.png new file mode 100644 index 00000000..e94533e9 Binary files /dev/null and b/docs/review/upright-environment/BP010-legal-projected-125-reduced-true.png differ diff --git a/docs/review/upright-environment/BP010-legal-visibility-100-reduced-false.json b/docs/review/upright-environment/BP010-legal-visibility-100-reduced-false.json new file mode 100644 index 00000000..0421e735 --- /dev/null +++ b/docs/review/upright-environment/BP010-legal-visibility-100-reduced-false.json @@ -0,0 +1,466 @@ +{ + "actors" : [ + { + "bounds" : [ + 1597.989013671875, + 728.47698974609375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1202.010009765625, + 824.64398193359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1394.342041015625, + 1056.574951171875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1190.696044921875, + 1384.6719970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1643.2440185546875, + 1429.927001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1643.2440185546875, + 1294.1629638671875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2005.282958984375, + 1475.1820068359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2299.43896484375, + 1260.2220458984375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1207.666015625, + 1409.4210205078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1084.6300048828125, + 1266.5860595703125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1280.498046875, + 1374.4189453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1452.324951171875, + 1271.5350341796875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1666.5789794921875, + 1283.9100341796875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1381.1710205078125, + 532.469970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1385.3719482421875, + 639.4229736328125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1153.926025390625, + 598.4110107421875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1449.93994140625, + 605.56597900390625, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1429.781005859375, + 740.802978515625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1433.4549560546875, + 793.1710205078125, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1219.949951171875, + 774.7030029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1484.491943359375, + 875.15301513671875, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1563.1610107421875, + 1166.43994140625, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1241.6070556640625, + 1317.3590087890625, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2128.845947265625, + 1230.0789794921875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2041.5670166015625, + 1323.5009765625, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1750.7239990234375, + 1321.073974609375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2639.821044921875, + 1098.156005859375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 887.1669921875, + 412.59500122070312, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 781.79400634765625, + 742.301025390625, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1203.949951171875, + 808.24200439453125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1171.949951171875, + 861.260986328125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1549.989013671875, + 1005.260986328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1194.5780029296875, + 1108.2220458984375, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1366.2249755859375, + 1341.927001953125, + 256, + 192 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1627.2440185546875, + 1144.907958984375, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1928.0279541015625, + 1170.280029296875, + 127.9998779296875, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1882.77294921875, + 1328.6719970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2186.302001953125, + 1275.41796875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2367.322021484375, + 1365.927001953125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2503.0859375, + 1015.77099609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2774.614990234375, + 1151.5350341796875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/upright-environment/BP010-legal-visibility-100-reduced-true.json b/docs/review/upright-environment/BP010-legal-visibility-100-reduced-true.json new file mode 100644 index 00000000..0421e735 --- /dev/null +++ b/docs/review/upright-environment/BP010-legal-visibility-100-reduced-true.json @@ -0,0 +1,466 @@ +{ + "actors" : [ + { + "bounds" : [ + 1597.989013671875, + 728.47698974609375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1202.010009765625, + 824.64398193359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1394.342041015625, + 1056.574951171875, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1190.696044921875, + 1384.6719970703125, + 64, + 96 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1643.2440185546875, + 1429.927001953125, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1643.2440185546875, + 1294.1629638671875, + 64, + 96 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2005.282958984375, + 1475.1820068359375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2299.43896484375, + 1260.2220458984375, + 64, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1207.666015625, + 1409.4210205078125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 1084.6300048828125, + 1266.5860595703125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1280.498046875, + 1374.4189453125, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1452.324951171875, + 1271.5350341796875, + 64, + 64 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1666.5789794921875, + 1283.9100341796875, + 64, + 64 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1381.1710205078125, + 532.469970703125, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1385.3719482421875, + 639.4229736328125, + 48, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1153.926025390625, + 598.4110107421875, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1449.93994140625, + 605.56597900390625, + 32, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1429.781005859375, + 740.802978515625, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1433.4549560546875, + 793.1710205078125, + 48, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1219.949951171875, + 774.7030029296875, + 96, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1484.491943359375, + 875.15301513671875, + 192, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1563.1610107421875, + 1166.43994140625, + 128, + 48 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1241.6070556640625, + 1317.3590087890625, + 64, + 128 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2128.845947265625, + 1230.0789794921875, + 128, + 48 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2041.5670166015625, + 1323.5009765625, + 47.9998779296875, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1750.7239990234375, + 1321.073974609375, + 64, + 64 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2639.821044921875, + 1098.156005859375, + 96, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 887.1669921875, + 412.59500122070312, + 128, + 511.99996948242188 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 781.79400634765625, + 742.301025390625, + 383.99993896484375, + 192 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1203.949951171875, + 808.24200439453125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1171.949951171875, + 861.260986328125, + 192, + 384 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1549.989013671875, + 1005.260986328125, + 160, + 96 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1194.5780029296875, + 1108.2220458984375, + 192, + 320 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1366.2249755859375, + 1341.927001953125, + 256, + 192 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1627.2440185546875, + 1144.907958984375, + 96, + 224 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 1928.0279541015625, + 1170.280029296875, + 127.9998779296875, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1882.77294921875, + 1328.6719970703125, + 128, + 128 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2186.302001953125, + 1275.41796875, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2367.322021484375, + 1365.927001953125, + 64, + 144 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2503.0859375, + 1015.77099609375, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 2774.614990234375, + 1151.5350341796875, + 64, + 256 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "zoom" : 1 +} \ No newline at end of file diff --git a/docs/review/upright-environment/BP010-legal-visibility-125-reduced-false.json b/docs/review/upright-environment/BP010-legal-visibility-125-reduced-false.json new file mode 100644 index 00000000..62a83745 --- /dev/null +++ b/docs/review/upright-environment/BP010-legal-visibility-125-reduced-false.json @@ -0,0 +1,466 @@ +{ + "actors" : [ + { + "bounds" : [ + 1622.896728515625, + 536.09625244140625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1127.9228515625, + 656.304931640625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.337890625, + 946.21875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1113.780517578125, + 1356.3399658203125, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1679.46533203125, + 1412.90869140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1679.46533203125, + 1243.2037353515625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2132.01416015625, + 1469.4775390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2499.709228515625, + 1200.777587890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1134.992919921875, + 1387.2762451171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 981.1978759765625, + 1208.7325439453125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1226.032958984375, + 1343.523681640625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1440.816650390625, + 1214.9188232421875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1708.634033203125, + 1230.3875732421875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1351.8741455078125, + 291.08746337890625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1357.1253662109375, + 424.7786865234375, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1067.81787109375, + 373.5137939453125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1437.8353271484375, + 382.45745849609375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1412.63671875, + 551.50372314453125, + 200, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1417.2291259765625, + 616.9637451171875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1150.347900390625, + 593.8787841796875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1481.025390625, + 719.4412841796875, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1579.3616943359375, + 1083.5499267578125, + 159.9998779296875, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1177.419189453125, + 1272.19873046875, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2286.4677734375, + 1163.0987548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2177.369140625, + 1279.876220703125, + 59.999755859375, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1813.8154296875, + 1276.842529296875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2925.186767578125, + 998.195068359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 734.369140625, + 141.2437744140625, + 160, + 639.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 602.6529541015625, + 553.37628173828125, + 479.9998779296875, + 239.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1130.347900390625, + 635.802490234375, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1090.347900390625, + 702.076171875, + 240, + 480 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1562.896728515625, + 882.076171875, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1118.6329345703125, + 1010.777587890625, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1333.191650390625, + 1302.90869140625, + 320, + 240 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1659.4654541015625, + 1056.635009765625, + 119.9998779296875, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2035.4453125, + 1088.35009765625, + 159.999755859375, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1978.876708984375, + 1286.3399658203125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2358.287841796875, + 1219.7724609375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2584.56298828125, + 1332.90869140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2754.267822265625, + 895.2137451171875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3093.67919921875, + 1064.9188232421875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/upright-environment/BP010-legal-visibility-125-reduced-true.json b/docs/review/upright-environment/BP010-legal-visibility-125-reduced-true.json new file mode 100644 index 00000000..62a83745 --- /dev/null +++ b/docs/review/upright-environment/BP010-legal-visibility-125-reduced-true.json @@ -0,0 +1,466 @@ +{ + "actors" : [ + { + "bounds" : [ + 1622.896728515625, + 536.09625244140625, + 80, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-2" + }, + { + "bounds" : [ + 1127.9228515625, + 656.304931640625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-3" + }, + { + "bounds" : [ + 1368.337890625, + 946.21875, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-4" + }, + { + "bounds" : [ + 1113.780517578125, + 1356.3399658203125, + 80, + 120 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-camera-5" + }, + { + "bounds" : [ + 1679.46533203125, + 1412.90869140625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-6" + }, + { + "bounds" : [ + 1679.46533203125, + 1243.2037353515625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-7" + }, + { + "bounds" : [ + 2132.01416015625, + 1469.4775390625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-8" + }, + { + "bounds" : [ + 2499.709228515625, + 1200.777587890625, + 80, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-camera-9" + }, + { + "bounds" : [ + 1134.992919921875, + 1387.2762451171875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-player" + }, + { + "bounds" : [ + 981.1978759765625, + 1208.7325439453125, + 80, + 80 + ], + "contained" : false, + "intersects" : true, + "name" : "sprite-enemy-144" + }, + { + "bounds" : [ + 1226.032958984375, + 1343.523681640625, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-148" + }, + { + "bounds" : [ + 1440.816650390625, + 1214.9188232421875, + 80, + 80 + ], + "contained" : true, + "intersects" : true, + "name" : "sprite-enemy-150" + }, + { + "bounds" : [ + 1708.634033203125, + 1230.3875732421875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "sprite-enemy-151" + }, + { + "bounds" : [ + 1351.8741455078125, + 291.08746337890625, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-2-env_prop_street_tree" + }, + { + "bounds" : [ + 1357.1253662109375, + 424.7786865234375, + 60, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-3-env_prop_newsbox" + }, + { + "bounds" : [ + 1067.81787109375, + 373.5137939453125, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-4-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 1437.8353271484375, + 382.45745849609375, + 40, + 200 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-5-env_prop_trolley_pole" + }, + { + "bounds" : [ + 1412.63671875, + 551.50372314453125, + 200, + 119.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-6-env_prop_bus_shelter" + }, + { + "bounds" : [ + 1417.2291259765625, + 616.9637451171875, + 60, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-7-env_prop_signal_mast" + }, + { + "bounds" : [ + 1150.347900390625, + 593.8787841796875, + 120, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-8-env_prop_bike_rack" + }, + { + "bounds" : [ + 1481.025390625, + 719.4412841796875, + 240, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-9-env_prop_parklet" + }, + { + "bounds" : [ + 1579.3616943359375, + 1083.5499267578125, + 159.9998779296875, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-12-env_prop_barricade" + }, + { + "bounds" : [ + 1177.419189453125, + 1272.19873046875, + 80, + 160 + ], + "contained" : true, + "intersects" : true, + "name" : "environment-upright-14-env_prop_seismic_brace" + }, + { + "bounds" : [ + 2286.4677734375, + 1163.0987548828125, + 160, + 60 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-15-env_prop_barricade" + }, + { + "bounds" : [ + 2177.369140625, + 1279.876220703125, + 59.999755859375, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-16-env_prop_signal_mast" + }, + { + "bounds" : [ + 1813.8154296875, + 1276.842529296875, + 80, + 80 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-17-env_prop_hydrant_meters" + }, + { + "bounds" : [ + 2925.186767578125, + 998.195068359375, + 120, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-20-env_prop_street_tree" + }, + { + "bounds" : [ + 734.369140625, + 141.2437744140625, + 160, + 639.9998779296875 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_01_residential_west" + }, + { + "bounds" : [ + 602.6529541015625, + 553.37628173828125, + 479.9998779296875, + 239.99993896484375 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_02_residential_north" + }, + { + "bounds" : [ + 1130.347900390625, + 635.802490234375, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_03_transit_kiosk" + }, + { + "bounds" : [ + 1090.347900390625, + 702.076171875, + 240, + 480 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_04_civic_west" + }, + { + "bounds" : [ + 1562.896728515625, + 882.076171875, + 200, + 120 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_05_civic_dais" + }, + { + "bounds" : [ + 1118.6329345703125, + 1010.777587890625, + 240, + 400 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_06_service_yard_a" + }, + { + "bounds" : [ + 1333.191650390625, + 1302.90869140625, + 320, + 240 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_07_service_yard_b" + }, + { + "bounds" : [ + 1659.4654541015625, + 1056.635009765625, + 119.9998779296875, + 280 + ], + "contained" : false, + "intersects" : true, + "name" : "environment-upright-env_solid_08_service_divider" + }, + { + "bounds" : [ + 2035.4453125, + 1088.35009765625, + 159.999755859375, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_09_grid_island_a" + }, + { + "bounds" : [ + 1978.876708984375, + 1286.3399658203125, + 160, + 160 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_10_grid_island_b" + }, + { + "bounds" : [ + 2358.287841796875, + 1219.7724609375, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_11_court_column_a" + }, + { + "bounds" : [ + 2584.56298828125, + 1332.90869140625, + 80, + 180 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_12_court_column_b" + }, + { + "bounds" : [ + 2754.267822265625, + 895.2137451171875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_13_phoenix_west" + }, + { + "bounds" : [ + 3093.67919921875, + 1064.9188232421875, + 80, + 320 + ], + "contained" : false, + "intersects" : false, + "name" : "environment-upright-env_solid_14_phoenix_east" + } + ], + "cameras" : 8, + "enemies" : 4, + "projectiles" : [ + { + "hostile" : true, + "id" : 163, + "visibleOrigin" : true + } + ], + "tick" : 4248, + "zoom" : 1.25 +} \ No newline at end of file diff --git a/docs/review/upright-environment/README.md b/docs/review/upright-environment/README.md new file mode 100644 index 00000000..a4ee8660 --- /dev/null +++ b/docs/review/upright-environment/README.md @@ -0,0 +1,13 @@ +# Upright environment diagnostic — 2026-10-15 + +Focused BenchmarkCaptureTests/testCaptureCameraFieldsInReplayableEncounter passed (1 test, 0 failures), Xcode result 21-57-18. Specs validation passed; runtime diff whitespace check passed. + +Building and physical-prop sprites are lifted out of the ground squash in the proposed projection capture. Existing sizes, anchors and depth are preserved to isolate the transformation. Source ground-plane art remains projected. + +Visual inspection: buildings now stand upright, but visible bases disagree with ground footprints; registration, depth/occlusion, arena-edge framing and legacy enemy source art remain unresolved. No shipping projection or art admission is established. Production outlines remain in this diagnostic. A paused encounter does not establish moving threat lead time or device performance. + +## Registration measurement + +The service-yard-B canvas is centered on the AABB and sized to its width/height. Hand-observed slab corners suggest this cannot be corrected by translation alone: a front-corner anchored uniform-scale fit has endpoint errors of approximately 47 and 72 logical units. These are provisional observations, not accepted ground anchors; the hidden rear and potentially clipped right side remain unverified. The slab perimeter also needs distinction from the wall footprint. See service-building-registration.json and service-building-landmarks.png. + +Next implementation must use an explicitly authored footprint-compatible base, not stretch the existing image or change collision. The new spec records these admission rules. The diagnostic script verifies its fit algebra against an exact synthetic case and never modifies source art or simulation. diff --git a/docs/review/upright-environment/before.png b/docs/review/upright-environment/before.png new file mode 100644 index 00000000..3d2fe13c Binary files /dev/null and b/docs/review/upright-environment/before.png differ diff --git a/docs/review/upright-environment/index.html b/docs/review/upright-environment/index.html new file mode 100644 index 00000000..8299c056 --- /dev/null +++ b/docs/review/upright-environment/index.html @@ -0,0 +1 @@ +Environment projection comparison

Environment projection comparison

Same replayed hostile encounter. Buildings and physical props now remain upright; ground art follows the projected plane. This is a diagnostic capture, not the approved benchmark scene.

Before

After · 1×

After · 1.25×

Focused renderer test: 1 passed, 0 failed. Remaining visible defects: buildings do not align with their ground footprints, depth/occlusion and arena-edge framing need correction, and legacy enemy art remains unsuitable. Production outlines are present in this encounter diagnostic.

\ No newline at end of file diff --git a/docs/review/upright-environment/service-building-landmarks.png b/docs/review/upright-environment/service-building-landmarks.png new file mode 100644 index 00000000..2ff21955 Binary files /dev/null and b/docs/review/upright-environment/service-building-landmarks.png differ diff --git a/docs/review/upright-environment/service-building-registration.json b/docs/review/upright-environment/service-building-registration.json new file mode 100644 index 00000000..f572154f --- /dev/null +++ b/docs/review/upright-environment/service-building-registration.json @@ -0,0 +1,68 @@ +{ + "status": "PROVISIONAL_LANDMARK_DIAGNOSTIC_NOT_ADMITTED", + "assetId": "env_solid_07_service_yard_b", + "sourceSHA256": "ce95b12fc9f3b3bde1c15d50f3f224d58bc53dffba4dfdcc4f7a3e4c41056616", + "authoritativeSolid": { + "id": "solid-07-service-yard-b", + "center": { + "x": 1536, + "y": 1344 + }, + "halfSize": { + "x": 128, + "y": 96 + } + }, + "sourcePixelConvention": "top-left origin, x right, y down", + "provisionalVisibleSlabLandmarks": { + "front": [ + 145, + 172 + ], + "left": [ + 60, + 120 + ], + "right": [ + 201, + 133 + ] + }, + "landmarkUncertaintyPixels": 2, + "unverified": [ + "rear ground corner hidden", + "right edge may be source-clipped", + "source yaw not documented" + ], + "fits": [ + { + "uniformScale": 1.9701645130550727, + "edgeEndpointErrorsLogical": [ + 46.900815403737354, + 72.00035656343107 + ], + "rmsEndpointErrorLogical": 60.76075143872341, + "correspondence": "front-SW_left-NW_right-SE", + "targetEdgeVectors": [ + [ + -135.7645019878171, + 67.88225099390856 + ], + [ + 181.01933598375618, + 90.50966799187809 + ] + ], + "cornerPerturbationRMSRange": [ + 51.051440194172, + 70.46755066920872 + ] + } + ], + "limitations": [ + "Perturbation range samples uncertainty-box corners, not a proven bound", + "Slab perimeter may differ from wall footprint; no collision fit inferred", + "Source and renderer contact require visual review; no universal acceptance tolerance" + ], + "decision": "Do not treat center-to-base translation as a complete fix; resolve base semantics and source orientation before runtime admission." +} diff --git a/docs/review/v2-renderer-integration/ios-summary.json b/docs/review/v2-renderer-integration/ios-summary.json new file mode 100644 index 00000000..7e4be337 --- /dev/null +++ b/docs/review/v2-renderer-integration/ios-summary.json @@ -0,0 +1,10 @@ +{ + "source": "Test-SSRuntime-2026.10.14_14-49-10--0700.xcresult", + "actionStatus": "succeeded", + "testExecutions": 91, + "target": "iPhone 17 Pro", + "targetID": "CACB3927-A76E-43A5-9ACA-C389EB38C0C3", + "platform": "iOS Simulator", + "os": "26.5", + "testFailureSummaries": [] +} diff --git a/docs/review/v2-renderer-integration/review.md b/docs/review/v2-renderer-integration/review.md new file mode 100644 index 00000000..c823ba1c --- /dev/null +++ b/docs/review/v2-renderer-integration/review.md @@ -0,0 +1,15 @@ +# BP-003 v2 timing through the actual renderer + +Runtime base: e78f38e. Spec pin: 56a5a5da1d87491d23df86731cc01a5acd868d26. Active production delivery remains v1. + +SpriteLibrary and WorldRenderer now accept an explicitly supplied frame library while retaining their existing bundled defaults. This lets the integration test load a strict v2 catalog through the same decoder and use the actual renderer, instead of merely testing ClipTiming arithmetic or calling an isolated action constructor. + +The fixture mechanically converts existing metadata to v2 and gives the Player hurt clip independent directional holds at 60 units/second: north [1,2,3], east [2,4,6], south [3,6,9], west [4,8,12]. These are technical fixtures, not newly approved artistic cadence. A west-facing event starts at tick 100 and expires at 124. First rendering at 104 must show actor_player_hurt_w_02; tick 111 remains on that frame; 112 shows w_03. A new west-facing event at 112 restarts at w_01 and expires at 136. Live east-facing movement must not retarget the reaction. Reduced Motion selects w_03; expiry resumes the east-facing state clip; reset removes the node. + +Expected pixels come from independently named delivered files rather than calculating the expected frame with the same timing method under test. Repeated renders at the same tick prove phase stability. The test does not use replacement art or change authoritative state. Production construction still loads the same bundled metadata; each supplied SpriteLibrary owns its own immutable frame map and caches. + +This closes the v2 data-to-renderer functional test gap. It does not close native-scale visual review of new art, complete 16-frame character delivery, camera clips, active v2 resource/export/version migration or physical-device performance. + +Validation: 8 focused core tests in ClipMetadataV2Tests and ClipTimingTests passed in 1.052 seconds. Simulator action succeeded with 91 test executions (including parameterized cases), no test-failure summaries. Swift Testing console reported 86 tests / 13 suites passed in 45.591 seconds; the suite also includes three XCTest benchmark/timing checks. Exact result identity and simulator destination are recorded in ios-summary.json. No core implementation changed in this slice; no new full core run was necessary after the prior full/focused evidence. + +Core command: `swift test --disable-sandbox --cache-path ../swift-cache --config-path ../swift-config --security-path ../swift-security --filter 'ClipMetadataV2Tests|ClipTimingTests'`. Simulator tests launched through the existing Xcode scheme. No physical-device test. diff --git a/intent/2026-10-13-device-playtest-repair.md b/intent/2026-10-13-device-playtest-repair.md new file mode 100644 index 00000000..394d739e --- /dev/null +++ b/intent/2026-10-13-device-playtest-repair.md @@ -0,0 +1,40 @@ +# Device playtest repair intent + +Date: 2026-10-13 +Status: accepted + +## Reported failure +User reports immediate heavy stuttering, broken animations, object clipping, glitching surveillance cameras, and whole-view jumps on the physical iPhone Release build from runtime main 6e42cb47e8be10cffcc8398cbf9e2fff5fbe7dac. Movement, Dodge, pause/resume, and restart passed the preceding manual checks. Device performance and presentation acceptance fail; no release-readiness claim is made. + +## Verified source findings +- GameScene.redraw assigns the view camera directly to PresentationCamera.center. The center applies heading-dependent horizontal look-ahead without persistent smoothing or dead-zone state. This conflicts with animation.md section 9 and arena-layout.md camera framing. +- WorldRenderer.renderCameras builds an unoccluded conePath from range, heading and angle, with no solid geometry input. The displayed field can extend through cover even though authoritative LOS uses occlusion. +- OutlineTextures.outline synchronously reads texture.cgImage and generates outlined pixels on cache misses during rendering. This is a performance hypothesis, not a measured root cause. +- GameScene.update takes one simulation step per delivered frame while sprite clips use timed SKActions. Frame loss can desynchronize apparent motion; scheduling changes require preserving fixed-tick authority and pause/intro/hit-stop semantics. + +## Proposed repair scope +1. Measure frame-time distribution and main-thread hot spots on the connected device before tuning. Preserve a reproducible seed and input sequence where possible. +2. Implement presentation-only camera dead zone, bounded look-ahead smoothing, and arena clamping per the pinned spec. Keep RulesViewport and simulation coordinates unchanged. +3. Project surveillance fields from authoritative camera/solid geometry; verify visible cover boundaries against detection. Investigate camera head/state animation separately. +4. Reproduce broken animation and object clipping, checking anchors, layer order, clip transitions, node lifetime, and outline synchronization. Fix demonstrated spec violations, not unspecified art redesign. +5. Remove measured runtime rendering stalls, with explicit bounded preload/cache behavior where appropriate. Do not sacrifice geometry truth or authored content to get a faster frame. +6. Add regression coverage for demonstrated gaps, file the required coverage defect, run core and Debug/Release app checks, then install the corrected Release build for the same device playtest. + +## Acceptance +- Camera follows without direction-change snaps and honors the specified 76 x 50 dead zone and bounded look-ahead. +- Visible camera fields agree with solid occlusion and detection. +- Reproduced animation/clipping failures no longer occur in the same scenario. +- Record actual device/model, build, scenario and frame p95 against C-003 <=16.67 ms; do not label an unmeasured run passed. +- Replay golden states and identities remain unchanged for presentation-only fixes. Any necessary gameplay change requires a separate spec decision/version review. + +## Authority and next step +Pinned spec 2377b99c6b6d1654e2cb976ee1b7e07b75c77e1a; constitution Articles III, IV, VII, VIII; animation.md section 9; arena-layout.md camera framing; C-003. +Runtime AGENTS.md requires human acceptance of a new non-trivial runtime-only intent before implementation. Accepted by the user on 2026-10-13: “ok approved. we may need a qa pass”. Include broader QA and device retest before claiming success. + +## Expanded repair authorization + +On 2026-10-13 the user requested: “go ahead and fix these issues, add the damage diagnostics and do a full qa pass before we test again”. This includes confirmed asset registration/fragment defects, visible collision footprint repair, and opt-in local damage-event/replay diagnostics. No further device retest is requested until automated and visual QA has been completed; remaining failures must be reported explicitly. + +## Phases 1–2 authorization + +User accepted spec deepening and combat fixes on 2026-10-13. D-103 versions collision/event changes as ruleset-008, with fixture review; this supersedes the original presentation-only constraint only for the specified combat repairs. Art and phase-3 effects remain deferred. diff --git a/project.yml b/project.yml index 98bcf7dc..a2dd12d7 100644 --- a/project.yml +++ b/project.yml @@ -4,11 +4,18 @@ options: deploymentTarget: iOS: "18.0" settings: + configs: + Debug: + SWIFT_ACTIVE_COMPILATION_CONDITIONS: "$(inherited) DEBUG $(SS_RENDERER_TEST_CONDITIONS)" base: SWIFT_VERSION: "6.0" TARGETED_DEVICE_FAMILY: "1" SUPPORTS_MACCATALYST: NO IPHONEOS_DEPLOYMENT_TARGET: "18.0" + # Test-only renderer injection is available in optimized test builds, too. + # Archive/build defaults keep this empty; CI enables it explicitly for tests. + SS_RENDERER_TEST_CONDITIONS: "" + SWIFT_ACTIVE_COMPILATION_CONDITIONS: "$(inherited) $(SS_RENDERER_TEST_CONDITIONS)" # SurveillanceCore is consumed as the local Swift package, not rebuilt as an # Xcode framework target. `BundledResource` loads the spec contracts and # fixtures through `Bundle.module`, which only exists for SwiftPM resource @@ -62,6 +69,9 @@ targets: SSRuntimeTests: type: bundle.unit-test platform: iOS + settings: + base: + GENERATE_INFOPLIST_FILE: YES sources: - path: AppTests dependencies: diff --git a/scripts/audit_benchmark_projection.py b/scripts/audit_benchmark_projection.py new file mode 100644 index 00000000..b2aa7cd6 --- /dev/null +++ b/scripts/audit_benchmark_projection.py @@ -0,0 +1,58 @@ +"""Offline geometry diagnostic for BP-007's existing comparison, not runtime proof.""" +import argparse +import hashlib +import json +import math +from pathlib import Path + +R = math.sqrt(0.5) + + +def project(x, y): + return R * (x - y), R * (x + y) / 2 + + +def inverse(x, y): + return (x + 2 * y) / (2 * R), (2 * y - x) / (2 * R) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--output', type=Path, required=True) + args = parser.parse_args() + directions = [('E', 1, 0), ('NE', 1, 1), ('N', 0, 1), ('NW', -1, 1), + ('W', -1, 0), ('SW', -1, -1), ('S', 0, -1), ('SE', 1, -1)] + rows = [] + for name, x, y in directions: + length = math.hypot(x, y) + world = x / length, y / length + screen = project(*world) + recovered = inverse(*screen) + assert all(math.isclose(a, b, abs_tol=1e-12) for a, b in zip(world, recovered)) + rows.append(dict(worldDirection=name, worldUnitVector=world, + projectedVector=screen, + screenAngleDegrees=math.degrees(math.atan2(screen[1], screen[0])))) + # Unequal projection axes change apparent speed; never normalize this away in world rules. + assert math.isclose(math.hypot(*project(R, R)), 0.5) + assert math.isclose(math.hypot(*project(R, -R)), 1.0) + down = inverse(0, -1) + down_world = [v / math.hypot(*down) for v in down] + assert math.isclose(down_world[0], -R) and math.isclose(down_world[1], -R) + source = Path(__file__).resolve().parents[1] / 'AppTests/BenchmarkCaptureTests.swift' + report = dict(status='OFFLINE_COMPARISON_GEOMETRY_NOT_RUNTIME_ACCEPTANCE', + coordinateConvention='SpriteKit scene: right +x, up +y', + transform='rotate +45 degrees then scale y by 0.5; translation omitted for vectors', + fixtureSourceSHA256=hashlib.sha256(source.read_bytes()).hexdigest(), + directions=rows, screenDownWorldUnitVector=down_world, + checks=['eight-direction inverse round trips', 'projected diagonal speed ratio', + 'screen-down inverse direction'], + limitations=['Independent algebra, not execution of the Swift helper', + 'No facing sector or hysteresis policy selected', + 'No input conversion, source yaw, occlusion or live travel acceptance']) + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(report, indent=2) + '\n') + print('PASS: 8 direction round trips; projected speed ratio; screen-down maps to world SW') + + +if __name__ == '__main__': + main() diff --git a/scripts/audit_building_registration.py b/scripts/audit_building_registration.py new file mode 100644 index 00000000..27ff4ff4 --- /dev/null +++ b/scripts/audit_building_registration.py @@ -0,0 +1,76 @@ +"""Measure a proposed source-base correspondence; never modifies art or collision.""" +import hashlib +import json +import math +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +SOURCE = ROOT / 'Sources/SurveillanceCore/Resources/RuntimeAssets/env_solid_07_service_yard_b@1x.png' +ARENA = ROOT / 'Sources/SurveillanceCore/Resources/contracts/civic-seam-arena-004.json' + + +def projected(x, y): + r = math.sqrt(0.5) + return (r * (x - y), r * (x + y) / 2) + + +def fit(source, target): + # Front-corner anchored fit: only uniform positive scale is permitted. + scale = sum(a*b for p,q in zip(source,target) for a,b in zip(p,q)) / sum(a*a for p in source for a in p) + residuals = [math.dist(tuple(scale*a for a in p), q) for p,q in zip(source,target)] + return {'uniformScale':scale, 'edgeEndpointErrorsLogical':residuals, + 'rmsEndpointErrorLogical':math.sqrt(sum(e*e for e in residuals)/len(residuals))} + + +def main(): + import argparse + parser=argparse.ArgumentParser(description=__doc__) + parser.add_argument('--output',type=Path,required=True) + args=parser.parse_args() + arena=json.loads(ARENA.read_text()) + # Locate the authoritative record without substituting image dimensions. + def records(value): + if isinstance(value,dict): + yield value + for v in value.values(): yield from records(v) + elif isinstance(value,list): + for v in value: yield from records(v) + solid=next(r for r in records(arena) if r.get('id')=='solid-07-service-yard-b') + hx,hy=solid['halfSize']['x'],solid['halfSize']['y'] + front=projected(-hx,-hy) + targets=[tuple(a-b for a,b in zip(projected(x,y),front)) for x,y in [(-hx,hy),(hx,-hy)]] + # Hand-observed provisional slab edges, NOT auto-derived from alpha. + points={'front':[145,172], 'left':[60,120], 'right':[201,133]} + sf=points['front'] + vectors=[(points[k][0]-sf[0],sf[1]-points[k][1]) for k in ('left','right')] + cases=[] + for label,edges in [('front-SW_left-NW_right-SE',targets)]: + result=fit(vectors,edges) + # Robustness envelope: perturb every observed edge vector by up to 4px + # (two endpoints each with provisional +/-2px coordinate uncertainty). + alternatives=[] + import itertools + for d in itertools.product((-4,4),repeat=4): + perturbed=[(vectors[i][0]+d[2*i], vectors[i][1]+d[2*i+1]) for i in range(2)] + alternatives.append(fit(perturbed,edges)['rmsEndpointErrorLogical']) + result.update(correspondence=label,targetEdgeVectors=edges, + cornerPerturbationRMSRange=[min(alternatives),max(alternatives)]) + cases.append(result) + # Numerical method check uses an exact known scale, separate from art evidence. + check=fit([(-3,2),(4,2)],[(-9,6),(12,6)]) + assert check['uniformScale']==3 and check['rmsEndpointErrorLogical']==0 + report={'status':'PROVISIONAL_LANDMARK_DIAGNOSTIC_NOT_ADMITTED', + 'assetId':'env_solid_07_service_yard_b','sourceSHA256':hashlib.sha256(SOURCE.read_bytes()).hexdigest(), + 'authoritativeSolid':solid,'sourcePixelConvention':'top-left origin, x right, y down', + 'provisionalVisibleSlabLandmarks':points,'landmarkUncertaintyPixels':2, + 'unverified':['rear ground corner hidden','right edge may be source-clipped','source yaw not documented'], + 'fits':cases,'limitations':['Perturbation range samples uncertainty-box corners, not a proven bound', + 'Slab perimeter may differ from wall footprint; no collision fit inferred', + 'Source and renderer contact require visual review; no universal acceptance tolerance'], + 'decision':'Do not treat center-to-base translation as a complete fix; resolve base semantics and source orientation before runtime admission.'} + args.output.parent.mkdir(parents=True,exist_ok=True) + args.output.write_text(json.dumps(report,indent=2)+'\n') + print(json.dumps(cases,indent=2)) + + +if __name__=='__main__': main() diff --git a/scripts/check_benchmark_projection.swift b/scripts/check_benchmark_projection.swift new file mode 100644 index 00000000..da9e073e --- /dev/null +++ b/scripts/check_benchmark_projection.swift @@ -0,0 +1,39 @@ +// BP-007 host SpriteKit diagnostic. No app or simulation acceptance is implied. +import Foundation +import SpriteKit + +let scene = SKScene(size: CGSize(width: 704, height: 326)) +let center = CGPoint(x: 736, y: 654) +let squash = SKNode(), rotation = SKNode(), translation = SKNode() +squash.position = center +squash.yScale = 0.5 +rotation.zRotation = .pi / 4 +translation.position = CGPoint(x: -center.x, y: -center.y) +scene.addChild(squash) +squash.addChild(rotation) +rotation.addChild(translation) +let r = CGFloat(0.5).squareRoot() +let directions: [(CGFloat, CGFloat)] = [(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1)] +var samples = 0 +var maximumError: CGFloat = 0 +for (x, y) in directions { + for magnitude: CGFloat in [0.25, 0.5, 1, 120] { + let length = hypot(x, y) + let dx = x / length * magnitude, dy = y / length * magnitude + let point = CGPoint(x: center.x + dx, y: center.y + dy) + let actual = translation.convert(point, to: scene) + let expected = CGPoint(x: center.x + r * (dx - dy), y: center.y + r * (dx + dy) / 2) + let recovered = scene.convert(actual, to: translation) + let error = max(abs(actual.x - expected.x), abs(actual.y - expected.y), + abs(recovered.x - point.x), abs(recovered.y - point.y)) + maximumError = max(maximumError, error) + // SpriteKit stores transforms at Float precision. Budget eight ULPs for + // composed forward/inverse arithmetic, not a visual contact tolerance. + let tolerance = CGFloat(Float(max(abs(point.x), abs(point.y), 1)).ulp) * 8 + precondition(error <= tolerance, "Projection/inverse mismatch: \(error), bound \(tolerance)") + samples += 1 + } +} +let screenDownWorld = scene.convert(CGPoint(x: center.x, y: center.y - 1), to: translation) +precondition(screenDownWorld.x < center.x && screenDownWorld.y < center.y) +print("PASS: \(samples) host SpriteKit forward/inverse samples; maximum error \(maximumError) points; screen-down maps to world SW") diff --git a/scripts/check_projected_camera.swift b/scripts/check_projected_camera.swift new file mode 100644 index 00000000..c81d7134 --- /dev/null +++ b/scripts/check_projected_camera.swift @@ -0,0 +1,106 @@ +import Foundation +import SpriteKit + +@main +struct ProjectedCameraCheck { + static func main() throws { + let bounds = CGRect(x: 0, y: 0, width: 2304, height: 1536) + let viewport = CGSize(width: 704, height: 326) + var checked = 0 + for zoom: CGFloat in [0.75, 1, 1.25, 1.4] { + for x: CGFloat in [-100, 0, 18, 1152, 2286, 2304, 2500] { + for y: CGFloat in [-100, 0, 18, 768, 1518, 1536, 1700] { + let center = BenchmarkProjectionGeometry.containedCenter( + desired: CGPoint(x: x, y: y), bounds: bounds, viewport: viewport, magnification: zoom)! + // Independent SpriteKit inverse: scale, rotation, world translation. + let scene = SKScene(), scale = SKNode(), rotation = SKNode(), translation = SKNode() + scale.xScale = zoom; scale.yScale = zoom / 2 + rotation.zRotation = .pi / 4; translation.position = CGPoint(x: -center.x, y: -center.y) + scene.addChild(scale); scale.addChild(rotation); rotation.addChild(translation) + for sx: CGFloat in [-352, 352] { + for sy: CGFloat in [-163, 163] { + let world = scene.convert(CGPoint(x: sx, y: sy), to: translation) + let epsilon: CGFloat = 0.002 // Float-backed SpriteKit transform precision only. + precondition(world.x >= bounds.minX - epsilon && world.x <= bounds.maxX + epsilon) + precondition(world.y >= bounds.minY - epsilon && world.y <= bounds.maxY + epsilon) + let independent = BenchmarkProjectionGeometry.inverse(CGPoint(x: sx / zoom, y: sy / zoom)) + precondition(abs(world.x - center.x - independent.x) < epsilon) + precondition(abs(world.y - center.y - independent.y) < epsilon) + checked += 1 + } + } + } + } + } + precondition(BenchmarkProjectionGeometry.containedCenter(desired: .zero, + bounds: CGRect(x: 0, y: 0, width: 100, height: 100), viewport: viewport, magnification: 1) == nil) + precondition(BenchmarkProjectionGeometry.containedCenter(desired: .zero, + bounds: bounds, viewport: viewport, magnification: 0) == nil) + let screen = CGRect(x: -352, y: -163, width: 704, height: 326) + // Synthetic boundary fixtures exercise geometry; iOS captures supply real HUD bounds. + let exclusions = [CGRect(x: -352, y: 100, width: 704, height: 63), + CGRect(x: -352, y: -163, width: 160, height: 140), + CGRect(x: 240, y: -163, width: 112, height: 110)] + var hudChecks = 0 + for zoom: CGFloat in [0.75, 1, 1.25, 1.4] { + let region = BenchmarkProjectionGeometry.unobstructedRegion(viewport: screen, + exclusions: exclusions, minimumSize: CGSize(width: 64*zoom, height: 64*zoom))! + precondition(screen.contains(region)) + for exclusion in exclusions { + let overlap = region.intersection(exclusion) + precondition(overlap.isNull || overlap.width == 0 || overlap.height == 0) + } + for x: CGFloat in [18, 1152, 2286] { for y: CGFloat in [18,768,1518] { + let player = CGPoint(x: x, y: y) + let focus = BenchmarkProjectionGeometry.playerVisibleCenter(desired: player, bounds: bounds, + viewport: viewport, magnification: zoom, player: player, + canvas: CGRect(x: -32, y: -8, width: 64, height: 64), safeRegion: region)! + let projected = BenchmarkProjectionGeometry.project(CGPoint(x: x-focus.x, y: y-focus.y)) + let canvas = CGRect(x: (projected.x-32)*zoom, y: (projected.y-8)*zoom, + width: 64*zoom, height: 64*zoom) + precondition(region.insetBy(dx: -0.000001, dy: -0.000001).contains(canvas)) + hudChecks += 1 + } } + } + precondition(BenchmarkProjectionGeometry.unobstructedRegion(viewport: screen, + exclusions: [screen], minimumSize: CGSize(width: 64, height: 64)) == nil) + precondition(BenchmarkProjectionGeometry.unobstructedRegion(viewport: screen, + exclusions: [], minimumSize: CGSize(width: 705, height: 64)) == nil) + precondition(BenchmarkProjectionGeometry.unobstructedRegion(viewport: screen, + exclusions: [], minimumSize: CGSize(width: 64, height: 64)) == screen) + var conflict: [[String: Any]] = [] + for zoom: CGFloat in [1, 1.25] { + for player in [CGPoint(x: 18, y: 18), CGPoint(x: 2286, y: 1518), CGPoint(x: 1327, y: 1495)] { + let focus = BenchmarkProjectionGeometry.containedCenter(desired: player, bounds: bounds, + viewport: viewport, magnification: zoom)! + let p = BenchmarkProjectionGeometry.project(CGPoint(x: player.x-focus.x, y: player.y-focus.y)) + let root = CGPoint(x: p.x * zoom, y: p.y * zoom) + let canvas = CGRect(x: root.x-32*zoom, y: root.y-8*zoom, width: 64*zoom, height: 64*zoom) + let frame = CGRect(x: -352, y: -163, width: 704, height: 326) + let playerCanvas = CGRect(x: -32, y: -8, width: 64, height: 64) + let safe = BenchmarkProjectionGeometry.playerVisibleCenter(desired: player, bounds: bounds, + viewport: viewport, magnification: zoom, player: player, canvas: playerCanvas)! + let safeOffset = BenchmarkProjectionGeometry.project(CGPoint(x: player.x-safe.x, y: player.y-safe.y)) + let safeRect = CGRect(x: (safeOffset.x+playerCanvas.minX)*zoom, + y: (safeOffset.y+playerCanvas.minY)*zoom, width: 64*zoom, height: 64*zoom) + precondition(frame.insetBy(dx: -0.000001, dy: -0.000001).contains(safeRect)) + var overshootX: CGFloat = 0, overshootY: CGFloat = 0 + for sx: CGFloat in [-352,352] { for sy: CGFloat in [-163,163] { + let d = BenchmarkProjectionGeometry.inverse(CGPoint(x: sx/zoom,y: sy/zoom)) + let world = CGPoint(x: safe.x+d.x,y: safe.y+d.y) + overshootX = max(overshootX,bounds.minX-world.x,world.x-bounds.maxX) + overshootY = max(overshootY,bounds.minY-world.y,world.y-bounds.maxY) + } } + conflict.append(["zoom": zoom, "player": [player.x,player.y], "focus": [focus.x,focus.y], + "rootVisible": frame.contains(root), "canvasVisible": frame.contains(canvas), + "playerVisibleFocus": [safe.x,safe.y], "playerVisibleCanvas": true, + "requiredBackdropOvershootXY": [overshootX,overshootY]]) + } + } + precondition(conflict.contains { ($0["rootVisible"] as? Bool) == false }) + let data = try JSONSerialization.data(withJSONObject: ["spriteKitCornerChecks": checked, + "invalidInputChecks": 2, "hudSafeBoundaryChecks": hudChecks, "hudRegionEdgeCases": 3, "visibilityConflicts": conflict, + "scope": "Host SpriteKit geometry, not iOS displayed framing or production camera admission"], options: [.prettyPrinted,.sortedKeys]) + print(String(decoding: data, as: UTF8.self)) + } +} diff --git a/scripts/convert_clip_timing.py b/scripts/convert_clip_timing.py new file mode 100644 index 00000000..59e9036d --- /dev/null +++ b/scripts/convert_clip_timing.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +"""BP-003: export a mechanical v1→v2 candidate to stdout; never admit art. + +Requires jsonschema and the target schema from the pinned SS-specs checkout. +Usage: python3 scripts/convert_clip_timing.py INPUT --schema SCHEMA > CANDIDATE +Runtime semantic validation and coordinated admission remain mandatory. +""" +import argparse +from copy import deepcopy +import json +from pathlib import Path +import sys + +from jsonschema import Draft202012Validator, ValidationError + +MAX_INT = (1 << 63) - 1 + + +def unique_object(pairs): + result = {} + for key, value in pairs: + if key in result: + raise ValueError(f'duplicate JSON key: {key}') + result[key] = value + return result + + +def read_json(path): + return json.loads(Path(path).read_text(), object_pairs_hook=unique_object) + + +def convert(document, schema): + if not isinstance(document, dict) or document.get('schemaVersion') != 'clip-metadata-001': + raise ValueError('expected clip-metadata-001 source') + if not isinstance(document.get('clips'), list) or not document['clips']: + raise ValueError('expected nonempty clips array') + result = deepcopy(document) + result['schemaVersion'] = 'clip-metadata-002' + for clip in result['clips']: + if not isinstance(clip, dict) or 'timing' in clip: + raise ValueError('expected v1 clip without timing') + fps = clip.pop('framesPerSecond', None) + if type(fps) is not int or not 1 <= fps <= MAX_INT: + raise ValueError('framesPerSecond must be a positive signed-64-bit integer') + frames = clip.get('frameIds') + if not isinstance(frames, list) or not frames: + raise ValueError('expected nonempty frameIds array') + clip['timing'] = {'unitsPerSecond': fps, 'frameUnits': [1] * len(frames)} + Draft202012Validator.check_schema(schema) + Draft202012Validator(schema).validate(result) + for clip in result['clips']: + for direction in clip['directions'] or [None]: + count = sum(direction is None or f'_{direction}_' in frame + for frame in clip['frameIds']) + if not count or count * 60 > MAX_INT: + raise ValueError('empty facing or tick numerator overflow') + return result + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('input', type=Path) + parser.add_argument('--schema', required=True, type=Path) + args = parser.parse_args() + try: + result = convert(read_json(args.input), read_json(args.schema)) + except (OSError, ValueError, ValidationError) as error: + parser.exit(1, f'conversion rejected: {error}\n') + sys.stdout.write(json.dumps(result, indent=2, ensure_ascii=False) + '\n') + + +if __name__ == '__main__': + main() diff --git a/scripts/test_clip_timing_export.py b/scripts/test_clip_timing_export.py new file mode 100644 index 00000000..99c90374 --- /dev/null +++ b/scripts/test_clip_timing_export.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 +"""BP-003 export regression checks. Pass --schema from the pinned specs.""" +import argparse +from copy import deepcopy +from fractions import Fraction +import json +from pathlib import Path +import subprocess +import sys +import tempfile +import unittest + +from jsonschema import Draft202012Validator +from convert_clip_timing import convert, read_json + +ROOT = Path(__file__).resolve().parents[1] +SOURCE = ROOT / 'Sources/SurveillanceCore/Resources/contracts/clip-metadata-001.json' + + +class ExportTests(unittest.TestCase): + def setUp(self): + self.source = read_json(SOURCE) + self.schema = read_json(SCHEMA) + + def test_complete_round_trip(self): + original = deepcopy(self.source) + result = convert(self.source, self.schema) + self.assertEqual(self.source, original) + Draft202012Validator(self.schema).validate(result) + restored = deepcopy(result) + restored['schemaVersion'] = 'clip-metadata-001' + facings = 0 + for before, after, back in zip(original['clips'], result['clips'], restored['clips']): + self.assertEqual(after['timing']['frameUnits'], [1] * len(before['frameIds'])) + back['framesPerSecond'] = back.pop('timing')['unitsPerSecond'] + for direction in before['directions'] or [None]: + indices = [i for i, frame in enumerate(before['frameIds']) + if direction is None or f'_{direction}_' in frame] + old = Fraction(len(indices), before['framesPerSecond']) + new = Fraction(sum(after['timing']['frameUnits'][i] for i in indices), + after['timing']['unitsPerSecond']) + self.assertEqual(old, new) + self.assertEqual((old * 60).__ceil__(), (new * 60).__ceil__()) + facings += 1 + self.assertEqual(restored, original) + print(f'Parity: {len(original["clips"])} clips; {facings} facing selections') + + def test_cli_repeatable_and_fail_closed(self): + command = [sys.executable, str(ROOT / 'scripts/convert_clip_timing.py')] + args = ['--schema', str(SCHEMA)] + first = subprocess.run(command + [str(SOURCE)] + args, capture_output=True, check=True) + second = subprocess.run(command + [str(SOURCE)] + args, capture_output=True, check=True) + self.assertEqual(first.stdout, second.stdout) + self.assertEqual(json.loads(first.stdout), convert(self.source, self.schema)) + bad_documents = [] + for fps in [None, True, False, 1.5, 0, -1, 2**63, '12']: + bad = deepcopy(self.source) + bad['clips'][0]['framesPerSecond'] = fps + bad_documents.append(json.dumps(bad)) + for key, value in [('timing', {}), ('frameIds', []), ('directions', ['invalid']), + ('unknown', 1), ('directions', ['n', 'n'])]: + bad = deepcopy(self.source) + bad['clips'][0][key] = value + bad_documents.append(json.dumps(bad)) + bad = deepcopy(self.source) + bad['clips'][0]['directions'] = ['n'] + bad['clips'][0]['frameIds'] = ['only_s_01'] + bad_documents.append(json.dumps(bad)) + bad_documents += ['{"schemaVersion":"clip-metadata-001","schemaVersion":"clip-metadata-002"}', + json.dumps(convert(self.source, self.schema)), '{', 'null'] + with tempfile.TemporaryDirectory() as folder: + path = Path(folder) / 'invalid.json' + for payload in bad_documents: + with self.subTest(payload=payload[:80]): + path.write_text(payload) + rejected = subprocess.run(command + [str(path)] + args, capture_output=True) + self.assertNotEqual(rejected.returncode, 0) + self.assertEqual(rejected.stdout, b'') + print(f'CLI: deterministic bytes; {len(bad_documents)} rejected inputs emit no candidate') + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--schema', required=True, type=Path) + SCHEMA = parser.parse_args().schema.resolve() + unittest.main(argv=[sys.argv[0]])